From 2e435f07a3e82b36d64325087a0a4b8f515a303d Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Wed, 9 Feb 2022 17:52:20 +0300 Subject: [PATCH] Make "Archived chats" a normal menu item. --- Telegram/Resources/icons/settings/archive.png | Bin 0 -> 314 bytes .../Resources/icons/settings/archive@2x.png | Bin 0 -> 446 bytes .../Resources/icons/settings/archive@3x.png | Bin 0 -> 644 bytes Telegram/SourceFiles/settings/settings.style | 1 + .../SourceFiles/window/window_main_menu.cpp | 54 ++++++++---------- .../SourceFiles/window/window_main_menu.h | 3 +- 6 files changed, 26 insertions(+), 32 deletions(-) create mode 100644 Telegram/Resources/icons/settings/archive.png create mode 100644 Telegram/Resources/icons/settings/archive@2x.png create mode 100644 Telegram/Resources/icons/settings/archive@3x.png diff --git a/Telegram/Resources/icons/settings/archive.png b/Telegram/Resources/icons/settings/archive.png new file mode 100644 index 0000000000000000000000000000000000000000..3847af0a8be91f160f9ff9b78cfd5219933a3b85 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUE%9`546zV= zJHeWdS&_$O`V|?r&g27k1x>d*OzAl5(Wz7>BqJWVG%~#BuSET}w_X2Z4n#$J-4tcy z`B3Ebe(#|toecAO^ER*8`t9EHGp~4gKCJq6xhC6pv#dc@w#VUCBkjyH58pp@`=Z{$ z@JrOtjVVo2@?etNQ}e~k*QoV7gl3vLrJi&<b@iU1*(uA@bLFqTpHZy0)a01M`Tj;B ghJ;yl;>G7!-(6}tAUL=CxChAHp00i_>zopr0I2F^YybcN literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/archive@2x.png b/Telegram/Resources/icons/settings/archive@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9baee48d37ef40b5dcbd2590e7d89d360574647e GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1SD@H<Xr$#jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(;Zuz(rC1}VI4p2GuFrs3)07!twx zcIsK)76pOU!dz$WO>(<8GD~0RW|h#F`u!p6%a-4h_U>RzJLGU?7LWSe`Ntm%UyzXX za^TcpRQ(Xc6gkb*ck}z-))yN@SQNEWf<i-;)a{KXsPgRXh>4u$5;kX1s;2WJ&15P0 z)C`&9xwn(1Wq)@P*i;syyplub^rzyK#qrN7m+dty7vZ_^w@Ihg(C*a~&M^7=N-9^r z+v>#}DCb)eAdr7<;e*>pTmvmu=_`u-sL~JZb5~SszhtX;Uu*X|Wd+4nrg;6gG5xk@ zkI&eD+d0d_Uedkcv~l$d8-G7Vo%38qZP!Y9XHQt2#wzKYd%GyO<!LhOXB+vpgWrWY zdY!qN616w1Rt&uU)x`IBVT;v|Yl{Wn3V1#^_HDVK>H?N24MIC+9$+_EDb!X_aAG|u O>^xolT-G@yGywqV7?)H4 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/settings/archive@3x.png b/Telegram/Resources/icons/settings/archive@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4e42c4aa0c0942e45becd0ccf9bf8c766ccc6320 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1SD_us|Wxo#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1|Sip>6gA`6MbbAj}_RiDAF(iZa z?M%bGLk=P?h9Ywq^Bi*f4oJoX{E&Jk6B5(vec`fFV9;&0n<*@s1)Klb-@2)BaR=9} zn=}94kC$HKqqfV%fdvIUkQcm>W48SA%a0W{!f_qW8jB(o!dHi0HsQ3Ea#56Gy-_{; z)>7BNGtY~6+pQD2sBz%k%Z!|zF}G?Zy}}v$j!A6&WOG%bU-$S;!;QcHo?ChF)hVrn zy>apDuOBqFc*ySZyfQCUVJ^p?K&JM?3t#VQDZf@O;w1RCY1+;!95ei6`GclcM%?-S zH^+=S+b+Dem+`^#XGiMOXD+^V|KR+F4k>R2%Pf~aoe$g3=WRc%&6d}Bk=v*va{tsf zOLX{uty=Y_Enjt8#GJj``1Y#SZH%yxi4V%zXt6uzvAk=zjlazPjhl4#KK+-_ZJy+k zZ)uQw`_Vi@Igb+x$HclndlVi{Jzj2Urc}4X_NBT_^4rRf{flg8uL?;H*~3!o+ruz5 zYh`EPN1-#OhD;%=ma2U_)LpL~WXOJI@5Ozcv3k=T%t}v6zs-JAVH32Pe@5}*kJAcw z-_=<!QE19xx{sapLXS@F_S-vLqwfe<1%*vXJ)$yOx=E<?t6OvP#{2KjKQE5GF7_mj qHz%==;}>U-QP#|k1`bp-|A6>%+kLswX?$BiDZta!&t;ucLK6Tzcm7HM literal 0 HcmV?d00001 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<Ui::VerticalLayout>(_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<Ui::SlideWrap<Ui::VerticalLayout>>( + _menu, + object_ptr<Ui::VerticalLayout>(_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<Ui::PlainShadow>(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<Ui::SlideWrap<Ui::RippleButton>*> setupAddAccount( not_null<Ui::VerticalLayout*> container); + void setupArchive(); void setupMenu(); void rebuildAccounts(); void updateControlsGeometry(); @@ -73,7 +73,6 @@ private: const not_null<SessionController*> _controller; object_ptr<Ui::UserpicButton> _userpicButton; object_ptr<ToggleAccountsButton> _toggleAccounts; - object_ptr<Ui::IconButton> _archiveButton; object_ptr<ResetScaleButton> _resetScaleButton = { nullptr }; object_ptr<Ui::ScrollArea> _scroll; not_null<Ui::VerticalLayout*> _inner;