From fda1c8399ff3793f5f158d7ba154dd4bfb270388 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 10 Jun 2025 04:08:57 +0300 Subject: [PATCH] Added icon to big button in credits settings. --- Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/settings/settings.style | 9 +---- .../SourceFiles/settings/settings_credits.cpp | 37 +++++++++++++++++-- Telegram/SourceFiles/ui/effects/credits.style | 2 +- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 225fb6b75a..b61b02a1ae 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2797,6 +2797,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_credits_balance_me" = "your balance"; "lng_credits_balance_me_count" = "Your balance: {emoji} {amount}"; "lng_credits_buy_button" = "Top Up Balance"; +"lng_credits_topup_button" = "{emoji} Top Up Balance"; "lng_credits_buy_button_short" = "Top Up"; "lng_credits_stats_button_short" = "Stats"; "lng_credits_stats_button" = "View Statistics"; diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 6cb2d637bd..b153dbe371 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -698,14 +698,7 @@ settingsGiftIconEmoji: IconEmoji { padding: margins(1px, 2px, 1px, 0px); } -settingsCreditsButtonBuy: RoundButton(inviteLinkCopy) { - icon: icon {{ "settings/add", activeButtonFg, point(0px, 7px) }}; - iconOver: icon {{ "settings/add", activeButtonFgOver, point(0px, 7px) }}; -} -settingsCreditsButtonStats: RoundButton(inviteLinkCopy) { - icon: icon {{ "info/edit/links_share", activeButtonFg }}; - iconOver: icon {{ "info/edit/links_share", activeButtonFgOver }}; -} +settingsCreditsButtonBuyIcon: icon {{ "settings/add", windowBgActive, point(7px, 0px) }}; settingsCreditsButton: SettingsButton(settingsButton) { padding: margins(62px, 8px, 22px, 8px); diff --git a/Telegram/SourceFiles/settings/settings_credits.cpp b/Telegram/SourceFiles/settings/settings_credits.cpp index 750dce522d..c275075265 100644 --- a/Telegram/SourceFiles/settings/settings_credits.cpp +++ b/Telegram/SourceFiles/settings/settings_credits.cpp @@ -405,12 +405,41 @@ void Credits::setupContent() { content, object_ptr( content, - rpl::conditional( - state->buyStars.loadingValue(), - rpl::single(QString()), - tr::lng_credits_buy_button()), + nullptr, st::creditsSettingsBigBalanceButton)), st::boxRowPadding)->entity(); + button->setContext([&]() -> Ui::Text::MarkedContext { + auto customEmojiFactory = [=](const auto &...) { + const auto &icon = st::settingsIconAdd; + auto image = QImage( + (icon.size() + QSize(st::lineWidth * 4, 0)) + * style::DevicePixelRatio(), + QImage::Format_ARGB32_Premultiplied); + const auto r = Rect(icon.size()) - Margins(st::lineWidth * 2); + image.setDevicePixelRatio(style::DevicePixelRatio()); + image.fill(Qt::transparent); + { + auto p = QPainter(&image); + auto hq = PainterHighQualityEnabler(p); + p.setPen(Qt::NoPen); + p.setBrush(st::activeButtonFg); + p.drawEllipse(r); + icon.paintInCenter(p, r, st::windowBgActive->c); + } + return std::make_unique( + std::move(image), + u"topup_button"_q); + }; + return { .customEmojiFactory = std::move(customEmojiFactory) }; + }()); + button->setText( + rpl::conditional( + state->buyStars.loadingValue(), + rpl::single(TextWithEntities()), + tr::lng_credits_topup_button( + lt_emoji, + rpl::single(Ui::Text::SingleCustomEmoji(u"+"_q)), + Ui::Text::WithEntities))); button->setTextTransform(Ui::RoundButton::TextTransform::NoTransform); const auto show = _controller->uiShow(); button->setClickedCallback(state->buyStars.handler(show, paid)); diff --git a/Telegram/SourceFiles/ui/effects/credits.style b/Telegram/SourceFiles/ui/effects/credits.style index 8692635d54..01946d7edd 100644 --- a/Telegram/SourceFiles/ui/effects/credits.style +++ b/Telegram/SourceFiles/ui/effects/credits.style @@ -20,7 +20,7 @@ creditsSettingsBigBalanceSkip: 4px; creditsSettingsBigBalanceButton: RoundButton(defaultActiveButton) { width: 240px; height: 40px; - textTop: 12px; + textTop: 11px; style: semiboldTextStyle; } creditsSettingsBigBalanceButtonGift: RoundButton(defaultLightButton) {