Added tooltip to balance label in credits settings for high values.

This commit is contained in:
23rd 2024-05-21 05:42:03 +03:00 committed by John Preston
parent 6336df2bd6
commit 42d6d0d58a
1 changed files with 42 additions and 1 deletions

View File

@ -30,6 +30,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/buttons.h"
#include "ui/widgets/discrete_sliders.h"
#include "ui/widgets/labels.h"
#include "ui/widgets/tooltip.h"
#include "ui/wrap/fade_wrap.h"
#include "ui/wrap/slide_wrap.h"
#include "ui/wrap/vertical_layout.h"
@ -49,6 +50,45 @@ namespace {
using SectionCustomTopBarData = Info::Settings::SectionCustomTopBarData;
class Balance final
: public Ui::RpWidget
, public Ui::AbstractTooltipShower {
public:
using Ui::RpWidget::RpWidget;
void setBalance(uint64 balance) {
_balance = balance;
_tooltip = Lang::FormatCountDecimal(balance);
}
void enterEventHook(QEnterEvent *e) override {
if (_balance >= 10'000) {
Ui::Tooltip::Show(1000, this);
}
}
void leaveEventHook(QEvent *e) override {
Ui::Tooltip::Hide();
}
QString tooltipText() const override {
return _tooltip;
}
QPoint tooltipPos() const override {
return QCursor::pos();
}
bool tooltipWindowActive() const override {
return Ui::AppInFocus() && Ui::InFocusChain(window());
}
private:
QString _tooltip;
uint64 _balance = 0;
};
[[nodiscard]] uint64 UniqueIdFromOption(
const Data::CreditTopupOption &d) {
const auto string = QString::number(d.credits)
@ -516,7 +556,7 @@ QPointer<Ui::RpWidget> Credits::createPinnedToTop(
}
}, content->lifetime());
const auto balance = Ui::CreateChild<Ui::RpWidget>(content);
const auto balance = Ui::CreateChild<Balance>(content);
{
const auto starSize = _balanceStar.size() / style::DevicePixelRatio();
const auto label = balance->lifetime().make_state<Ui::Text::String>(
@ -541,6 +581,7 @@ QPointer<Ui::RpWidget> Credits::createPinnedToTop(
count->setText(
st::semiboldTextStyle,
Lang::FormatCountToShort(slice.balance).string);
balance->setBalance(slice.balance);
resize();
});
balance->paintRequest(