diff --git a/Telegram/Resources/icons/settings/archive.png b/Telegram/Resources/icons/settings/archive.png new file mode 100644 index 000000000..3847af0a8 Binary files /dev/null and b/Telegram/Resources/icons/settings/archive.png differ diff --git a/Telegram/Resources/icons/settings/archive@2x.png b/Telegram/Resources/icons/settings/archive@2x.png new file mode 100644 index 000000000..9baee48d3 Binary files /dev/null and b/Telegram/Resources/icons/settings/archive@2x.png differ diff --git a/Telegram/Resources/icons/settings/archive@3x.png b/Telegram/Resources/icons/settings/archive@3x.png new file mode 100644 index 000000000..4e42c4aa0 Binary files /dev/null and b/Telegram/Resources/icons/settings/archive@3x.png differ diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index bd6cc0b4f..594a50e85 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -73,6 +73,7 @@ settingsIconKey: icon {{ "settings/key", settingsIconFg }}; settingsIconReload: icon {{ "settings/reload", settingsIconFg }}; settingsIconNight: icon {{ "settings/night", settingsIconFg }}; settingsIconSettings: icon {{ "settings/settings", settingsIconFg }}; +settingsIconArchive: icon {{ "settings/archive", settingsIconFg }}; settingsSetPhotoSkip: 7px; diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 321fb254a..27c108fcc 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -580,7 +580,6 @@ MainMenu::MainMenu( Ui::UserpicButton::Role::Custom, st::mainMenuUserpic) , _toggleAccounts(this) -, _archiveButton(this, st::mainMenuCloudButton) , _scroll(this, st::defaultSolidScroll) , _inner(_scroll->setOwnedWidget( object_ptr(_scroll.data()))) @@ -602,10 +601,10 @@ MainMenu::MainMenu( st::mainMenuVersionLabel)) { setAttribute(Qt::WA_OpaquePaintEvent); - setupArchiveButton(); setupUserpicButton(); setupAccountsToggle(); setupAccounts(); + setupArchive(); setupMenu(); _nightThemeSwitch.setCallback([this] { @@ -684,7 +683,9 @@ MainMenu::MainMenu( initResetScaleButton(); } -void MainMenu::setupArchiveButton() { +void MainMenu::setupArchive() { + using namespace Settings; + const auto controller = _controller; const auto folder = [=] { return controller->session().data().folderLoaded(Data::Folder::kId); @@ -701,9 +702,24 @@ void MainMenu::setupArchiveButton() { && !f->chatsList()->empty() && controller->session().settings().archiveInMainMenu(); }; - _archiveButton->setVisible(checkArchive()); - _archiveButton->setAcceptBoth(true); - _archiveButton->clicks( + + const auto wrap = _menu->add( + object_ptr>( + _menu, + object_ptr(_menu))); + const auto inner = wrap->entity(); + wrap->toggle(checkArchive(), anim::type::instant); + + const auto button = AddButton( + inner, + tr::lng_archived_name(), + st::mainMenuButton, + { &st::settingsIconArchive, kIconGray }); + inner->add( + object_ptr(inner), + { 0, st::mainMenuSkip, 0, st::mainMenuSkip }); + button->setAcceptBoth(true); + button->clicks( ) | rpl::start_with_next([=](Qt::MouseButton which) { if (which == Qt::LeftButton) { showArchive(); @@ -739,14 +755,14 @@ void MainMenu::setupArchiveButton() { addAction); _contextMenu->popup(QCursor::pos()); - }, _archiveButton->lifetime()); + }, button->lifetime()); controller->session().data().chatsListChanges( ) | rpl::filter([](Data::Folder *folder) { return folder && (folder->id() == Data::Folder::kId); }) | rpl::start_with_next([=](Data::Folder *folder) { const auto isArchiveVisible = checkArchive(); - _archiveButton->setVisible(isArchiveVisible); + wrap->toggle(isArchiveVisible, anim::type::normal); if (!isArchiveVisible) { _contextMenu = nullptr; } @@ -1130,13 +1146,6 @@ void MainMenu::updateControlsGeometry() { st::mainMenuUserpicTop); if (_resetScaleButton) { _resetScaleButton->moveToRight(0, 0); - _archiveButton->moveToRight(_resetScaleButton->width(), 0); - } else { - const auto right = st::mainMenuTogglePosition.x() - - (_archiveButton->width() / 2); - const auto top = st::mainMenuUserpicTop - - (_archiveButton->height() - st::mainMenuCloudSize) / 2; - _archiveButton->moveToRight(right, top); } _toggleAccounts->setGeometry( 0, @@ -1201,21 +1210,6 @@ void MainMenu::paintEvent(QPaintEvent *e) { st::mainMenuCoverStatusTop, width(), _phoneText); - - // Draw Archive button. - if (!_archiveButton->isHidden()) { - const auto folder = _controller->session().data().folderLoaded( - Data::Folder::kId); - if (folder) { - folder->paintUserpic( - p, - _archiveButton->x() + (_archiveButton->width() - st::mainMenuCloudSize) / 2, - _archiveButton->y() + (_archiveButton->height() - st::mainMenuCloudSize) / 2, - st::mainMenuCloudSize, - isFill ? st::mainMenuCloudBg : st::msgServiceBg, - isFill ? st::mainMenuCloudFg : st::msgServiceFg); - } - } } auto other = QRect(0, st::mainMenuCoverHeight, width(), height() - st::mainMenuCoverHeight).intersected(clip); if (!other.isEmpty()) { diff --git a/Telegram/SourceFiles/window/window_main_menu.h b/Telegram/SourceFiles/window/window_main_menu.h index 8bef9a89b..f861613d2 100644 --- a/Telegram/SourceFiles/window/window_main_menu.h +++ b/Telegram/SourceFiles/window/window_main_menu.h @@ -55,12 +55,12 @@ private: class ToggleAccountsButton; class ResetScaleButton; - void setupArchiveButton(); void setupUserpicButton(); void setupAccounts(); void setupAccountsToggle(); [[nodiscard]] not_null*> setupAddAccount( not_null container); + void setupArchive(); void setupMenu(); void rebuildAccounts(); void updateControlsGeometry(); @@ -73,7 +73,6 @@ private: const not_null _controller; object_ptr _userpicButton; object_ptr _toggleAccounts; - object_ptr _archiveButton; object_ptr _resetScaleButton = { nullptr }; object_ptr _scroll; not_null _inner;