settings: add option to show fiat balance in statusbar

This commit is contained in:
tobtoht 2024-10-04 16:08:51 +02:00
parent 00915ee8a0
commit da0d7e7100
No known key found for this signature in database
GPG key ID: E45B10DD027D2472
8 changed files with 37 additions and 4 deletions

View file

@ -116,6 +116,9 @@ MainWindow::MainWindow(WindowManager *windowManager, Wallet *wallet, QWidget *pa
this->onWalletOpened(); this->onWalletOpened();
connect(&appData()->prices, &Prices::fiatPricesUpdated, this, &MainWindow::updateBalance);
connect(&appData()->prices, &Prices::cryptoPricesUpdated, this, &MainWindow::updateBalance);
#ifdef DONATE_BEG #ifdef DONATE_BEG
this->donationNag(); this->donationNag();
#endif #endif
@ -581,6 +584,10 @@ void MainWindow::onWalletOpened() {
} }
} }
void MainWindow::updateBalance() {
this->onBalanceUpdated(m_wallet->balance(), m_wallet->unlockedBalance());
}
void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) { void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
bool hide = conf()->get(Config::hideBalance).toBool(); bool hide = conf()->get(Config::hideBalance).toBool();
int displaySetting = conf()->get(Config::balanceDisplay).toInt(); int displaySetting = conf()->get(Config::balanceDisplay).toInt();
@ -601,6 +608,12 @@ void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
} }
} }
if (conf()->get(Config::balanceShowFiat).toBool()) {
QString fiatCurrency = conf()->get(Config::preferredFiatCurrency).toString();
double balanceFiatAmount = appData()->prices.convert("XMR", fiatCurrency, balance / constants::cdiv);
balance_str += QString(" (%1)").arg(Utils::amountToCurrencyString(balanceFiatAmount, fiatCurrency));
}
m_statusLabelBalance->setToolTip("Click for details"); m_statusLabelBalance->setToolTip("Click for details");
m_statusLabelBalance->setText(balance_str); m_statusLabelBalance->setText(balance_str);
} }

View file

@ -131,6 +131,7 @@ private slots:
void onTxPoolBacklog(const QVector<quint64> &backlog, quint64 originalFeeLevel, quint64 automaticFeeLevel); void onTxPoolBacklog(const QVector<quint64> &backlog, quint64 originalFeeLevel, quint64 automaticFeeLevel);
// libwalletqt // libwalletqt
void updateBalance();
void onBalanceUpdated(quint64 balance, quint64 spendable); void onBalanceUpdated(quint64 balance, quint64 spendable);
void onSyncStatus(quint64 height, quint64 target, bool daemonSync); void onSyncStatus(quint64 height, quint64 target, bool daemonSync);
void onWalletOpened(); void onWalletOpened();

View file

@ -131,10 +131,18 @@ void Settings::setupAppearanceTab() {
emit updateBalance(); emit updateBalance();
}); });
// [Balance show fiat]
ui->checkBox_balanceShowFiat->setChecked(conf()->get(Config::balanceShowFiat).toBool());
connect(ui->checkBox_balanceShowFiat, &QCheckBox::toggled, [this](bool toggled){
conf()->set(Config::balanceShowFiat, toggled);
emit updateBalance();
});
// [Preferred fiat currency] // [Preferred fiat currency]
QStringList availableFiatCurrencies = appData()->prices.rates.keys(); QStringList availableFiatCurrencies = appData()->prices.rates.keys();
for (const auto &currency : availableFiatCurrencies) { for (const auto &currency : availableFiatCurrencies) {
ui->comboBox_fiatCurrency->addItem(currency); ui->comboBox_fiatCurrency->addItem(currency);
emit updateBalance();
} }
QStringList fiatCurrencies; QStringList fiatCurrencies;
@ -151,6 +159,7 @@ void Settings::setupAppearanceTab() {
QString selection = ui->comboBox_fiatCurrency->itemText(index); QString selection = ui->comboBox_fiatCurrency->itemText(index);
conf()->set(Config::preferredFiatCurrency, selection); conf()->set(Config::preferredFiatCurrency, selection);
emit preferredFiatCurrencyChanged(selection); emit preferredFiatCurrencyChanged(selection);
emit updateBalance();
}); });
} }

View file

@ -129,17 +129,17 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="6" column="0">
<widget class="QLabel" name="label_17"> <widget class="QLabel" name="label_17">
<property name="text"> <property name="text">
<string>Fiat currency:</string> <string>Fiat currency:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="6" column="1">
<widget class="QComboBox" name="comboBox_fiatCurrency"/> <widget class="QComboBox" name="comboBox_fiatCurrency"/>
</item> </item>
<item row="6" column="0"> <item row="7" column="0">
<spacer name="verticalSpacer_3"> <spacer name="verticalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -152,6 +152,13 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="5" column="1">
<widget class="QCheckBox" name="checkBox_balanceShowFiat">
<property name="text">
<string>Show fiat balance in statusbar</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>

View file

@ -439,6 +439,7 @@ QLocale getCurrencyLocale(const QString &currencyCode) {
for (const auto& locale_: allLocales) { for (const auto& locale_: allLocales) {
if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) { if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) {
locale = locale_; locale = locale_;
break;
} }
} }
localeCache[currencyCode] = locale; localeCache[currencyCode] = locale;

View file

@ -80,6 +80,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
{Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}}, {Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}},
{Config::timeFormat, {QS("timeFormat"), "HH:mm"}}, {Config::timeFormat, {QS("timeFormat"), "HH:mm"}},
{Config::balanceDisplay, {QS("balanceDisplay"), Config::BalanceDisplay::spendablePlusUnconfirmed}}, {Config::balanceDisplay, {QS("balanceDisplay"), Config::BalanceDisplay::spendablePlusUnconfirmed}},
{Config::balanceShowFiat, {QS("balanceShowFiat"), false}},
{Config::inactivityLockEnabled, {QS("inactivityLockEnabled"), false}}, {Config::inactivityLockEnabled, {QS("inactivityLockEnabled"), false}},
{Config::inactivityLockTimeout, {QS("inactivityLockTimeout"), 10}}, {Config::inactivityLockTimeout, {QS("inactivityLockTimeout"), 10}},
{Config::lockOnMinimize, {QS("lockOnMinimize"), false}}, {Config::lockOnMinimize, {QS("lockOnMinimize"), false}},

View file

@ -80,6 +80,7 @@ public:
dateFormat, dateFormat,
timeFormat, timeFormat,
balanceDisplay, balanceDisplay,
balanceShowFiat,
preferredFiatCurrency, preferredFiatCurrency,
// Network -> Proxy // Network -> Proxy

View file

@ -67,7 +67,7 @@ BalanceTickerWidget::BalanceTickerWidget(QWidget *parent, Wallet *wallet, bool t
connect(m_wallet, &Wallet::balanceUpdated, this, &BalanceTickerWidget::updateDisplay); connect(m_wallet, &Wallet::balanceUpdated, this, &BalanceTickerWidget::updateDisplay);
connect(&appData()->prices, &Prices::fiatPricesUpdated, this, &BalanceTickerWidget::updateDisplay); connect(&appData()->prices, &Prices::fiatPricesUpdated, this, &BalanceTickerWidget::updateDisplay);
connect(&appData()->prices, &Prices::fiatPricesUpdated, this, &BalanceTickerWidget::updateDisplay); connect(&appData()->prices, &Prices::cryptoPricesUpdated, this, &BalanceTickerWidget::updateDisplay);
} }
void BalanceTickerWidget::updateDisplay() { void BalanceTickerWidget::updateDisplay() {