Skip to content

Commit

Permalink
balance: add fiat balance
Browse files Browse the repository at this point in the history
  • Loading branch information
tobtoht committed Mar 4, 2025
1 parent 88ab38a commit e7a6e4f
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 27 deletions.
23 changes: 22 additions & 1 deletion src/dialog/BalanceDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
91 changes: 65 additions & 26 deletions src/dialog/BalanceDialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,39 @@
<rect>
<x>0</x>
<y>0</y>
<width>405</width>
<height>162</height>
<width>202</width>
<height>140</height>
</rect>
</property>
<property name="windowTitle">
<string>Account Balance</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="HelpLabel" name="label_unconfirmed_help">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1">
<widget class="QLabel" name="label_spendable">
<property name="text">
<string>Unconfirmed</string>
<string>0.0</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_unconfirmed">
<item row="3" column="1">
<widget class="QLabel" name="label_total">
<property name="text">
<string>0.0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
Expand All @@ -43,43 +49,76 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_spendable">
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Total</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_unconfirmed">
<property name="text">
<string>0.0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="0" column="0">
<widget class="HelpLabel" name="label_unconfirmed_help">
<property name="text">
<string>Unconfirmed</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<item row="0" column="2">
<widget class="QLabel" name="label_unconfirmedFiat">
<property name="text">
<string>Total</string>
<string>(0)</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_total">
<item row="1" column="2">
<widget class="QLabel" name="label_spendableFiat">
<property name="text">
<string>0.0</string>
<string>(0)</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="label_totalFiat">
<property name="text">
<string>(0)</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
<set>Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
Expand All @@ -88,10 +127,10 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::StandardButton::Ok</set>
</property>
</widget>
</item>
Expand Down
13 changes: 13 additions & 0 deletions src/utils/prices.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
#include <QJsonArray>
#include <QJsonObject>

#include "config.h"
#include "constants.h"

Prices::Prices(QObject *parent)
: QObject(parent)
{
Expand Down Expand Up @@ -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;
}
1 change: 1 addition & 0 deletions src/utils/prices.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit e7a6e4f

Please sign in to comment.