diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index b91b7cf0..aab885f6 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -208,10 +208,15 @@ QString WalletManager::maximumAllowedAmountAsString() const return WalletManager::displayAmount(WalletManager::maximumAllowedAmount()); } -QString WalletManager::displayAmount(quint64 amount, bool trailing_zeroes) +QString WalletManager::displayAmount(quint64 amount, bool trailing_zeroes, int decimals) { auto amountStr = QString::fromStdString(Monero::Wallet::displayAmount(amount)); + if (decimals < 12) { + int i = amountStr.indexOf("."); + amountStr.remove(i+decimals+1, 12); + } + if (!trailing_zeroes) { amountStr.remove(QRegExp("0+$")); amountStr.remove(QRegExp("\\.$")); diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index 156b497d..b43f83de 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -108,7 +108,7 @@ public: Q_INVOKABLE QString errorString() const; //! since we can't call static method from QML, move it to this class - Q_INVOKABLE static QString displayAmount(quint64 amount, bool trailing_zeroes = true); + Q_INVOKABLE static QString displayAmount(quint64 amount, bool trailing_zeroes = true, int decimals = 12); Q_INVOKABLE static quint64 amountFromString(const QString &amount); Q_INVOKABLE static quint64 amountFromDouble(double amount); Q_INVOKABLE quint64 maximumAllowedAmount() const; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 5c923ce3..af32a627 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -478,19 +478,20 @@ void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) { bool hide = config()->get(Config::hideBalance).toBool(); int displaySetting = config()->get(Config::balanceDisplay).toInt(); + int decimals = config()->get(Config::amountPrecision).toInt(); QString balance_str = "Balance: "; if (hide) { balance_str += "HIDDEN"; } else if (displaySetting == Config::totalBalance) { - balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(balance, false)); + balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(balance, false, decimals)); } else if (displaySetting == Config::spendable || displaySetting == Config::spendablePlusUnconfirmed) { - balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(spendable, false)); + balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(spendable, false, decimals)); if (displaySetting == Config::spendablePlusUnconfirmed && balance > spendable) { - balance_str += QString(" (+%1 XMR unconfirmed)").arg(WalletManager::displayAmount(balance - spendable, false)); + balance_str += QString(" (+%1 XMR unconfirmed)").arg(WalletManager::displayAmount(balance - spendable, false, decimals)); } } diff --git a/src/settings.cpp b/src/settings.cpp index 845f7a3c..fe3eb2c2 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -148,6 +148,7 @@ void Settings::comboBox_localMoneroFrontendChanged(int pos) { void Settings::comboBox_amountPrecisionChanged(int pos) { config()->set(Config::amountPrecision, pos); + m_ctx->updateBalance(); emit amountPrecisionChanged(pos); }