From 23c9f7a957ebbc0f5f1b6113c5d3d7703a44d24b Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 26 Jan 2025 09:06:44 +0300 Subject: [PATCH] Added entities support to title from ServiceBoxContent. --- .../history/view/history_view_about_view.cpp | 6 ++--- .../view/media/history_view_premium_gift.cpp | 26 ++++++++++++------- .../view/media/history_view_premium_gift.h | 2 +- .../view/media/history_view_service_box.cpp | 19 +++++++++++--- .../view/media/history_view_service_box.h | 2 +- .../view/media/history_view_story_mention.cpp | 4 +-- .../view/media/history_view_story_mention.h | 2 +- .../media/history_view_theme_document.cpp | 4 +-- .../view/media/history_view_theme_document.h | 2 +- .../media/history_view_userpic_suggestion.cpp | 4 +-- .../media/history_view_userpic_suggestion.h | 2 +- 11 files changed, 46 insertions(+), 27 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_about_view.cpp b/Telegram/SourceFiles/history/view/history_view_about_view.cpp index 10f4bd8a9..452f595ac 100644 --- a/Telegram/SourceFiles/history/view/history_view_about_view.cpp +++ b/Telegram/SourceFiles/history/view/history_view_about_view.cpp @@ -49,7 +49,7 @@ public: int width() override; int top() override; QSize size() override; - QString title() override; + TextWithEntities title() override; TextWithEntities subtitle() override; int buttonSkip() override; rpl::producer button() override; @@ -162,8 +162,8 @@ QSize PremiumRequiredBox::size() { return { st::msgServicePhotoWidth, st::msgServicePhotoWidth }; } -QString PremiumRequiredBox::title() { - return QString(); +TextWithEntities PremiumRequiredBox::title() { + return {}; } int PremiumRequiredBox::buttonSkip() { 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 cd8da2ce3..e470b194c 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp @@ -66,29 +66,35 @@ QSize PremiumGift::size() { st::msgServiceGiftBoxStickerSize); } -QString PremiumGift::title() { +TextWithEntities PremiumGift::title() { + using namespace Ui::Text; if (starGift()) { const auto peer = _parent->history()->peer; return peer->isSelf() - ? tr::lng_action_gift_self_subtitle(tr::now) + ? tr::lng_action_gift_self_subtitle(tr::now, WithEntities) : peer->isServiceUser() - ? tr::lng_gift_link_label_gift(tr::now) + ? tr::lng_gift_link_label_gift(tr::now, WithEntities) : (outgoingGift() ? tr::lng_action_gift_sent_subtitle : tr::lng_action_gift_got_subtitle)( tr::now, lt_user, - peer->shortName()); + WithEntities(peer->shortName()), + WithEntities); } else if (creditsPrize()) { - return tr::lng_prize_title(tr::now); - } else if (const auto count = credits()) { - return tr::lng_gift_stars_title(tr::now, lt_count, count); + return tr::lng_prize_title(tr::now, WithEntities); + } else if (const auto c = credits()) { + return tr::lng_gift_stars_title(tr::now, lt_count, c, WithEntities); } return gift() - ? tr::lng_action_gift_premium_months(tr::now, lt_count, _data.count) + ? tr::lng_action_gift_premium_months( + tr::now, + lt_count, + _data.count, + WithEntities) : _data.unclaimed - ? tr::lng_prize_unclaimed_title(tr::now) - : tr::lng_prize_title(tr::now); + ? tr::lng_prize_unclaimed_title(tr::now, WithEntities) + : tr::lng_prize_title(tr::now, WithEntities); } TextWithEntities PremiumGift::subtitle() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.h b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.h index fe8cc312d..86a30c094 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.h +++ b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.h @@ -28,7 +28,7 @@ public: int top() override; int width() override; QSize size() override; - QString title() override; + TextWithEntities title() override; TextWithEntities subtitle() override; rpl::producer button() override; bool buttonMinistars() override; diff --git a/Telegram/SourceFiles/history/view/media/history_view_service_box.cpp b/Telegram/SourceFiles/history/view/media/history_view_service_box.cpp index fc81e9fec..08444c490 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_service_box.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_service_box.cpp @@ -45,8 +45,12 @@ ServiceBox::ServiceBox( , _title( st::defaultSubsectionTitle.style, _content->title(), - kDefaultTextOptions, - _maxWidth) + kMarkupTextOptions, + _maxWidth, + Core::MarkedTextContext{ + .session = &parent->history()->session(), + .customEmojiRepaint = [parent] { parent->customEmojiRepaint(); }, + }) , _subtitle( st::premiumPreviewAbout.style, Ui::Text::Filtered( @@ -148,7 +152,16 @@ void ServiceBox::draw(Painter &p, const PaintContext &context) const { const auto &padding = st::msgServiceGiftBoxTitlePadding; top += padding.top(); if (!_title.isEmpty()) { - _title.draw(p, st::msgPadding.left(), top, _maxWidth, style::al_top); + _title.draw(p, { + .position = QPoint(st::msgPadding.left(), top), + .availableWidth = _maxWidth, + .align = style::al_top, + .palette = &context.st->serviceTextPalette(), + .spoiler = Ui::Text::DefaultSpoilerCache(), + .now = context.now, + .pausedEmoji = context.paused || On(PowerSaving::kEmojiChat), + .pausedSpoiler = context.paused || On(PowerSaving::kChatSpoiler), + }); top += _title.countHeight(_maxWidth) + padding.bottom(); } _parent->prepareCustomEmojiPaint(p, context, _subtitle); diff --git a/Telegram/SourceFiles/history/view/media/history_view_service_box.h b/Telegram/SourceFiles/history/view/media/history_view_service_box.h index 822251186..7aced5925 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_service_box.h +++ b/Telegram/SourceFiles/history/view/media/history_view_service_box.h @@ -26,7 +26,7 @@ public: [[nodiscard]] virtual int width(); [[nodiscard]] virtual int top() = 0; [[nodiscard]] virtual QSize size() = 0; - [[nodiscard]] virtual QString title() = 0; + [[nodiscard]] virtual TextWithEntities title() = 0; [[nodiscard]] virtual TextWithEntities subtitle() = 0; [[nodiscard]] virtual int buttonSkip() { return top(); diff --git a/Telegram/SourceFiles/history/view/media/history_view_story_mention.cpp b/Telegram/SourceFiles/history/view/media/history_view_story_mention.cpp index a2b2d65ba..7356e7b03 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_story_mention.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_story_mention.cpp @@ -68,8 +68,8 @@ QSize StoryMention::size() { return { st::msgServicePhotoWidth, st::msgServicePhotoWidth }; } -QString StoryMention::title() { - return QString(); +TextWithEntities StoryMention::title() { + return {}; } int StoryMention::buttonSkip() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_story_mention.h b/Telegram/SourceFiles/history/view/media/history_view_story_mention.h index 601823460..18d428477 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_story_mention.h +++ b/Telegram/SourceFiles/history/view/media/history_view_story_mention.h @@ -30,7 +30,7 @@ public: int top() override; QSize size() override; - QString title() override; + TextWithEntities title() override; TextWithEntities subtitle() override; int buttonSkip() override; rpl::producer button() override; diff --git a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp index ba324f7e3..16ca49083 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp @@ -509,8 +509,8 @@ QSize ThemeDocumentBox::size() { : QSize(st::msgServicePhotoWidth, st::msgServicePhotoWidth); } -QString ThemeDocumentBox::title() { - return QString(); +TextWithEntities ThemeDocumentBox::title() { + return {}; } TextWithEntities ThemeDocumentBox::subtitle() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_theme_document.h b/Telegram/SourceFiles/history/view/media/history_view_theme_document.h index 3e1d34ecf..2c7d515d9 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_theme_document.h +++ b/Telegram/SourceFiles/history/view/media/history_view_theme_document.h @@ -97,7 +97,7 @@ public: int top() override; QSize size() override; - QString title() override; + TextWithEntities title() override; TextWithEntities subtitle() override; rpl::producer button() override; void draw( diff --git a/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.cpp b/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.cpp index 22cdd47ac..6e5252add 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.cpp @@ -197,8 +197,8 @@ QSize UserpicSuggestion::size() { return { _photo.maxWidth(), _photo.minHeight() }; } -QString UserpicSuggestion::title() { - return QString(); +TextWithEntities UserpicSuggestion::title() { + return {}; } rpl::producer UserpicSuggestion::button() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.h b/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.h index 93aaca380..f9a19581f 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.h +++ b/Telegram/SourceFiles/history/view/media/history_view_userpic_suggestion.h @@ -29,7 +29,7 @@ public: int top() override; QSize size() override; - QString title() override; + TextWithEntities title() override; TextWithEntities subtitle() override; rpl::producer button() override; void draw(