From dd0e0a10cd9d96f3bf985c0c82a043a23be108af Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 30 Jun 2020 21:15:35 +0400 Subject: [PATCH] Add Activate/Logout context menu in accounts list. --- Telegram/Resources/langs/lang.strings | 1 + .../SourceFiles/window/window_main_menu.cpp | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 836f4d786..acc9ba08d 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_menu_back" = "Back"; "lng_menu_night_mode" = "Night Mode"; "lng_menu_add_account" = "Add Account"; +"lng_menu_activate" = "Activate"; "lng_disable_notifications_from_tray" = "Disable notifications"; "lng_enable_notifications_from_tray" = "Enable notifications"; diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 158c68863..a9f2e65a2 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_common.h" #include "base/qt_signal_producer.h" #include "boxes/about_box.h" +#include "boxes/confirm_box.h" #include "boxes/peer_list_controllers.h" #include "calls/calls_box_controller.h" #include "lang/lang_keys.h" @@ -52,6 +53,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_dialogs.h" #include "styles/style_settings.h" #include "styles/style_boxes.h" +#include "styles/style_layers.h" #include #include @@ -99,6 +101,7 @@ public: private: void paintEvent(QPaintEvent *e) override; + void contextMenuEvent(QContextMenuEvent *e) override; void paintUserpic(Painter &p); const not_null _session; @@ -106,6 +109,7 @@ private: std::shared_ptr _userpicView; InMemoryKey _userpicKey = {}; QImage _userpicCache; + base::unique_qptr _menu; Dialogs::Layout::UnreadBadgeStyle _unreadSt; int _unreadBadge = 0; @@ -267,6 +271,32 @@ void MainMenu::AccountButton::paintEvent(QPaintEvent *e) { available); } +void MainMenu::AccountButton::contextMenuEvent(QContextMenuEvent *e) { + if (&_session->account() == &Core::App().activeAccount() || _menu) { + return; + } + _menu = base::make_unique_q(this); + _menu->addAction(tr::lng_menu_activate(tr::now), crl::guard(this, [=] { + Core::App().domain().activate(&_session->account()); + })); + _menu->addAction(tr::lng_settings_logout(tr::now), crl::guard(this, [=] { + const auto session = _session; + const auto box = std::make_shared>(); + const auto callback = [=] { + if (*box) { + (*box)->closeBox(); + } + Core::App().logout(&session->account()); + }; + *box = Ui::show(Box( + tr::lng_sure_logout(tr::now), + tr::lng_settings_logout(tr::now), + st::attentionBoxButton, + crl::guard(session, callback))); + })); + _menu->popup(QCursor::pos()); +} + MainMenu::ToggleAccountsButton::ToggleAccountsButton(QWidget *parent) : AbstractButton(parent) { rpl::single(