Rounded earn values from overview to two decimal digits.

This commit is contained in:
23rd 2024-10-31 16:04:30 +03:00
parent 68cc42047e
commit 46ab553fa5
6 changed files with 29 additions and 12 deletions

View file

@ -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();
}));
}

View file

@ -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

View file

@ -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

View file

@ -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<Ui::FlatLabel>(
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<Ui::FlatLabel>(
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<Ui::FlatLabel>(
container,
ToUsd(value, multiplier),
ToUsd(value, multiplier, 0),
st::channelEarnOverviewSubMinorLabel)));
Ui::AddSkip(container);

View file

@ -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);
}

View file

@ -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));
}