Rewrite settings_premium to new builder pattern

- Move settings_premium.h/cpp from settings/ to settings/sections/
- Add BuildHelper with kMeta for search indexing
- Index premium features and subscribe button for search
- Keep complex Premium section UI (custom top bar, feature list) as non-indexed
- Update all include paths across the codebase

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
John Preston
2026-01-14 17:40:58 +04:00
parent 86398de8bd
commit 9316cec95d
51 changed files with 164 additions and 63 deletions
+2 -2
View File
@@ -1592,8 +1592,8 @@ PRIVATE
settings/sections/settings_passkeys.h
settings/settings_power_saving.cpp
settings/settings_power_saving.h
settings/settings_premium.cpp
settings/settings_premium.h
settings/sections/settings_premium.cpp
settings/sections/settings_premium.h
settings/settings_privacy_controllers.cpp
settings/settings_privacy_controllers.h
settings/settings_scale_preview.cpp
@@ -15,7 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "data/data_user.h"
#include "main/main_session.h"
#include "settings/settings_premium.h" // Settings::ShowPremium.
#include "settings/sections/settings_premium.h" // Settings::ShowPremium.
namespace Api {
namespace {
+1 -1
View File
@@ -83,7 +83,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/chat/attach/attach_prepare.h"
#include "ui/toast/toast.h"
#include "support/support_helper.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/localimageloader.h"
#include "storage/download_manager_mtproto.h"
#include "storage/file_upload.h"
@@ -41,7 +41,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_file_origin.h"
#include "data/data_peer_values.h"
#include "data/data_premium_limits.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/file_upload.h"
#include "storage/localimageloader.h"
#include "window/window_session_controller.h"
@@ -20,7 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_app_config.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/settings_privacy_controllers.h"
#include "settings/sections/settings_privacy_security.h"
#include "ui/boxes/peer_qr_box.h"
@@ -45,7 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "payments/payments_checkout_process.h"
#include "payments/payments_form.h"
#include "settings/settings_credits_graphics.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/basic_click_handlers.h" // UrlClickHandler::Open.
#include "ui/boxes/boost_box.h" // StartFireworks.
#include "ui/boxes/confirm_box.h"
@@ -12,7 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/random.h"
#include "boxes/filters/edit_filter_chats_list.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/round_checkbox.h"
#include "ui/text/text_utilities.h"
@@ -39,7 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/unixtime.h"
#include "main/main_session.h"
#include "mtproto/mtproto_config.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_session_controller.h"
#include "info/profile/info_profile_icon.h"
#include "apiwrap.h"
@@ -47,7 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lottie/lottie_single_player.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/boost_box.h"
#include "ui/chat/chat_style.h"
#include "ui/chat/chat_theme.h"
@@ -30,7 +30,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_folder.h"
#include "data/data_premium_limits.h"
#include "lang/lang_keys.h"
#include "settings/settings_premium.h" // ShowPremium.
#include "settings/sections/settings_premium.h" // ShowPremium.
#include "base/unixtime.h"
#include "apiwrap.h"
#include "styles/style_premium.h"
@@ -35,7 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/painter.h"
#include "ui/vertical_list.h"
#include "settings/sections/settings_business.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h"
#include "history/view/history_view_element.h"
@@ -22,7 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "boxes/premium_preview_box.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/chat/chat_style.h"
#include "ui/chat/chat_theme.h"
#include "ui/effects/scroll_content_shadow.h"
+1 -1
View File
@@ -33,7 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_item_helpers.h"
#include "history/view/history_view_element.h"
#include "history/view/history_view_context_menu.h" // CopyPostLink.
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_session_controller.h"
#include "boxes/peer_list_controllers.h"
#include "chat_helpers/emoji_suggestions_widget.h"
+1 -1
View File
@@ -76,7 +76,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "payments/payments_non_panel_process.h"
#include "settings/sections/settings_credits.h"
#include "settings/settings_credits_graphics.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/about_cocoon_box.h" // Ui::AddUniqueCloseButton
#include "ui/boxes/boost_box.h"
#include "ui/boxes/confirm_box.h"
@@ -33,7 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "media/clip/media_clip_reader.h"
#include "menu/menu_send.h"
#include "mtproto/sender.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/storage_account.h"
#include "ui/boxes/confirm_box.h"
#include "ui/cached_round_corners.h"
@@ -50,7 +50,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "core/core_settings.h"
#include "core/application.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_session_controller.h"
#include "window/window_controller.h"
#include "styles/style_chat_helpers.h"
@@ -45,7 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwindow.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"
#include "styles/style_chat.h"
@@ -61,7 +61,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/sections/settings_notifications.h"
#include "settings/sections/settings_notifications_type.h"
#include "settings/settings_power_saving.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/power_saving.h"
#include "settings/sections/settings_privacy_security.h"
#include "settings/settings_websites.h"
@@ -65,7 +65,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/settings_privacy_controllers.h"
#include "settings/sections/settings_privacy_security.h"
#include "settings/sections/settings_chat.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/storage_account.h"
#include "mainwidget.h"
#include "main/main_account.h"
@@ -22,7 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_item_components.h"
#include "apiwrap.h"
#include "storage/storage_account.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "core/application.h"
#include "core/core_settings.h"
#include "main/main_session.h"
@@ -32,7 +32,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "settings/sections/settings_active_sessions.h"
#include "settings/settings_credits_graphics.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/confirm_box.h"
#include "ui/controls/userpic_button.h"
#include "ui/effects/credits_graphics.h"
@@ -43,7 +43,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "settings/settings_credits_graphics.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/storage_shared_media.h"
#include "ui/boxes/confirm_box.h"
#include "ui/controls/swipe_handler.h"
@@ -76,7 +76,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "media/audio/media_audio_capture.h"
#include "media/audio/media_audio.h"
#include "menu/menu_send.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/item_text_options.h"
#include "ui/text/text_options.h"
#include "ui/text/text_utilities.h"
@@ -38,7 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "settings/business/settings_chat_intro.h"
#include "settings/sections/settings_credits.h" // BuyStarsHandler
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/chat/chat_style.h"
#include "ui/text/custom_emoji_instance.h"
#include "ui/text/text_utilities.h"
@@ -37,7 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_forum_topic.h"
#include "data/data_peer_values.h"
#include "data/stickers/data_custom_emoji.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_peer_menu.h"
#include "window/window_controller.h"
#include "window/window_session_controller.h"
@@ -79,7 +79,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/click_handler_types.h"
#include "base/platform/base_platform_info.h"
#include "base/call_delayed.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_peer_menu.h"
#include "window/window_controller.h"
#include "window/window_session_controller.h"
@@ -45,7 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "mainwidget.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/text/text_options.h"
#include "ui/painter.h"
#include "window/themes/window_theme.h" // IsNightMode.
@@ -24,7 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/wrap/padding_wrap.h"
#include "main/main_session.h"
#include "menu/menu_send.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "styles/style_info.h"
#include "styles/style_layers.h"
#include "styles/style_chat.h"
@@ -21,7 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "boxes/premium_preview_box.h"
#include "lottie/lottie_single_player.h"
#include "window/window_session_controller.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "apiwrap.h"
#include "styles/style_chat.h"
@@ -16,7 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "main/main_session.h"
#include "lang/lang_keys.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/chat/chat_style.h"
#include "ui/effects/radial_animation.h"
#include "ui/effects/ripple_animation.h"
@@ -28,7 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "settings/sections/settings_credits.h" // Settings::CreditsId
#include "settings/settings_credits_graphics.h" // GiftedCreditsBox
#include "settings/settings_premium.h" // Settings::ShowGiftPremium
#include "settings/sections/settings_premium.h" // Settings::ShowGiftPremium
#include "ui/chat/chat_style.h"
#include "ui/controls/ton_common.h" // kNanosInOne
#include "ui/layers/generic_box.h"
@@ -23,7 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/info_memento.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/chat/chat_style.h"
#include "ui/chat/chat_theme.h"
#include "ui/effects/ripple_animation.h"
@@ -26,7 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "payments/payments_checkout_process.h" // Payments::CheckoutProcess
#include "payments/payments_form.h" // Payments::InvoicePremiumGiftCode
#include "settings/settings_common.h"
#include "settings/settings_premium.h" // Settings::ShowPremium
#include "settings/sections/settings_premium.h" // Settings::ShowPremium
#include "ui/boxes/choose_date_time.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/credits_graphics.h"
@@ -19,7 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/sections/settings_chat.h"
#include "settings/sections/settings_information.h"
#include "settings/sections/settings_main.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/settings_search.h"
#include "ui/effects/ripple_animation.h" // MaskByDrawer.
#include "ui/widgets/menu/menu_add_action_callback.h"
@@ -48,7 +48,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "window/window_session_controller.h"
#include "main/main_app_config.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "chat_helpers/stickers_lottie.h"
#include "apiwrap.h"
#include "api/api_peer_photo.h"
@@ -64,7 +64,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "menu/menu_mute.h"
#include "settings/settings_credits_graphics.h"
#include "settings/sections/settings_information.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/show_or_premium_box.h"
#include "ui/color_contrast.h"
#include "ui/controls/stars_rating.h"
@@ -23,7 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/tooltip.h"
#include "ui/ui_utility.h"
#include "lang/lang_keys.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/window_session_controller.h"
#include "styles/style_info.h"
#include "styles/style_widgets.h"
@@ -57,7 +57,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "mainwidget.h"
#include "payments/payments_checkout_process.h"
#include "payments/payments_non_panel_process.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "storage/storage_account.h"
#include "storage/storage_domain.h"
#include "ui/basic_click_handlers.h"
+1 -1
View File
@@ -88,7 +88,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "main/main_app_config.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "support/support_helper.h"
#include "storage/storage_user_photos.h"
#include "styles/style_dialogs.h"
@@ -17,7 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/profile/info_profile_icon.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/controls/feature_list.h"
#include "ui/layers/generic_box.h"
#include "ui/text/text_utilities.h"
+1 -1
View File
@@ -50,7 +50,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "main/main_session.h"
#include "apiwrap.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "window/themes/window_theme.h"
#include "window/section_widget.h"
#include "styles/style_chat.h"
@@ -39,7 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/settings_builder.h"
#include "settings/settings_common.h"
#include "settings/settings_common_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/controls/swipe_handler.h"
#include "ui/controls/swipe_handler_data.h"
#include "ui/effects/gradient.h"
@@ -26,7 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "settings/sections/settings_main.h"
#include "settings/settings_builder.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "ui/boxes/confirm_box.h"
#include "ui/empty_userpic.h"
#include "ui/filter_icons.h"
@@ -51,7 +51,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/sections/settings_information.h"
#include "settings/sections/settings_notifications.h"
#include "settings/settings_power_saving.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/sections/settings_privacy_security.h"
#include "settings/settings_scale_preview.h"
#include "storage/localstorage.h"
@@ -5,7 +5,7 @@ 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_premium.h"
#include "settings/sections/settings_premium.h"
#include "boxes/premium_preview_box.h"
#include "boxes/sticker_set_box.h"
@@ -29,6 +29,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "main/main_app_config.h"
#include "main/main_session.h"
#include "settings/sections/settings_main.h"
#include "settings/settings_builder.h"
#include "settings/settings_common_session.h"
#include "ui/abstract_button.h"
#include "ui/basic_click_handlers.h"
@@ -60,6 +62,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "api/api_premium.h"
#include "styles/style_chat_helpers.h"
#include "styles/style_menu_icons.h"
#include "styles/style_premium.h"
#include "styles/style_info.h"
#include "styles/style_layers.h"
@@ -68,6 +71,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Settings {
namespace {
using namespace Builder;
using SectionCustomTopBarData = Info::Settings::SectionCustomTopBarData;
[[nodiscard]] Data::PremiumSubscriptionOptions SubscriptionOptionsForRows(
@@ -451,7 +456,7 @@ using Order = std::vector<QString>;
}
void SendAppLog(
not_null<Main::Session*> session,
not_null<::Main::Session*> session,
const QString &type,
const MTPJSONValue &data) {
const auto now = double(base::unixtime::now())
@@ -963,6 +968,87 @@ void TopBarWithSticker::resizeEvent(QResizeEvent *e) {
}
}
[[nodiscard]] QString GetFeatureTitle(const QString &key) {
if (key == u"saved_tags"_q) {
return tr::lng_premium_summary_subtitle_tags_for_messages(tr::now);
} else if (key == u"last_seen"_q) {
return tr::lng_premium_summary_subtitle_last_seen(tr::now);
} else if (key == u"message_privacy"_q) {
return tr::lng_premium_summary_subtitle_message_privacy(tr::now);
} else if (key == u"wallpapers"_q) {
return tr::lng_premium_summary_subtitle_wallpapers(tr::now);
} else if (key == u"peer_colors"_q) {
return tr::lng_premium_summary_subtitle_peer_colors(tr::now);
} else if (key == u"stories"_q) {
return tr::lng_premium_summary_subtitle_stories(tr::now);
} else if (key == u"double_limits"_q) {
return tr::lng_premium_summary_subtitle_double_limits(tr::now);
} else if (key == u"more_upload"_q) {
return tr::lng_premium_summary_subtitle_more_upload(tr::now);
} else if (key == u"faster_download"_q) {
return tr::lng_premium_summary_subtitle_faster_download(tr::now);
} else if (key == u"voice_to_text"_q) {
return tr::lng_premium_summary_subtitle_voice_to_text(tr::now);
} else if (key == u"no_ads"_q) {
return tr::lng_premium_summary_subtitle_no_ads(tr::now);
} else if (key == u"emoji_status"_q) {
return tr::lng_premium_summary_subtitle_emoji_status(tr::now);
} else if (key == u"infinite_reactions"_q) {
return tr::lng_premium_summary_subtitle_infinite_reactions(tr::now);
} else if (key == u"premium_stickers"_q) {
return tr::lng_premium_summary_subtitle_premium_stickers(tr::now);
} else if (key == u"animated_emoji"_q) {
return tr::lng_premium_summary_subtitle_animated_emoji(tr::now);
} else if (key == u"advanced_chat_management"_q) {
return tr::lng_premium_summary_subtitle_advanced_chat_management(tr::now);
} else if (key == u"profile_badge"_q) {
return tr::lng_premium_summary_subtitle_profile_badge(tr::now);
} else if (key == u"animated_userpics"_q) {
return tr::lng_premium_summary_subtitle_animated_userpics(tr::now);
} else if (key == u"translations"_q) {
return tr::lng_premium_summary_subtitle_translation(tr::now);
} else if (key == u"business"_q) {
return tr::lng_premium_summary_subtitle_business(tr::now);
} else if (key == u"effects"_q) {
return tr::lng_premium_summary_subtitle_effects(tr::now);
} else if (key == u"todo"_q) {
return tr::lng_premium_summary_subtitle_todo_lists(tr::now);
}
return QString();
}
void BuildPremiumFeatures(SectionBuilder &builder) {
const auto session = builder.session();
const auto mtpOrder = session->appConfig().get<Order>(
"premium_promo_order",
FallbackOrder());
for (const auto &key : mtpOrder) {
const auto title = GetFeatureTitle(key);
if (title.isEmpty()) {
continue;
}
builder.add(nullptr, [key, title] {
return SearchEntry{
.id = u"premium/"_q + key,
.title = title,
};
});
}
}
void BuildPremiumSectionContent(SectionBuilder &builder) {
builder.add(nullptr, [] {
return SearchEntry{
.id = u"premium/subscribe"_q,
.title = tr::lng_premium_summary_button(tr::now, lt_cost, QString()),
.keywords = { u"subscription"_q, u"buy"_q },
};
});
BuildPremiumFeatures(builder);
}
class Premium : public Section<Premium> {
public:
Premium(
@@ -1456,6 +1542,15 @@ base::weak_qptr<Ui::RpWidget> Premium::createPinnedToBottom(
return base::make_weak(not_null<Ui::RpWidget*>{ content });
}
const auto kMeta = BuildHelper({
.id = Premium::Id(),
.parentId = Main::Id(),
.title = &tr::lng_premium_summary_title,
.icon = &st::menuIconPremium,
}, [](SectionBuilder &builder) {
BuildPremiumSectionContent(builder);
});
} // namespace
template <>
@@ -1482,7 +1577,7 @@ Type PremiumId() {
return Premium::Id();
}
void ShowPremium(not_null<Main::Session*> session, const QString &ref) {
void ShowPremium(not_null<::Main::Session*> session, const QString &ref) {
const auto active = Core::App().activeWindow();
const auto controller = (active && active->isPrimary())
? active->sessionController()
@@ -1572,7 +1667,7 @@ void ShowPremiumPromoToast(
TextWithEntities textWithLink,
const QString &ref) {
ShowPremiumPromoToast(show, [=](
not_null<Main::Session*> session) {
not_null<::Main::Session*> session) {
Expects(&show->session() == session);
return show->resolveWindow();
@@ -1580,9 +1675,9 @@ void ShowPremiumPromoToast(
}
void ShowPremiumPromoToast(
std::shared_ptr<Main::SessionShow> show,
std::shared_ptr<::Main::SessionShow> show,
Fn<Window::SessionController*(
not_null<Main::Session*>)> resolveWindow,
not_null<::Main::Session*>)> resolveWindow,
TextWithEntities textWithLink,
const QString &ref) {
using WeakToast = base::weak_ptr<Ui::Toast::Instance>;
@@ -1669,7 +1764,7 @@ not_null<Ui::GradientButton*> CreateSubscribeButton(
Expects(args.show || args.controller);
auto show = args.show ? std::move(args.show) : args.controller->uiShow();
auto resolve = [show](not_null<Main::Session*> session) {
auto resolve = [show](not_null<::Main::Session*> session) {
Expects(session == &show->session());
return show->resolveWindow();
@@ -1760,7 +1855,7 @@ not_null<Ui::GradientButton*> CreateSubscribeButton(
}
std::vector<PremiumFeature> PremiumFeaturesOrder(
not_null<Main::Session*> session) {
not_null<::Main::Session*> session) {
const auto mtpOrder = session->appConfig().get<Order>(
"premium_promo_order",
FallbackOrder());
@@ -1993,4 +2088,9 @@ std::unique_ptr<Ui::RpWidget> MakeEmojiStatusPreview(
return result;
}
namespace Builder {
SectionBuildMethod PremiumSection = kMeta.build;
} // namespace Builder
} // namespace Settings
@@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "settings/settings_common.h"
#include "settings/settings_type.h"
class DocumentData;
@@ -114,10 +115,10 @@ void AddSummaryPremium(
[[nodiscard]] std::unique_ptr<Ui::RpWidget> MakeEmojiStatusPreview(
not_null<QWidget*> parent,
not_null<DocumentData*> document);
[[nodiscard]] std::unique_ptr<Ui::RpWidget> MakeEmojiSetStatusPreview(
not_null<QWidget*> parent,
not_null<PeerData*> peer,
not_null<DocumentData*> document);
namespace Builder {
extern SectionBuildMethod PremiumSection;
} // namespace Builder
} // namespace Settings
@@ -48,7 +48,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/sections/settings_global_ttl.h"
#include "settings/sections/settings_local_passcode.h"
#include "settings/sections/settings_passkeys.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/settings_privacy_controllers.h"
#include "settings/settings_websites.h"
#include "storage/storage_domain.h"
@@ -34,7 +34,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/view/history_view_message.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/sections/settings_privacy_security.h"
#include "ui/boxes/confirm_box.h"
#include "ui/chat/chat_style.h"
@@ -20,7 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "main/main_session.h"
#include "main/session/send_as_peers.h"
#include "lang/lang_keys.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "styles/style_calls.h"
#include "styles/style_chat.h"
#include "styles/style_chat_helpers.h"
@@ -24,7 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_peer_values.h"
#include "history/history.h"
#include "history/history_item.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "main/main_session.h"
#include "window/section_memento.h"
#include "window/window_slide_animation.h"
@@ -111,7 +111,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/cloud_password/settings_cloud_password_start.h"
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
#include "settings/sections/settings_main.h"
#include "settings/settings_premium.h"
#include "settings/sections/settings_premium.h"
#include "settings/sections/settings_privacy_security.h"
#include "styles/style_window.h"
#include "styles/style_boxes.h"