82 lines
2.6 KiB
C++
82 lines
2.6 KiB
C++
|
/*
|
||
|
This file is part of Telegram Desktop,
|
||
|
the official desktop application for the Telegram messaging service.
|
||
|
|
||
|
For license and copyright information please follow this link:
|
||
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||
|
*/
|
||
|
#include "settings/settings_common_session.h"
|
||
|
|
||
|
#include "api/api_cloud_password.h"
|
||
|
#include "apiwrap.h"
|
||
|
#include "core/application.h"
|
||
|
#include "core/core_cloud_password.h"
|
||
|
#include "lang/lang_keys.h"
|
||
|
#include "main/main_domain.h"
|
||
|
#include "main/main_session.h"
|
||
|
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
|
||
|
#include "settings/settings_advanced.h"
|
||
|
#include "settings/settings_calls.h"
|
||
|
#include "settings/settings_chat.h"
|
||
|
#include "settings/settings_experimental.h"
|
||
|
#include "settings/settings_folders.h"
|
||
|
#include "settings/settings_information.h"
|
||
|
#include "settings/settings_main.h"
|
||
|
#include "settings/settings_notifications.h"
|
||
|
#include "settings/settings_privacy_security.h"
|
||
|
#include "ui/widgets/menu/menu_add_action_callback.h"
|
||
|
#include "window/themes/window_theme_editor_box.h"
|
||
|
#include "window/window_controller.h"
|
||
|
#include "window/window_session_controller.h"
|
||
|
#include "styles/style_menu_icons.h"
|
||
|
|
||
|
#include <QAction>
|
||
|
|
||
|
namespace Settings {
|
||
|
|
||
|
void FillMenu(
|
||
|
not_null<Window::SessionController*> controller,
|
||
|
Type type,
|
||
|
Fn<void(Type)> showOther,
|
||
|
Ui::Menu::MenuCallback addAction) {
|
||
|
const auto window = &controller->window();
|
||
|
if (type == Chat::Id()) {
|
||
|
addAction(
|
||
|
tr::lng_settings_bg_theme_create(tr::now),
|
||
|
[=] { window->show(Box(Window::Theme::CreateBox, window)); },
|
||
|
&st::menuIconChangeColors);
|
||
|
} else if (type == CloudPasswordEmailConfirmId()) {
|
||
|
const auto api = &controller->session().api();
|
||
|
if (const auto state = api->cloudPassword().stateCurrent()) {
|
||
|
if (state->unconfirmedPattern.isEmpty()) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
addAction(
|
||
|
tr::lng_settings_password_abort(tr::now),
|
||
|
[=] { api->cloudPassword().clearUnconfirmedPassword(); },
|
||
|
&st::menuIconCancel);
|
||
|
} else {
|
||
|
const auto &list = Core::App().domain().accounts();
|
||
|
if (list.size() < Core::App().domain().maxAccounts()) {
|
||
|
addAction(tr::lng_menu_add_account(tr::now), [=] {
|
||
|
Core::App().domain().addActivated(MTP::Environment{});
|
||
|
}, &st::menuIconAddAccount);
|
||
|
}
|
||
|
if (!controller->session().supportMode()) {
|
||
|
addAction(
|
||
|
tr::lng_settings_information(tr::now),
|
||
|
[=] { showOther(Information::Id()); },
|
||
|
&st::menuIconInfo);
|
||
|
}
|
||
|
addAction({
|
||
|
.text = tr::lng_settings_logout(tr::now),
|
||
|
.handler = [=] { window->showLogoutConfirmation(); },
|
||
|
.icon = &st::menuIconLeaveAttention,
|
||
|
.isAttention = true,
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} // namespace Settings
|