Moved showLogoutConfirmation from MainWindow to Window::Controller.

This commit is contained in:
23rd 2021-02-03 05:49:26 +03:00 committed by John Preston
parent 1f80c297ec
commit b4af805521
8 changed files with 51 additions and 45 deletions

View File

@ -670,39 +670,6 @@ void MainWindow::updateTrayMenu(bool force) {
psTrayMenuUpdated();
}
void MainWindow::showLogoutConfirmation() {
if (isHidden()) {
showFromTray();
}
const auto account = Core::App().passcodeLocked()
? nullptr
: sessionController()
? &sessionController()->session().account()
: nullptr;
const auto weak = base::make_weak(account);
const auto callback = [=] {
if (account && !weak) {
return;
}
if (account
&& account->sessionExists()
&& Core::App().exportManager().inProgress(&account->session())) {
Ui::hideLayer();
Core::App().exportManager().stopWithConfirmation([=] {
Core::App().logout(account);
});
} else {
Core::App().logout(account);
}
};
Ui::show(Box<ConfirmBox>(
tr::lng_sure_logout(tr::now),
tr::lng_settings_logout(tr::now),
st::attentionBoxButton,
callback));
}
bool MainWindow::takeThirdSectionFromLayer() {
return _layer ? _layer->takeToThirdSection() : false;
}

View File

@ -103,8 +103,6 @@ public:
not_null<PhotoData*> photo);
void hideMediaPreview();
void showLogoutConfirmation();
void updateControlsGeometry() override;
protected:

View File

@ -942,10 +942,13 @@ void MainWindow::createGlobalMenu() {
auto file = psMainMenu->addMenu(tr::lng_mac_menu_file(tr::now));
psLogout = file->addAction(tr::lng_mac_menu_logout(tr::now));
connect(psLogout, &QAction::triggered, psLogout, [] {
if (App::wnd()) App::wnd()->showLogoutConfirmation();
});
psLogout = file->addAction(
tr::lng_mac_menu_logout(tr::now),
this,
[=] {
ensureWindowShown();
controller().showLogoutConfirmation();
});
auto quit = file->addAction(
tr::lng_mac_menu_quit_telegram(tr::now, lt_telegram, qsl("Telegram")),

View File

@ -713,10 +713,16 @@ void MainWindow::createGlobalMenu() {
}
QMenu *file = psMainMenu.addMenu(tr::lng_mac_menu_file(tr::now));
psLogout = file->addAction(tr::lng_mac_menu_logout(tr::now));
connect(psLogout, &QAction::triggered, psLogout, [] {
if (App::wnd()) App::wnd()->showLogoutConfirmation();
});
{
auto callback = [=] {
ensureWindowShown();
controller().showLogoutConfirmation();
};
psLogout = file->addAction(
tr::lng_mac_menu_logout(tr::now),
this,
std::move(callback));
}
QMenu *edit = psMainMenu.addMenu(tr::lng_mac_menu_edit(tr::now));
psUndo = edit->addAction(tr::lng_mac_menu_undo(tr::now), this, SLOT(psMacUndo()), QKeySequence::Undo);

View File

@ -210,7 +210,7 @@ void FillMenu(
}
addAction(
tr::lng_settings_logout(tr::now),
[=] { window->widget()->showLogoutConfirmation(); });
[=] { window->showLogoutConfirmation(); });
}
}

View File

@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_updates.h"
#include "core/application.h"
#include "core/click_handler_types.h"
#include "export/export_manager.h"
#include "platform/platform_window_title.h"
#include "main/main_account.h"
#include "main/main_domain.h"
@ -329,4 +330,33 @@ QPoint Controller::getPointForCallPanelCenter() const {
: _widget.windowHandle()->screen()->geometry().center();
}
void Controller::showLogoutConfirmation() {
const auto account = Core::App().passcodeLocked()
? nullptr
: sessionController()
? &sessionController()->session().account()
: nullptr;
const auto weak = base::make_weak(account);
const auto callback = [=] {
if (account && !weak) {
return;
}
if (account
&& account->sessionExists()
&& Core::App().exportManager().inProgress(&account->session())) {
Ui::hideLayer();
Core::App().exportManager().stopWithConfirmation([=] {
Core::App().logout(account);
});
} else {
Core::App().logout(account);
}
};
show(Box<ConfirmBox>(
tr::lng_sure_logout(tr::now),
tr::lng_settings_logout(tr::now),
st::attentionBoxButton,
callback));
}
} // namespace Window

View File

@ -46,6 +46,8 @@ public:
void setupIntro();
void setupMain();
void showLogoutConfirmation();
void showSettings();
[[nodiscard]] int verticalShadowTop() const;

View File

@ -120,7 +120,7 @@ PasscodeLockWidget::PasscodeLockWidget(
_submit->setClickedCallback([=] { submit(); });
_logout->setClickedCallback([=] {
window->widget()->showLogoutConfirmation();
window->showLogoutConfirmation();
});
}