diff --git a/Telegram/Resources/icons/settings/download.png b/Telegram/Resources/icons/settings/download.png new file mode 100644 index 000000000..e5534b7cc Binary files /dev/null and b/Telegram/Resources/icons/settings/download.png differ diff --git a/Telegram/Resources/icons/settings/download@2x.png b/Telegram/Resources/icons/settings/download@2x.png new file mode 100644 index 000000000..8a5a4464a Binary files /dev/null and b/Telegram/Resources/icons/settings/download@2x.png differ diff --git a/Telegram/Resources/icons/settings/download@3x.png b/Telegram/Resources/icons/settings/download@3x.png new file mode 100644 index 000000000..f302e56b7 Binary files /dev/null and b/Telegram/Resources/icons/settings/download@3x.png differ diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 30b1285f6..2eb832f83 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -68,7 +68,7 @@ settingsIconEmoji: icon {{ "settings/emoji", settingsIconFg }}; settingsIconThemes: icon {{ "settings/palette", settingsIconFg }}; settingsIconGroup: icon {{ "settings/group", settingsIconFg }}; settingsIconChannel: icon {{ "settings/channel", settingsIconFg }}; -settingsIconContacts: icon {{ "settings/user", settingsIconFg }}; +settingsIconUser: icon {{ "settings/user", settingsIconFg }}; settingsIconSavedMessages: icon {{ "settings/saved_messages", settingsIconFg }}; settingsIconKey: icon {{ "settings/key", settingsIconFg }}; settingsIconReload: icon {{ "settings/reload", settingsIconFg }}; @@ -88,6 +88,7 @@ settingsIconSound: icon {{ "settings/sound", settingsIconFg }}; settingsIconDock: icon {{ "settings/dock", settingsIconFg }}; settingsIconPosition: icon {{ "settings/position", settingsIconFg }}; settingsIconPin: icon {{ "settings/pin", settingsIconFg }}; +settingsIconDownload: icon {{ "settings/download", settingsIconFg }}; settingsSetPhotoSkip: 7px; diff --git a/Telegram/SourceFiles/settings/settings_advanced.cpp b/Telegram/SourceFiles/settings/settings_advanced.cpp index 1a5b04fa0..55046ef2e 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/settings_advanced.cpp @@ -74,7 +74,8 @@ void SetupConnectionType( // Handle language switch. tr::lng_connection_auto_connecting() | rpl::to_empty ) | rpl::map(connectionType), - st::settingsButtonNoIcon); + st::settingsButton, + { &st::settingsIconArrows, kIconGreen }); button->addClickHandler([=] { controller->show(ProxiesBoxController::CreateOwningBox(account)); }); @@ -747,14 +748,6 @@ void Advanced::setupContent(not_null controller) { if (!cAutoUpdate()) { addUpdate(); } - addDivider(); - AddSkip(content); - AddSubsectionTitle(content, tr::lng_settings_network_proxy()); - SetupConnectionType( - &controller->window(), - &controller->session().account(), - content); - AddSkip(content); SetupDataStorage(controller, content); SetupAutoDownload(controller, content); SetupSystemIntegration(controller, content, [=](Type type) { @@ -779,6 +772,11 @@ void Advanced::setupContent(not_null controller) { addUpdate(); } + AddSkip(content); + AddDivider(content); + AddSkip(content); + SetupExport(controller, content); + Ui::ResizeFitChild(this, content); } diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index 514016ebe..80399e33c 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_chat.h" #include "settings/settings_common.h" +#include "settings/settings_advanced.h" #include "boxes/connection_box.h" #include "boxes/auto_download_box.h" #include "boxes/stickers_box.h" @@ -838,7 +839,8 @@ void SetupLocalStorage( AddButton( container, tr::lng_settings_manage_local_storage(), - st::settingsButtonNoIcon + st::settingsButton, + { &st::settingsIconGeneral, kIconLightOrange } )->addClickHandler([=] { LocalStorageBox::Show(&controller->session()); }); @@ -854,21 +856,23 @@ void SetupDataStorage( AddSubsectionTitle(container, tr::lng_settings_data_storage()); - const auto ask = AddButton( - container, - tr::lng_download_path_ask(), - st::settingsButtonNoIcon - )->toggleOn(rpl::single(Core::App().settings().askDownloadPath())); + SetupConnectionType( + &controller->window(), + &controller->session().account(), + container); #ifndef OS_WIN_STORE - const auto showpath = Ui::CreateChild>(ask); + const auto showpath = container->lifetime( + ).make_state>(); + const auto path = container->add( object_ptr>( container, CreateButton( container, tr::lng_download_path(), - st::settingsButtonNoIcon))); + st::settingsButton, + { &st::settingsIconFolders, kIconLightBlue }))); auto pathtext = Core::App().settings().downloadPathValue( ) | rpl::map([](const QString &text) { if (text.isEmpty()) { @@ -881,14 +885,29 @@ void SetupDataStorage( CreateRightLabel( path->entity(), std::move(pathtext), - st::settingsButtonNoIcon, + st::settingsButton, tr::lng_download_path()); path->entity()->addClickHandler([=] { controller->show(Box(controller)); }); - path->toggleOn(ask->toggledValue() | rpl::map(!_1)); #endif // OS_WIN_STORE + SetupLocalStorage(controller, container); + + AddButton( + container, + rpl::single(u"Downloads"_q), + st::settingsButton, + { &st::settingsIconDownload, kIconPurple } + )->setClickedCallback([=] { + }); + + const auto ask = AddButton( + container, + tr::lng_download_path_ask(), + st::settingsButtonNoIcon + )->toggleOn(rpl::single(Core::App().settings().askDownloadPath())); + ask->toggledValue( ) | rpl::filter([](bool checked) { return (checked != Core::App().settings().askDownloadPath()); @@ -902,8 +921,9 @@ void SetupDataStorage( }, ask->lifetime()); - SetupLocalStorage(controller, container); - SetupExport(controller, container); +#ifndef OS_WIN_STORE + path->toggleOn(ask->toggledValue() | rpl::map(!_1)); +#endif // OS_WIN_STORE AddSkip(container, st::settingsCheckboxesSkip); } @@ -917,19 +937,32 @@ void SetupAutoDownload( AddSubsectionTitle(container, tr::lng_media_auto_settings()); using Source = Data::AutoDownload::Source; - const auto add = [&](rpl::producer label, Source source) { + const auto add = [&]( + rpl::producer label, + Source source, + IconDescriptor &&descriptor) { AddButton( container, std::move(label), - st::settingsButtonNoIcon + st::settingsButton, + std::move(descriptor) )->addClickHandler([=] { controller->show( Box(&controller->session(), source)); }); }; - add(tr::lng_media_auto_in_private(), Source::User); - add(tr::lng_media_auto_in_groups(), Source::Group); - add(tr::lng_media_auto_in_channels(), Source::Channel); + add( + tr::lng_media_auto_in_private(), + Source::User, + { &st::settingsIconUser, kIconLightBlue }); + add( + tr::lng_media_auto_in_groups(), + Source::Group, + { &st::settingsIconGroup, kIconGreen }); + add( + tr::lng_media_auto_in_channels(), + Source::Channel, + { &st::settingsIconChannel, kIconLightOrange }); AddSkip(container, st::settingsCheckboxesSkip); } diff --git a/Telegram/SourceFiles/settings/settings_chat.h b/Telegram/SourceFiles/settings/settings_chat.h index a972ca720..ff2153b91 100644 --- a/Telegram/SourceFiles/settings/settings_chat.h +++ b/Telegram/SourceFiles/settings/settings_chat.h @@ -27,6 +27,9 @@ void SetupDefaultThemes( void SetupSupport( not_null controller, not_null container); +void SetupExport( + not_null controller, + not_null container); class Chat : public Section { public: diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index e409b2c24..0dc25e418 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -972,7 +972,7 @@ void MainMenu::setupMenu() { }); addAction( tr::lng_menu_contacts(), - { &st::settingsIconContacts, kIconRed } + { &st::settingsIconUser, kIconRed } )->setClickedCallback([=] { controller->show(PrepareContactsBox(controller)); }); @@ -993,7 +993,7 @@ void MainMenu::setupMenu() { } else { addAction( tr::lng_profile_add_contact(), - { &st::settingsIconContacts, kIconRed } + { &st::settingsIconUser, kIconRed } )->setClickedCallback([=] { controller->showAddContact(); });