From 4de71408a23bd75763a7097aac82b69173c92e8e Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 14 Jun 2022 14:54:30 +0400 Subject: [PATCH] Improve accounts limit box. --- .../SourceFiles/boxes/premium_limits_box.cpp | 12 +++++++-- .../ui/effects/premium_graphics.cpp | 27 +++++++++++++++---- .../SourceFiles/ui/effects/premium_graphics.h | 5 ++++ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/boxes/premium_limits_box.cpp b/Telegram/SourceFiles/boxes/premium_limits_box.cpp index 5440e8bcc5..4e7c03b4e3 100644 --- a/Telegram/SourceFiles/boxes/premium_limits_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_limits_box.cpp @@ -977,13 +977,21 @@ void AccountsLimitBox( BoxShowFinishes(box), 0, current, - (current > defaultLimit) ? current : (defaultLimit * 2), + (!premiumPossible + ? (current * 2) + : (current > defaultLimit) + ? (current + 1) + : (defaultLimit * 2)), premiumPossible, std::nullopt, &st::premiumIconAccounts); Settings::AddSkip(top, st::premiumLineTextSkip); if (premiumPossible) { - Ui::Premium::AddLimitRow(top, 0, std::nullopt, defaultLimit); + Ui::Premium::AddLimitRow( + top, + (QString::number(std::max(current, defaultLimit) + 1) + + ((current + 1 == premiumLimit) ? "" : "+")), + QString::number(defaultLimit)); Settings::AddSkip(top, st::premiumInfographicPadding.bottom()); } box->setTitle(tr::lng_accounts_limit_title()); diff --git a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp index 5a12aa9ae3..448966a90f 100644 --- a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp +++ b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp @@ -454,6 +454,7 @@ public: int max, TextFactory textFactory, int min); + Line(not_null parent, QString max, QString min); void setColorOverride(QBrush brush); @@ -483,11 +484,18 @@ Line::Line( int max, TextFactory textFactory, int min) +: Line( + parent, + max ? textFactory(max) : QString(), + min ? textFactory(min) : QString()) { +} + +Line::Line(not_null parent, QString max, QString min) : Ui::RpWidget(parent) , _leftText(st::semiboldTextStyle, tr::lng_premium_free(tr::now)) , _rightText(st::semiboldTextStyle, tr::lng_premium(tr::now)) -, _rightLabel(st::semiboldTextStyle, max ? textFactory(max) : QString()) -, _leftLabel(st::semiboldTextStyle, min ? textFactory(min) : QString()) { +, _rightLabel(st::semiboldTextStyle, max) +, _leftLabel(st::semiboldTextStyle, min) { resize(width(), st::requestsAcceptButton.height); sizeValue( @@ -626,14 +634,23 @@ void AddBubbleRow( }, bubble->lifetime()); } +void AddLimitRow( + not_null parent, + QString max, + QString min) { + parent->add(object_ptr(parent, max, min), st::boxRowPadding); +} + void AddLimitRow( not_null parent, int max, std::optional> phrase, int min) { - parent->add( - object_ptr(parent, max, ProcessTextFactory(phrase), min), - st::boxRowPadding); + const auto factory = ProcessTextFactory(phrase); + AddLimitRow( + parent, + max ? factory(max) : QString(), + min ? factory(min) : QString()); } void AddAccountsRow( diff --git a/Telegram/SourceFiles/ui/effects/premium_graphics.h b/Telegram/SourceFiles/ui/effects/premium_graphics.h index c156433200..ede3346ebf 100644 --- a/Telegram/SourceFiles/ui/effects/premium_graphics.h +++ b/Telegram/SourceFiles/ui/effects/premium_graphics.h @@ -39,6 +39,11 @@ void AddBubbleRow( std::optional> phrase, const style::icon *icon); +void AddLimitRow( + not_null parent, + QString max, + QString min = {}); + void AddLimitRow( not_null parent, int max,