diff --git a/Telegram/SourceFiles/info/bot/earn/info_bot_earn_list.cpp b/Telegram/SourceFiles/info/bot/earn/info_bot_earn_list.cpp index 8f612343e..a1ec88936 100644 --- a/Telegram/SourceFiles/info/bot/earn/info_bot_earn_list.cpp +++ b/Telegram/SourceFiles/info/bot/earn/info_bot_earn_list.cpp @@ -116,6 +116,7 @@ void InnerWidget::fill() { const auto container = this; const auto &data = _state; const auto multiplier = data.usdRate * Data::kEarnMultiplier; + constexpr auto kMinorLength = 3; auto availableBalanceValue = rpl::single( data.availableBalance @@ -166,7 +167,7 @@ void InnerWidget::fill() { std::move( value ) | rpl::map([=](uint64 v) { - return v ? ToUsd(v, multiplier) : QString(); + return v ? ToUsd(v, multiplier, kMinorLength) : QString(); }), st::channelEarnOverviewSubMinorLabel); rpl::combine( @@ -243,7 +244,7 @@ void InnerWidget::fill() { return !dt.isNull() || (!_state.isWithdrawalEnabled); }), rpl::duplicate(availableBalanceValue) | rpl::map([=](uint64 v) { - return v ? ToUsd(v, multiplier) : QString(); + return v ? ToUsd(v, multiplier, kMinorLength) : QString(); })); } diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.cpp index 4f87fa505..11f17b8b3 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.cpp @@ -46,7 +46,10 @@ QString MinorPart(EarnInt value) { return result.chopped(zeroCount); } -QString ToUsd(EarnInt value, float64 rate) { +QString ToUsd( + Data::EarnInt value, + float64 rate, + int afterFloat) { constexpr auto kApproximately = QChar(0x2248); const auto result = value @@ -56,7 +59,9 @@ QString ToUsd(EarnInt value, float64 rate) { return QString(kApproximately) + QChar('$') + MajorPart(result) - + MinorPart(result); + + ((afterFloat > 0) + ? MinorPart(result).left(afterFloat) + : MinorPart(result)); } } // namespace Info::ChannelEarn diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.h b/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.h index 4a7b401ab..7fcd19b4d 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/earn_format.h @@ -13,6 +13,9 @@ namespace Info::ChannelEarn { [[nodiscard]] QString MajorPart(Data::EarnInt value); [[nodiscard]] QString MinorPart(Data::EarnInt value); -[[nodiscard]] QString ToUsd(Data::EarnInt value, float64 rate); +[[nodiscard]] QString ToUsd( + Data::EarnInt value, + float64 rate, + int afterFloat); } // namespace Info::ChannelEarn diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp index d4071225d..c7b2806e4 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp @@ -374,6 +374,7 @@ void InnerWidget::fill() { ) | rpl::map([this] { return _state.creditsEarn; }) ); + constexpr auto kMinorLength = 3; constexpr auto kMinus = QChar(0x2212); //constexpr auto kApproximately = QChar(0x2248); const auto multiplier = data.usdRate; @@ -381,7 +382,7 @@ void InnerWidget::fill() { const auto creditsToUsdMap = [=](EarnInt c) { const auto creditsMultiplier = _state.creditsEarn.usdRate * Data::kEarnMultiplier; - return c ? ToUsd(c, creditsMultiplier) : QString(); + return c ? ToUsd(c, creditsMultiplier, 0) : QString(); }; const auto session = &_peer->session(); @@ -715,14 +716,18 @@ void InnerWidget::fill() { {}); const auto minorLabel = Ui::CreateChild( line, - rpl::duplicate(currencyValue) | rpl::map(MinorPart), + rpl::duplicate(currencyValue) | rpl::map([=](EarnInt v) { + return MinorPart(v).left(kMinorLength); + }), st::channelEarnOverviewMinorLabel); const auto secondMinorLabel = Ui::CreateChild( line, std::move( currencyValue ) | rpl::map([=](EarnInt value) { - return value ? ToUsd(value, multiplier) : QString(); + return value + ? ToUsd(value, multiplier, kMinorLength) + : QString(); }), st::channelEarnOverviewSubMinorLabel); @@ -883,7 +888,7 @@ void InnerWidget::fill() { container, object_ptr( container, - ToUsd(value, multiplier), + ToUsd(value, multiplier, 0), st::channelEarnOverviewSubMinorLabel))); Ui::AddSkip(container); diff --git a/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp b/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp index ac9dc4582..8a94d1084 100644 --- a/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp +++ b/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp @@ -43,7 +43,7 @@ void ChartRulersView::setChartData( return FormatF(value / float64(Data::kEarnMultiplier)); }; _rightCustomCaption = [=, rate = chartData.currencyRate](float64 v) { - return Info::ChannelEarn::ToUsd(v, rate); + return Info::ChannelEarn::ToUsd(v, rate, 0); }; _rightPen = QPen(st::windowSubTextFg); } diff --git a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp index dc0668e9a..1091c99f1 100644 --- a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp +++ b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp @@ -186,7 +186,10 @@ PointDetailsWidget::PointDetailsWidget( QString::number(value / multiplier)); const auto usdText = Ui::Text::String( _textStyle, - Info::ChannelEarn::ToUsd(value, _chartData.currencyRate)); + Info::ChannelEarn::ToUsd( + value, + _chartData.currencyRate, + 0)); const auto width = std::max( usdText.maxWidth(), valueText.maxWidth()); @@ -351,7 +354,7 @@ void PointDetailsWidget::setXIndex(int xIndex) { _textStyle, Info::ChannelEarn::ToUsd( dataLine.y[xIndex], - _chartData.currencyRate)); + _chartData.currencyRate, 0)); } _lines.push_back(std::move(textLine)); }