From e9650385adc153e8754235b961e9a76fed337ac1 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 29 Jul 2024 10:26:47 +0300 Subject: [PATCH] Added ability to provide custom style to widget with infinite animation. --- .../boosts/giveaway/boost_badge.cpp | 17 +++++++++++------ .../boosts/giveaway/boost_badge.h | 4 +++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.cpp b/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.cpp index feb6d395e..aea01c592 100644 --- a/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.cpp @@ -20,12 +20,17 @@ namespace Info::Statistics { not_null InfiniteRadialAnimationWidget( not_null parent, - int size) { + int size, + const style::InfiniteRadialAnimation *st) { class Widget final : public Ui::RpWidget { public: - Widget(not_null p, int size) + Widget( + not_null p, + int size, + const style::InfiniteRadialAnimation *st) : Ui::RpWidget(p) - , _animation([=] { update(); }, st::startGiveawayButtonLoading) { + , _st(st ? st : &st::startGiveawayButtonLoading) + , _animation([=] { update(); }, *_st) { resize(size, size); shownValue() | rpl::start_with_next([=](bool v) { return v @@ -39,17 +44,17 @@ not_null InfiniteRadialAnimationWidget( auto p = QPainter(this); p.setPen(st::activeButtonFg); p.setBrush(st::activeButtonFg); - const auto r = rect() - - Margins(st::startGiveawayButtonLoading.thickness); + const auto r = rect() - Margins(_st->thickness); _animation.draw(p, r.topLeft(), r.size(), width()); } private: + const style::InfiniteRadialAnimation *_st; Ui::InfiniteRadialAnimation _animation; }; - return Ui::CreateChild(parent.get(), size); + return Ui::CreateChild(parent.get(), size, st); } void AddChildToWidgetCenter( diff --git a/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.h b/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.h index 221f6017f..bc42a9d1c 100644 --- a/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.h +++ b/Telegram/SourceFiles/info/channel_statistics/boosts/giveaway/boost_badge.h @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #pragma once namespace style { +struct InfiniteRadialAnimation; struct TextStyle; } // namespace style @@ -30,7 +31,8 @@ namespace Info::Statistics { [[nodiscard]] not_null InfiniteRadialAnimationWidget( not_null parent, - int size); + int size, + const style::InfiniteRadialAnimation *st = nullptr); void AddChildToWidgetCenter( not_null parent,