diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 109fecbb3..bd1035359 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1278,8 +1278,8 @@ PRIVATE settings/settings_calls.h settings/settings_codes.cpp settings/settings_codes.h - settings/settings_common.cpp - settings/settings_common.h + settings/settings_common_session.cpp + settings/settings_common_session.h settings/settings_experimental.cpp settings/settings_experimental.h settings/settings_folders.cpp diff --git a/Telegram/SourceFiles/boxes/sessions_box.h b/Telegram/SourceFiles/boxes/sessions_box.h index 47d03de27..bc45147f7 100644 --- a/Telegram/SourceFiles/boxes/sessions_box.h +++ b/Telegram/SourceFiles/boxes/sessions_box.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Ui { class VerticalLayout; diff --git a/Telegram/SourceFiles/info/boosts/giveaway/select_countries_box.cpp b/Telegram/SourceFiles/info/boosts/giveaway/select_countries_box.cpp index 4194ed98c..2a296930a 100644 --- a/Telegram/SourceFiles/info/boosts/giveaway/select_countries_box.cpp +++ b/Telegram/SourceFiles/info/boosts/giveaway/select_countries_box.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/layers/generic_box.h" #include "ui/painter.h" #include "ui/rect.h" +#include "ui/vertical_list.h" #include "ui/widgets/buttons.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/labels.h" @@ -25,12 +26,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Ui { namespace { -void AddSkip(not_null container) { - container->add(object_ptr( - container, - st::settingsSectionSkip)); -} - [[nodiscard]] QImage CacheFlagEmoji(const QString &flag) { const auto &st = st::giveawayGiftCodeCountrySelect.item; auto roundPaintCache = QImage( @@ -74,7 +69,7 @@ void SelectCountriesBox( box, st::giveawayGiftCodeCountrySelect, tr::lng_participant_filter())); - AddSkip(box->verticalLayout()); + Ui::AddSkip(box->verticalLayout()); const auto &buttonSt = st::giveawayGiftCodeCountryButton; struct Entry final { @@ -179,8 +174,8 @@ void SelectCountriesBox( { noResults->toggle(false, anim::type::instant); const auto container = noResults->entity(); - AddSkip(container); - AddSkip(container); + Ui::AddSkip(container); + Ui::AddSkip(container); container->add( object_ptr>( container, @@ -188,8 +183,8 @@ void SelectCountriesBox( container, tr::lng_search_messages_none(), st::membersAbout))); - AddSkip(container); - AddSkip(container); + Ui::AddSkip(container); + Ui::AddSkip(container); } multiSelect->setQueryChangedCallback([=](const QString &query) { diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h index d18bca048..95d8cca5d 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "ui/widgets/box_content_divider.h" namespace Ui { diff --git a/Telegram/SourceFiles/settings/settings_advanced.h b/Telegram/SourceFiles/settings/settings_advanced.h index a54e625f2..fce804253 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.h +++ b/Telegram/SourceFiles/settings/settings_advanced.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Main { class Account; diff --git a/Telegram/SourceFiles/settings/settings_blocked_peers.h b/Telegram/SourceFiles/settings/settings_blocked_peers.h index f70726e01..b534cd87e 100644 --- a/Telegram/SourceFiles/settings/settings_blocked_peers.h +++ b/Telegram/SourceFiles/settings/settings_blocked_peers.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Ui { class VerticalLayout; diff --git a/Telegram/SourceFiles/settings/settings_calls.h b/Telegram/SourceFiles/settings/settings_calls.h index 8fe0d1f5f..1fc021aad 100644 --- a/Telegram/SourceFiles/settings/settings_calls.h +++ b/Telegram/SourceFiles/settings/settings_calls.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "ui/effects/animations.h" #include "base/timer.h" diff --git a/Telegram/SourceFiles/settings/settings_chat.h b/Telegram/SourceFiles/settings/settings_chat.h index ad5b4f067..91cd93101 100644 --- a/Telegram/SourceFiles/settings/settings_chat.h +++ b/Telegram/SourceFiles/settings/settings_chat.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Window { class Controller; diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index 8e8735db7..f9de195fc 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -7,42 +7,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "settings/settings_common.h" -#include "apiwrap.h" -#include "api/api_cloud_password.h" -#include "settings/cloud_password/settings_cloud_password_email_confirm.h" -#include "settings/settings_chat.h" -#include "settings/settings_advanced.h" -#include "settings/settings_information.h" -#include "settings/settings_main.h" -#include "settings/settings_notifications.h" -#include "settings/settings_privacy_security.h" -#include "settings/settings_folders.h" -#include "settings/settings_calls.h" -#include "settings/settings_experimental.h" -#include "core/application.h" -#include "core/core_cloud_password.h" -#include "ui/wrap/padding_wrap.h" -#include "ui/wrap/vertical_layout.h" -#include "ui/widgets/labels.h" -#include "ui/widgets/box_content_divider.h" +#include "lottie/lottie_icon.h" +#include "ui/painter.h" #include "ui/widgets/buttons.h" #include "ui/widgets/continuous_sliders.h" -#include "ui/widgets/menu/menu_add_action_callback.h" -#include "ui/painter.h" -#include "boxes/abstract_box.h" -#include "boxes/sessions_box.h" -#include "window/themes/window_theme_editor_box.h" -#include "window/window_session_controller.h" -#include "window/window_controller.h" -#include "lang/lang_keys.h" -#include "mainwindow.h" -#include "main/main_session.h" -#include "main/main_domain.h" -#include "lottie/lottie_icon.h" -#include "base/options.h" -#include "styles/style_layers.h" +#include "ui/widgets/labels.h" +#include "ui/wrap/vertical_layout.h" #include "styles/style_settings.h" -#include "styles/style_menu_icons.h" #include @@ -282,50 +253,6 @@ LottieIcon CreateLottieIcon( return { .widget = std::move(object), .animate = std::move(animate) }; } -void FillMenu( - not_null controller, - Type type, - Fn 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, - }); - } -} - SliderWithLabel MakeSliderWithLabel( QWidget *parent, const style::MediaSlider &sliderSt, diff --git a/Telegram/SourceFiles/settings/settings_common.h b/Telegram/SourceFiles/settings/settings_common.h index 4ce1a65e1..838edcc64 100644 --- a/Telegram/SourceFiles/settings/settings_common.h +++ b/Telegram/SourceFiles/settings/settings_common.h @@ -50,34 +50,6 @@ namespace Settings { using Button = Ui::SettingsButton; -class AbstractSection; - -struct AbstractSectionFactory { - [[nodiscard]] virtual object_ptr create( - not_null parent, - not_null controller) const = 0; - [[nodiscard]] virtual bool hasCustomTopBar() const { - return false; - } - - virtual ~AbstractSectionFactory() = default; -}; - -template -struct SectionFactory : AbstractSectionFactory { - object_ptr create( - not_null parent, - not_null controller - ) const final override { - return object_ptr(parent, controller); - } - - [[nodiscard]] static const std::shared_ptr &Instance() { - static const auto result = std::make_shared(); - return result; - } -}; - class AbstractSection : public Ui::RpWidget { public: using RpWidget::RpWidget; @@ -119,19 +91,6 @@ public: } }; -template -class Section : public AbstractSection { -public: - using AbstractSection::AbstractSection; - - [[nodiscard]] static Type Id() { - return SectionFactory::Instance(); - } - [[nodiscard]] Type id() const final override { - return Id(); - } -}; - enum class IconType { Rounded, Round, @@ -207,12 +166,6 @@ struct LottieIcon { Lottie::IconDescriptor &&descriptor, style::margins padding = {}); -void FillMenu( - not_null controller, - Type type, - Fn showOther, - Ui::Menu::MenuCallback addAction); - struct SliderWithLabel { object_ptr widget; not_null slider; diff --git a/Telegram/SourceFiles/settings/settings_common_session.cpp b/Telegram/SourceFiles/settings/settings_common_session.cpp new file mode 100644 index 000000000..047c2c622 --- /dev/null +++ b/Telegram/SourceFiles/settings/settings_common_session.cpp @@ -0,0 +1,81 @@ +/* +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 + +namespace Settings { + +void FillMenu( + not_null controller, + Type type, + Fn 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 diff --git a/Telegram/SourceFiles/settings/settings_common_session.h b/Telegram/SourceFiles/settings/settings_common_session.h new file mode 100644 index 000000000..911e22897 --- /dev/null +++ b/Telegram/SourceFiles/settings/settings_common_session.h @@ -0,0 +1,72 @@ +/* +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 +*/ +#pragma once + +#include "settings/settings_common.h" +#include "ui/rp_widget.h" +#include "base/object_ptr.h" +#include "settings/settings_type.h" + +namespace Ui::Menu { +struct MenuCallback; +} // namespace Ui::Menu + +namespace Window { +class SessionController; +} // namespace Window + +namespace Settings { + +class AbstractSection; + +struct AbstractSectionFactory { + [[nodiscard]] virtual object_ptr create( + not_null parent, + not_null controller) const = 0; + [[nodiscard]] virtual bool hasCustomTopBar() const { + return false; + } + + virtual ~AbstractSectionFactory() = default; +}; + +template +struct SectionFactory : AbstractSectionFactory { + object_ptr create( + not_null parent, + not_null controller + ) const final override { + return object_ptr(parent, controller); + } + + [[nodiscard]] static const std::shared_ptr &Instance() { + static const auto result = std::make_shared(); + return result; + } +}; + +template +class Section : public AbstractSection { +public: + using AbstractSection::AbstractSection; + + [[nodiscard]] static Type Id() { + return SectionFactory::Instance(); + } + [[nodiscard]] Type id() const final override { + return Id(); + } +}; + +void FillMenu( + not_null controller, + Type type, + Fn showOther, + Ui::Menu::MenuCallback addAction); + +} // namespace Settings diff --git a/Telegram/SourceFiles/settings/settings_experimental.h b/Telegram/SourceFiles/settings/settings_experimental.h index e465b6c5c..bb43a42e5 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.h +++ b/Telegram/SourceFiles/settings/settings_experimental.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Settings { diff --git a/Telegram/SourceFiles/settings/settings_folders.h b/Telegram/SourceFiles/settings/settings_folders.h index 98447aa08..4598d22ae 100644 --- a/Telegram/SourceFiles/settings/settings_folders.h +++ b/Telegram/SourceFiles/settings/settings_folders.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Settings { diff --git a/Telegram/SourceFiles/settings/settings_global_ttl.cpp b/Telegram/SourceFiles/settings/settings_global_ttl.cpp index f98b65cb8..478634281 100644 --- a/Telegram/SourceFiles/settings/settings_global_ttl.cpp +++ b/Telegram/SourceFiles/settings/settings_global_ttl.cpp @@ -19,7 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lottie/lottie_icon.h" #include "main/main_session.h" #include "menu/menu_ttl_validator.h" -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "ui/boxes/confirm_box.h" #include "ui/painter.h" #include "ui/vertical_list.h" diff --git a/Telegram/SourceFiles/settings/settings_information.h b/Telegram/SourceFiles/settings/settings_information.h index fa261df22..3489d5ca1 100644 --- a/Telegram/SourceFiles/settings/settings_information.h +++ b/Telegram/SourceFiles/settings/settings_information.h @@ -7,7 +7,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" + +class UserData; namespace Ui { struct UnreadBadgeStyle; diff --git a/Telegram/SourceFiles/settings/settings_main.h b/Telegram/SourceFiles/settings/settings_main.h index 10220623d..e3d26d02b 100644 --- a/Telegram/SourceFiles/settings/settings_main.h +++ b/Telegram/SourceFiles/settings/settings_main.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Window { class Controller; diff --git a/Telegram/SourceFiles/settings/settings_notifications.h b/Telegram/SourceFiles/settings/settings_notifications.h index d75318230..1911a48af 100644 --- a/Telegram/SourceFiles/settings/settings_notifications.h +++ b/Telegram/SourceFiles/settings/settings_notifications.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Settings { diff --git a/Telegram/SourceFiles/settings/settings_notifications_type.h b/Telegram/SourceFiles/settings/settings_notifications_type.h index c5f6d95d4..bf4af8222 100644 --- a/Telegram/SourceFiles/settings/settings_notifications_type.h +++ b/Telegram/SourceFiles/settings/settings_notifications_type.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "data/notify/data_notify_settings.h" namespace Data { diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index ad19fe724..2a3d6183c 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -29,7 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_account.h" #include "main/main_app_config.h" #include "main/main_session.h" -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "ui/abstract_button.h" #include "ui/basic_click_handlers.h" #include "ui/effects/gradient.h" diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.h b/Telegram/SourceFiles/settings/settings_privacy_security.h index 83dd827ee..dfa7f1299 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.h +++ b/Telegram/SourceFiles/settings/settings_privacy_security.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" #include "api/api_user_privacy.h" class EditPrivacyController; diff --git a/Telegram/SourceFiles/settings/settings_websites.h b/Telegram/SourceFiles/settings/settings_websites.h index 4b44bd8a9..649a88205 100644 --- a/Telegram/SourceFiles/settings/settings_websites.h +++ b/Telegram/SourceFiles/settings/settings_websites.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common.h" +#include "settings/settings_common_session.h" namespace Settings { diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index 104613636..be1396183 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -169,6 +169,9 @@ PRIVATE platform/mac/file_bookmark_mac.mm platform/platform_file_bookmark.h + settings/settings_common.cpp + settings/settings_common.h + statistics/chart_lines_filter_controller.cpp statistics/chart_lines_filter_controller.h statistics/chart_rulers_data.cpp