diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index d2d17a346d..5edb7c486f 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1560,8 +1560,8 @@ PRIVATE settings/settings_codes.h settings/settings_common_session.cpp settings/settings_common_session.h - settings/settings_credits.cpp - settings/settings_credits.h + settings/sections/settings_credits.cpp + settings/sections/settings_credits.h settings/settings_credits_graphics.cpp settings/settings_credits_graphics.h settings/settings_experimental.cpp diff --git a/Telegram/SourceFiles/boxes/star_gift_box.cpp b/Telegram/SourceFiles/boxes/star_gift_box.cpp index 5e1d66f77a..e83306ab67 100644 --- a/Telegram/SourceFiles/boxes/star_gift_box.cpp +++ b/Telegram/SourceFiles/boxes/star_gift_box.cpp @@ -74,7 +74,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "payments/payments_form.h" #include "payments/payments_checkout_process.h" #include "payments/payments_non_panel_process.h" -#include "settings/settings_credits.h" +#include "settings/sections/settings_credits.h" #include "settings/settings_credits_graphics.h" #include "settings/settings_premium.h" #include "ui/boxes/about_cocoon_box.h" // Ui::AddUniqueCloseButton diff --git a/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp b/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp index f013a9776e..1f756335cf 100644 --- a/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp +++ b/Telegram/SourceFiles/core/deep_links/deep_links_settings.cpp @@ -47,7 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_passkeys.h" #include "data/components/passkeys.h" #include "calls/calls_box_controller.h" -#include "settings/settings_credits.h" +#include "settings/sections/settings_credits.h" #include "settings/settings_folders.h" #include "settings/sections/settings_global_ttl.h" #include "settings/settings_information.h" diff --git a/Telegram/SourceFiles/core/local_url_handlers.cpp b/Telegram/SourceFiles/core/local_url_handlers.cpp index 2e45a35288..c6a1549349 100644 --- a/Telegram/SourceFiles/core/local_url_handlers.cpp +++ b/Telegram/SourceFiles/core/local_url_handlers.cpp @@ -56,7 +56,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "payments/payments_checkout_process.h" #include "settings/cloud_password/settings_cloud_password_login_email.h" #include "settings/sections/settings_active_sessions.h" -#include "settings/settings_credits.h" +#include "settings/sections/settings_credits.h" #include "settings/settings_credits_graphics.h" #include "settings/settings_information.h" #include "settings/sections/settings_global_ttl.h" diff --git a/Telegram/SourceFiles/history/view/history_view_about_view.cpp b/Telegram/SourceFiles/history/view/history_view_about_view.cpp index b5d6c869f3..9b4d16528a 100644 --- a/Telegram/SourceFiles/history/view/history_view_about_view.cpp +++ b/Telegram/SourceFiles/history/view/history_view_about_view.cpp @@ -37,7 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "main/main_session.h" #include "settings/business/settings_chat_intro.h" -#include "settings/settings_credits.h" // BuyStarsHandler +#include "settings/sections/settings_credits.h" // BuyStarsHandler #include "settings/settings_premium.h" #include "ui/chat/chat_style.h" #include "ui/text/custom_emoji_instance.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp index 6b10d54127..f6cbe64aeb 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp @@ -26,7 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_element.h" #include "lang/lang_keys.h" #include "main/main_session.h" -#include "settings/settings_credits.h" // Settings::CreditsId +#include "settings/sections/settings_credits.h" // Settings::CreditsId #include "settings/settings_credits_graphics.h" // GiftedCreditsBox #include "settings/settings_premium.h" // Settings::ShowGiftPremium #include "ui/chat/chat_style.h" diff --git a/Telegram/SourceFiles/settings/settings_credits.cpp b/Telegram/SourceFiles/settings/sections/settings_credits.cpp similarity index 96% rename from Telegram/SourceFiles/settings/settings_credits.cpp rename to Telegram/SourceFiles/settings/sections/settings_credits.cpp index b633840a4c..b9409e5154 100644 --- a/Telegram/SourceFiles/settings/settings_credits.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_credits.cpp @@ -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_credits.h" +#include "settings/sections/settings_credits.h" #include "api/api_credits.h" #include "api/api_earn.h" @@ -24,20 +24,24 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/bot/earn/info_bot_earn_widget.h" #include "info/bot/starref/info_bot_starref_common.h" #include "info/bot/starref/info_bot_starref_join_widget.h" -#include "info/channel_statistics/boosts/giveaway/boost_badge.h" // InfiniteRadialAnimationWidget. +#include "info/channel_statistics/boosts/giveaway/boost_badge.h" #include "info/channel_statistics/earn/earn_format.h" #include "info/channel_statistics/earn/earn_icons.h" #include "info/channel_statistics/earn/info_channel_earn_list.h" #include "info/info_memento.h" -#include "info/settings/info_settings_widget.h" // SectionCustomTopBarData. +#include "info/settings/info_settings_widget.h" #include "info/statistics/info_statistics_list_controllers.h" #include "lang/lang_keys.h" #include "main/main_session.h" +#include "settings/sections/settings_main.h" +#include "settings/settings_builder.h" #include "settings/settings_common.h" #include "settings/settings_common_session.h" #include "settings/settings_credits_graphics.h" #include "statistics/widgets/chart_header_widget.h" -#include "ui/boxes/boost_box.h" // Ui::StartFireworks. +#include "ui/boxes/boost_box.h" +#include "ui/controls/swipe_handler.h" +#include "ui/controls/swipe_handler_data.h" #include "ui/effects/animation_value_f.h" #include "ui/effects/credits_graphics.h" #include "ui/effects/premium_graphics.h" @@ -54,8 +58,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/fade_wrap.h" #include "ui/wrap/slide_wrap.h" #include "ui/wrap/vertical_layout.h" -#include "ui/controls/swipe_handler.h" -#include "ui/controls/swipe_handler_data.h" #include "window/window_session_controller.h" #include "styles/style_chat.h" #include "styles/style_chat_helpers.h" @@ -68,11 +70,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_statistics.h" #include "styles/style_menu_icons.h" #include "styles/style_channel_earn.h" -#include "styles/style_chat.h" namespace Settings { namespace { +using namespace Builder; + class Credits : public Section { public: Credits( @@ -918,6 +921,41 @@ void Credits::showFinished() { class Currency { }; +void BuildCreditsButtons(SectionBuilder &builder) { + builder.add(nullptr, [] { + return SearchEntry{ + .id = u"stars/stats"_q, + .title = tr::lng_credits_stats_button(tr::now), + .keywords = { u"statistics"_q }, + }; + }); + + builder.add(nullptr, [] { + return SearchEntry{ + .id = u"stars/gift"_q, + .title = tr::lng_credits_gift_button(tr::now), + .keywords = { u"send"_q, u"stars"_q }, + }; + }); + + builder.add(nullptr, [] { + return SearchEntry{ + .id = u"stars/earn"_q, + .title = tr::lng_credits_earn_button(tr::now), + .keywords = { u"affiliate"_q, u"referral"_q }, + }; + }); +} + +const auto kCreditsBuilderMeta = BuildHelper({ + .id = Credits::Id(), + .parentId = Main::Id(), + .title = &tr::lng_credits_summary_title, + .icon = &st::menuIconPremium, +}, [](SectionBuilder &builder) { + BuildCreditsButtons(builder); +}); + } // namespace template <> @@ -1023,4 +1061,9 @@ rpl::producer BuyStarsHandler::loadingValue() const { return _loading.value(); } +namespace Builder { + +SectionBuildMethod CreditsSection = kCreditsBuilderMeta.build; + +} // namespace Builder } // namespace Settings diff --git a/Telegram/SourceFiles/settings/settings_credits.h b/Telegram/SourceFiles/settings/sections/settings_credits.h similarity index 87% rename from Telegram/SourceFiles/settings/settings_credits.h rename to Telegram/SourceFiles/settings/sections/settings_credits.h index 63ebae985f..dfc02bd180 100644 --- a/Telegram/SourceFiles/settings/settings_credits.h +++ b/Telegram/SourceFiles/settings/sections/settings_credits.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "settings/settings_type.h" +#include "settings/settings_common.h" namespace Api { class CreditsTopupOptions; @@ -39,4 +39,9 @@ private: }; +namespace Builder { + +extern SectionBuildMethod CreditsSection; + +} // namespace Builder } // namespace Settings diff --git a/Telegram/SourceFiles/settings/sections/settings_main.cpp b/Telegram/SourceFiles/settings/sections/settings_main.cpp index 9584e8a649..b09e8ffd27 100644 --- a/Telegram/SourceFiles/settings/sections/settings_main.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_main.cpp @@ -46,7 +46,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/sections/settings_calls.h" #include "settings/sections/settings_chat.h" #include "settings/settings_codes.h" -#include "settings/settings_credits.h" +#include "settings/sections/settings_credits.h" #include "settings/settings_folders.h" #include "settings/settings_information.h" #include "settings/sections/settings_notifications.h" diff --git a/Telegram/SourceFiles/settings/settings_credits_graphics.cpp b/Telegram/SourceFiles/settings/settings_credits_graphics.cpp index d903fb8d40..ff6d7255c6 100644 --- a/Telegram/SourceFiles/settings/settings_credits_graphics.cpp +++ b/Telegram/SourceFiles/settings/settings_credits_graphics.cpp @@ -62,7 +62,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "payments/payments_form.h" #include "payments/payments_non_panel_process.h" #include "settings/settings_common_session.h" -#include "settings/settings_credits.h" +#include "settings/sections/settings_credits.h" #include "statistics/widgets/chart_header_widget.h" #include "ui/boxes/confirm_box.h" #include "ui/controls/button_labels.h" diff --git a/Telegram/SourceFiles/settings/settings_credits_graphics.h b/Telegram/SourceFiles/settings/settings_credits_graphics.h index 0d0fde918e..1f59c47e6f 100644 --- a/Telegram/SourceFiles/settings/settings_credits_graphics.h +++ b/Telegram/SourceFiles/settings/settings_credits_graphics.h @@ -66,12 +66,12 @@ struct SubscriptionRightLabel { QSize size; }; SubscriptionRightLabel PaintSubscriptionRightLabelCallback( - not_null session, + not_null<::Main::Session*> session, const style::PeerListItem &st, int amount); void FillCreditOptions( - std::shared_ptr show, + std::shared_ptr<::Main::SessionShow> show, not_null container, not_null peer, CreditsAmount minCredits, @@ -83,7 +83,7 @@ void FillCreditOptions( [[nodiscard]] not_null AddBalanceWidget( not_null parent, - not_null session, + not_null<::Main::Session*> session, rpl::producer balanceValue, bool rightAlign, rpl::producer opacityValue = nullptr, @@ -200,7 +200,7 @@ void GlobalStarGiftBox( not_null owner, const Data::SavedStarGift &data); [[nodiscard]] Data::SavedStarGiftId EntryToSavedStarGiftId( - not_null session, + not_null<::Main::Session*> session, const Data::CreditsHistoryEntry &entry); void ShowSavedStarGiftBox( not_null controller, @@ -292,7 +292,7 @@ struct SmallBalanceSource : std::variant< void SmallBalanceBox( not_null box, - std::shared_ptr show, + std::shared_ptr<::Main::SessionShow> show, uint64 wholeCredits, SmallBalanceSource source, Fn paid); @@ -305,7 +305,7 @@ enum class SmallBalanceResult { }; void MaybeRequestBalanceIncrease( - std::shared_ptr show, + std::shared_ptr<::Main::SessionShow> show, uint64 credits, SmallBalanceSource source, Fn done);