From 43347f671ca32684fa17ddf6ec2a82f7060f8b44 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 5 Dec 2025 11:06:14 +0400 Subject: [PATCH] Show rarity in gift variants preview. --- .../boxes/star_gift_preview_box.cpp | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/boxes/star_gift_preview_box.cpp b/Telegram/SourceFiles/boxes/star_gift_preview_box.cpp index 9ba4b6140e..fe754275db 100644 --- a/Telegram/SourceFiles/boxes/star_gift_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/star_gift_preview_box.cpp @@ -310,6 +310,9 @@ AttributeButton::AttributeButton( void AttributeButton::setup() { v::match(_descriptor, [&](const auto &data) { _name.setText(st::uniqueAttributeName, data.name); + _percent.setText( + st::uniqueAttributePercent, + QString::number(data.rarityPermille / 10.) + '%'); }); v::match(_descriptor, [&](const GiftBackdrop &data) { @@ -652,6 +655,34 @@ void AttributeButton::paintEvent(QPaintEvent *e) { .availableWidth = singlew, .align = style::al_top, }); + + p.setPen(Qt::NoPen); + p.setBrush(model + ? anim::color(st::windowBgOver, st::windowBgActive, progress) + : backdrop + ? backdrop->patternColor + : _delegate->patternColor()); + const auto ppadding = st::uniqueAttributePercentPadding; + const auto add = int(std::ceil(style::ConvertScaleExact(6.))); + const auto pradius = std::max(st::giftBoxGiftRadius - add, 1); + const auto left = position.x() + + singlew + - add + - ppadding.right() + - _percent.maxWidth(); + const auto top = position.y() + add + ppadding.top(); + const auto percent = QRect( + left, + top, + _percent.maxWidth(), + st::uniqueAttributeType.font->height); + p.drawRoundedRect(percent.marginsAdded(ppadding), pradius, pradius); + p.setPen(model + ? anim::color(st::windowSubTextFg, st::windowFgActive, progress) + : QColor(255, 255, 255)); + _percent.draw(p, { + .position = percent.topLeft(), + }); } Delegate::Delegate(Fn fullUpdate) @@ -980,7 +1011,7 @@ AttributesList::AttributesList( }, lifetime()); } -auto AttributesList::selected() const ->rpl::producer { +auto AttributesList::selected() const -> rpl::producer { return _selected.value(); }