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;