From 7a3f6a6994148ef05856ed95d86dddfbaaae60fe Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 14 Jan 2026 14:50:00 +0400 Subject: [PATCH] Unite settings_advanced and settings_advanced_builder into settings/sections/settings_advanced. Co-Authored-By: Claude Opus 4.5 --- Telegram/CMakeLists.txt | 6 +- .../core/deep_links/deep_links_settings.cpp | 2 +- Telegram/SourceFiles/core/update_checker.cpp | 2 +- .../builder/settings_advanced_builder.h | 24 - .../builder/settings_chat_builder.cpp | 2 +- .../settings_advanced.cpp} | 692 ++++++++++- .../{ => sections}/settings_advanced.h | 7 + .../settings/sections/settings_main.cpp | 2 +- .../settings/settings_advanced.cpp | 1053 ----------------- .../SourceFiles/settings/settings_chat.cpp | 2 +- .../SourceFiles/settings/settings_intro.cpp | 2 +- .../SourceFiles/window/window_main_menu.cpp | 2 +- .../SourceFiles/window/window_peer_menu.cpp | 2 +- 13 files changed, 700 insertions(+), 1098 deletions(-) delete mode 100644 Telegram/SourceFiles/settings/builder/settings_advanced_builder.h rename Telegram/SourceFiles/settings/{builder/settings_advanced_builder.cpp => sections/settings_advanced.cpp} (62%) rename Telegram/SourceFiles/settings/{ => sections}/settings_advanced.h (91%) delete mode 100644 Telegram/SourceFiles/settings/settings_advanced.cpp diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 141832588b..ae3cd20769 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1546,8 +1546,8 @@ PRIVATE settings/cloud_password/settings_cloud_password_validate_icon.h settings/settings_active_sessions.cpp settings/settings_active_sessions.h - settings/settings_advanced.cpp - settings/settings_advanced.h + settings/sections/settings_advanced.cpp + settings/sections/settings_advanced.h settings/settings_blocked_peers.cpp settings/settings_blocked_peers.h settings/settings_business.cpp @@ -1580,8 +1580,6 @@ PRIVATE settings/sections/settings_main.h settings/settings_search.cpp settings/settings_search.h - settings/builder/settings_advanced_builder.cpp - settings/builder/settings_advanced_builder.h settings/builder/settings_builder.cpp settings/builder/settings_builder.h settings/builder/settings_chat_builder.cpp diff --git a/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp b/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp index 66274fb166..887cbf0cb7 100644 --- a/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp +++ b/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp @@ -39,7 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "storage/storage_domain.h" #include "settings/settings_active_sessions.h" -#include "settings/settings_advanced.h" +#include "settings/sections/settings_advanced.h" #include "settings/settings_blocked_peers.h" #include "settings/settings_business.h" #include "settings/settings_calls.h" diff --git a/Telegram/SourceFiles/core/update_checker.cpp b/Telegram/SourceFiles/core/update_checker.cpp index 9f9913147c..ffe040491e 100644 --- a/Telegram/SourceFiles/core/update_checker.cpp +++ b/Telegram/SourceFiles/core/update_checker.cpp @@ -25,7 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_controller.h" #include "window/window_controller.h" #include "window/window_session_controller.h" -#include "settings/settings_advanced.h" +#include "settings/sections/settings_advanced.h" #include "settings/settings_intro.h" #include "ui/layers/box_content.h" diff --git a/Telegram/SourceFiles/settings/builder/settings_advanced_builder.h b/Telegram/SourceFiles/settings/builder/settings_advanced_builder.h deleted file mode 100644 index d1eceb9423..0000000000 --- a/Telegram/SourceFiles/settings/builder/settings_advanced_builder.h +++ /dev/null @@ -1,24 +0,0 @@ -/* -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" - -namespace Ui { -class VerticalLayout; -} // namespace Ui - -namespace Window { -class SessionController; -} // namespace Window - -namespace Settings::Builder { - -extern SectionBuildMethod AdvancedSection; - -} // namespace Settings::Builder diff --git a/Telegram/SourceFiles/settings/builder/settings_chat_builder.cpp b/Telegram/SourceFiles/settings/builder/settings_chat_builder.cpp index a278be2595..d4d20d0471 100644 --- a/Telegram/SourceFiles/settings/builder/settings_chat_builder.cpp +++ b/Telegram/SourceFiles/settings/builder/settings_chat_builder.cpp @@ -14,7 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "main/main_session_settings.h" #include "settings/builder/settings_builder.h" -#include "settings/settings_advanced.h" +#include "settings/sections/settings_advanced.h" #include "settings/settings_chat.h" #include "settings/settings_experimental.h" #include "settings/sections/settings_main.h" diff --git a/Telegram/SourceFiles/settings/builder/settings_advanced_builder.cpp b/Telegram/SourceFiles/settings/sections/settings_advanced.cpp similarity index 62% rename from Telegram/SourceFiles/settings/builder/settings_advanced_builder.cpp rename to Telegram/SourceFiles/settings/sections/settings_advanced.cpp index d666c494ea..e6126472a8 100644 --- a/Telegram/SourceFiles/settings/builder/settings_advanced_builder.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_advanced.cpp @@ -5,21 +5,24 @@ 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/builder/settings_advanced_builder.h" +#include "settings/sections/settings_advanced.h" +#include "api/api_global_privacy.h" +#include "apiwrap.h" #include "base/call_delayed.h" +#include "base/platform/base_platform_custom_app_icon.h" #include "base/platform/base_platform_info.h" #include "boxes/about_box.h" #include "boxes/auto_download_box.h" #include "boxes/connection_box.h" #include "boxes/download_path_box.h" -#include "data/data_auto_download.h" #include "boxes/local_storage_box.h" #include "core/application.h" #include "core/core_settings.h" #include "core/file_utilities.h" #include "core/launcher.h" #include "core/update_checker.h" +#include "data/data_auto_download.h" #include "export/export_manager.h" #include "info/downloads/info_downloads_widget.h" #include "info/info_memento.h" @@ -27,15 +30,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_account.h" #include "main/main_domain.h" #include "main/main_session.h" +#include "mtproto/facade.h" #include "mtproto/mtp_instance.h" #include "platform/platform_specific.h" #include "settings/builder/settings_builder.h" -#include "settings/settings_advanced.h" -#include "settings/settings_chat.h" #include "settings/sections/settings_main.h" +#include "settings/settings_chat.h" #include "settings/settings_experimental.h" #include "settings/settings_power_saving.h" -#include "ui/power_saving.h" +#include "settings/settings_privacy_security.h" #include "storage/localstorage.h" #include "storage/storage_domain.h" #include "tray.h" @@ -43,31 +46,46 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/single_choice_box.h" #include "ui/gl/gl_detection.h" #include "ui/layers/generic_box.h" +#include "ui/painter.h" #include "ui/platform/ui_platform_window.h" +#include "ui/power_saving.h" +#include "ui/rp_widget.h" #include "ui/text/format_values.h" +#include "ui/ui_utility.h" #include "ui/vertical_list.h" #include "ui/widgets/buttons.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/labels.h" #include "ui/wrap/slide_wrap.h" #include "ui/wrap/vertical_layout.h" -#include "ui/rp_widget.h" -#include "ui/ui_utility.h" #include "window/window_controller.h" #include "window/window_session_controller.h" #include "styles/style_layers.h" #include "styles/style_menu_icons.h" #include "styles/style_settings.h" +#ifdef Q_OS_MAC +#include "base/platform/mac/base_confirm_quit.h" +#endif // Q_OS_MAC + #ifndef TDESKTOP_DISABLE_SPELLCHECK #include "boxes/dictionaries_manager.h" #include "chat_helpers/spellchecker_common.h" #include "spellcheck/platform/platform_spellcheck.h" #endif // !TDESKTOP_DISABLE_SPELLCHECK -namespace Settings::Builder { +namespace Settings { namespace { +using namespace Builder; + +#if defined Q_OS_MAC && !defined OS_MAC_STORE +[[nodiscard]] const QImage &IconMacRound() { + static const auto result = QImage(u":/gui/art/icon_round512@2x.png"_q); + return result; +} +#endif // Q_OS_MAC && !OS_MAC_STORE + void BuildDataStorageSection(SectionBuilder &builder) { const auto controller = builder.controller(); const auto container = builder.container(); @@ -1119,6 +1137,662 @@ const auto kMeta = BuildHelper({ } // namespace +void SetupConnectionType( + not_null controller, + not_null<::Main::Account*> account, + not_null container) { + const auto connectionType = [=] { + const auto transport = account->mtp().dctransport(); + if (!Core::App().settings().proxy().isEnabled()) { + return transport.isEmpty() + ? tr::lng_connection_auto_connecting(tr::now) + : tr::lng_connection_auto(tr::now, lt_transport, transport); + } else { + return transport.isEmpty() + ? tr::lng_connection_proxy_connecting(tr::now) + : tr::lng_connection_proxy(tr::now, lt_transport, transport); + } + }; + const auto button = AddButtonWithLabel( + container, + tr::lng_settings_connection_type(), + rpl::merge( + Core::App().settings().proxy().connectionTypeChanges(), + tr::lng_connection_auto_connecting() | rpl::to_empty + ) | rpl::map([=] { return connectionType(); }), + st::settingsButton, + { &st::menuIconNetwork }); + button->addClickHandler([=] { + controller->show(ProxiesBoxController::CreateOwningBox(account)); + }); +} + +bool HasUpdate() { + return !Core::UpdaterDisabled(); +} + +void SetupUpdate(not_null container) { + if (!HasUpdate()) { + return; + } + + const auto texts = Ui::CreateChild>( + container.get()); + const auto downloading = Ui::CreateChild>( + container.get()); + const auto version = tr::lng_settings_current_version( + tr::now, + lt_version, + currentVersionText()); + const auto toggle = container->add(object_ptr