From e7a6e4f16a9666c25535589b086ab168b478dbe9 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Tue, 4 Mar 2025 11:01:17 +0100 Subject: [PATCH] balance: add fiat balance --- src/dialog/BalanceDialog.cpp | 23 ++++++++- src/dialog/BalanceDialog.ui | 91 +++++++++++++++++++++++++----------- src/utils/prices.cpp | 13 ++++++ src/utils/prices.h | 1 + 4 files changed, 101 insertions(+), 27 deletions(-) diff --git a/src/dialog/BalanceDialog.cpp b/src/dialog/BalanceDialog.cpp index 7ffd2d0f..451833bd 100644 --- a/src/dialog/BalanceDialog.cpp +++ b/src/dialog/BalanceDialog.cpp @@ -6,6 +6,9 @@ #include "libwalletqt/WalletManager.h" #include "utils/Utils.h" +#include "utils/config.h" +#include "utils/AppData.h" +#include "constants.h" BalanceDialog::BalanceDialog(QWidget *parent, Wallet *wallet) : WindowModalDialog(parent) @@ -23,15 +26,33 @@ BalanceDialog::BalanceDialog(QWidget *parent, Wallet *wallet) ui->label_spendable->setFont(Utils::getMonospaceFont()); ui->label_total->setFont(Utils::getMonospaceFont()); + ui->label_unconfirmedFiat->setFont(Utils::getMonospaceFont()); + ui->label_spendableFiat->setFont(Utils::getMonospaceFont()); + ui->label_totalFiat->setFont(Utils::getMonospaceFont()); + + if (conf()->get(Config::disableWebsocket).toBool()) { + ui->label_unconfirmedFiat->hide(); + ui->label_spendableFiat->hide(); + ui->label_totalFiat->hide(); + } + this->updateBalance(); this->adjustSize(); } void BalanceDialog::updateBalance() { - ui->label_unconfirmed->setText(WalletManager::displayAmount(m_wallet->balance() - m_wallet->unlockedBalance())); + quint64 unconfirmedBalance = m_wallet->balance() - m_wallet->unlockedBalance(); + + ui->label_unconfirmed->setText(WalletManager::displayAmount(unconfirmedBalance)); ui->label_spendable->setText(WalletManager::displayAmount(m_wallet->unlockedBalance())); ui->label_total->setText(WalletManager::displayAmount(m_wallet->balance())); + + if (!conf()->get(Config::disableWebsocket).toBool()) { + ui->label_unconfirmedFiat->setText(appData()->prices.atomicUnitsToPreferredFiatString(unconfirmedBalance)); + ui->label_spendableFiat->setText(appData()->prices.atomicUnitsToPreferredFiatString(m_wallet->unlockedBalance())); + ui->label_totalFiat->setText(appData()->prices.atomicUnitsToPreferredFiatString(m_wallet->balance())); + } } BalanceDialog::~BalanceDialog() = default; diff --git a/src/dialog/BalanceDialog.ui b/src/dialog/BalanceDialog.ui index b09ed90f..b240af3b 100644 --- a/src/dialog/BalanceDialog.ui +++ b/src/dialog/BalanceDialog.ui @@ -6,8 +6,8 @@ 0 0 - 405 - 162 + 202 + 140 @@ -15,24 +15,30 @@ - - - + + + - Unconfirmed + 0.0 + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - - + + 0.0 - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse @@ -43,43 +49,76 @@ - - + + + + Total + + + + + 0.0 - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - + + + + Unconfirmed + + + + - Qt::Horizontal + Qt::Orientation::Horizontal - - + + - Total + (0) + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - - + + - 0.0 + (0) + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse + + + + + + + (0) - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse @@ -88,10 +127,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Ok diff --git a/src/utils/prices.cpp b/src/utils/prices.cpp index 46e5f7ac..10ac77f1 100644 --- a/src/utils/prices.cpp +++ b/src/utils/prices.cpp @@ -6,6 +6,9 @@ #include #include +#include "config.h" +#include "constants.h" + Prices::Prices(QObject *parent) : QObject(parent) { @@ -74,3 +77,13 @@ double Prices::convert(QString symbolFrom, QString symbolTo, double amount) { return 0.0; } +QString Prices::atomicUnitsToPreferredFiatString(quint64 amount, bool wrapInParens) { + QString fiatCurrency = conf()->get(Config::preferredFiatCurrency).toString(); + double fiatAmount = convert("XMR", fiatCurrency, amount / constants::cdiv); + QString currencyString = Utils::amountToCurrencyString(fiatAmount, fiatCurrency); + + if (wrapInParens) { + return QString("(%1)").arg(currencyString); + } + return currencyString; +} diff --git a/src/utils/prices.h b/src/utils/prices.h index 55d77902..8972c0e9 100644 --- a/src/utils/prices.h +++ b/src/utils/prices.h @@ -30,6 +30,7 @@ public slots: void fiatPricesReceived(const QJsonObject &data); double convert(QString symbolFrom, QString symbolTo, double amount); + QString atomicUnitsToPreferredFiatString(quint64 amount, bool wrapInParens = false); signals: void fiatPricesUpdated(); -- 2.52.0