From e84e8a7cf67741d6ee8bba3c79a99389dfb598b3 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 14 Jan 2026 19:52:28 +0400 Subject: [PATCH] Move Settings::Advanced class to anonymous namespace - Move Advanced class definition into .cpp file anonymous namespace - Export only Type AdvancedId() in header - Keep exported helper functions (SetupConnectionType, HasUpdate, etc.) - Remove unused SetupWindowCloseBehaviorContent declaration - Update callers to use AdvancedId() instead of Advanced::Id() Co-Authored-By: Claude Opus 4.5 --- Telegram/SourceFiles/core/update_checker.cpp | 2 +- .../settings/sections/settings_advanced.cpp | 60 ++++++++++++------- .../settings/sections/settings_advanced.h | 24 +------- .../settings/sections/settings_main.cpp | 2 +- 4 files changed, 42 insertions(+), 46 deletions(-) diff --git a/Telegram/SourceFiles/core/update_checker.cpp b/Telegram/SourceFiles/core/update_checker.cpp index ffe040491e..276fe1b73c 100644 --- a/Telegram/SourceFiles/core/update_checker.cpp +++ b/Telegram/SourceFiles/core/update_checker.cpp @@ -1658,7 +1658,7 @@ void UpdateApplication() { controller->showSection( std::make_shared( Info::Settings::Tag{ controller->session().user() }, - ::Settings::Advanced::Id()), + ::Settings::AdvancedId()), Window::SectionShow()); } else { window->widget()->showSpecialLayer( diff --git a/Telegram/SourceFiles/settings/sections/settings_advanced.cpp b/Telegram/SourceFiles/settings/sections/settings_advanced.cpp index 59b3665057..27e735da24 100644 --- a/Telegram/SourceFiles/settings/sections/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_advanced.cpp @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "settings/sections/settings_advanced.h" +#include "settings/settings_common_session.h" + #include "api/api_global_privacy.h" #include "apiwrap.h" #include "base/call_delayed.h" @@ -1112,6 +1114,19 @@ void BuildExportSection(SectionBuilder &builder) { }); } +class Advanced : public Section { +public: + Advanced( + QWidget *parent, + not_null controller); + + [[nodiscard]] rpl::producer title() override; + +private: + void setupContent(); + +}; + const auto kMeta = BuildHelper({ .id = Advanced::Id(), .parentId = MainId(), @@ -1135,6 +1150,27 @@ const auto kMeta = BuildHelper({ BuildExportSection(builder); }); +const SectionBuildMethod kAdvancedSection = kMeta.build; + +Advanced::Advanced( + QWidget *parent, + not_null controller) +: Section(parent, controller) { + setupContent(); +} + +rpl::producer Advanced::title() { + return tr::lng_settings_advanced(); +} + +void Advanced::setupContent() { + const auto content = Ui::CreateChild(this); + + build(content, kAdvancedSection); + + Ui::ResizeFitChild(this, content); +} + } // namespace void SetupConnectionType( @@ -1771,28 +1807,8 @@ void PreloadArchiveSettings(not_null<::Main::Session*> session) { session->api().globalPrivacy().reload(); } -Advanced::Advanced( - QWidget *parent, - not_null controller) -: Section(parent, controller) { - setupContent(); +Type AdvancedId() { + return Advanced::Id(); } -rpl::producer Advanced::title() { - return tr::lng_settings_advanced(); -} - -void Advanced::setupContent() { - const auto content = Ui::CreateChild(this); - - build(content, Builder::AdvancedSection); - - Ui::ResizeFitChild(this, content); -} - -namespace Builder { - -SectionBuildMethod AdvancedSection = kMeta.build; - -} // namespace Builder } // namespace Settings diff --git a/Telegram/SourceFiles/settings/sections/settings_advanced.h b/Telegram/SourceFiles/settings/sections/settings_advanced.h index 8e14604964..ceed08440f 100644 --- a/Telegram/SourceFiles/settings/sections/settings_advanced.h +++ b/Telegram/SourceFiles/settings/sections/settings_advanced.h @@ -7,7 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_common_session.h" #include "settings/settings_type.h" namespace Main { @@ -27,6 +26,8 @@ class SessionController; namespace Settings { +[[nodiscard]] Type AdvancedId(); + void SetupConnectionType( not_null controller, not_null<::Main::Account*> account, @@ -36,9 +37,6 @@ void SetupUpdate(not_null container); void SetupWindowTitleContent( Window::SessionController *controller, not_null container); -void SetupWindowCloseBehaviorContent( - Window::SessionController *controller, - not_null container); void SetupSystemIntegrationContent( Window::SessionController *controller, not_null container); @@ -51,22 +49,4 @@ void ArchiveSettingsBox( not_null controller); void PreloadArchiveSettings(not_null<::Main::Session*> session); -class Advanced : public Section { -public: - Advanced( - QWidget *parent, - not_null controller); - - [[nodiscard]] rpl::producer title() override; - -private: - void setupContent(); - -}; - -namespace Builder { - -extern SectionBuildMethod AdvancedSection; - -} // namespace Builder } // namespace Settings diff --git a/Telegram/SourceFiles/settings/sections/settings_main.cpp b/Telegram/SourceFiles/settings/sections/settings_main.cpp index d10bc8a9bf..3aa5f070f3 100644 --- a/Telegram/SourceFiles/settings/sections/settings_main.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_main.cpp @@ -400,7 +400,7 @@ void BuildSectionButtons(SectionBuilder &builder) { builder.addSectionButton({ .id = u"main/advanced"_q, .title = tr::lng_settings_advanced(), - .targetSection = Advanced::Id(), + .targetSection = AdvancedId(), .icon = { &st::menuIconManage }, .keywords = { u"performance"_q, u"proxy"_q, u"experimental"_q }, });