]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
settings: add option to show fiat balance in statusbar
authortobtoht <tob@featherwallet.org>
Fri, 4 Oct 2024 14:08:51 +0000 (16:08 +0200)
committertobtoht <tob@featherwallet.org>
Fri, 4 Oct 2024 14:08:51 +0000 (16:08 +0200)
src/MainWindow.cpp
src/MainWindow.h
src/SettingsDialog.cpp
src/SettingsDialog.ui
src/utils/Utils.cpp
src/utils/config.cpp
src/utils/config.h
src/widgets/TickerWidget.cpp

index e4944a26faa31597d3ef01bc06468f2c939aef4a..b3d9189be357bc1cbd80259671c94e0c187ab035 100644 (file)
@@ -116,6 +116,9 @@ MainWindow::MainWindow(WindowManager *windowManager, Wallet *wallet, QWidget *pa
 
     this->onWalletOpened();
 
+    connect(&appData()->prices, &Prices::fiatPricesUpdated, this, &MainWindow::updateBalance);
+    connect(&appData()->prices, &Prices::cryptoPricesUpdated, this, &MainWindow::updateBalance);
+
 #ifdef DONATE_BEG
     this->donationNag();
 #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) {
     bool hide = conf()->get(Config::hideBalance).toBool();
     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->setText(balance_str);
 }
index bab68a3b6a337fe45fc558e48ef01bc5ba4e8667..9e15b0c113c160de89a69bee05e3ab0561522d57 100644 (file)
@@ -131,6 +131,7 @@ private slots:
     void onTxPoolBacklog(const QVector<quint64> &backlog, quint64 originalFeeLevel, quint64 automaticFeeLevel);
 
     // libwalletqt
+    void updateBalance();
     void onBalanceUpdated(quint64 balance, quint64 spendable);
     void onSyncStatus(quint64 height, quint64 target, bool daemonSync);
     void onWalletOpened();
index 3ad8c7507938d93257a455ddf767e3baa610b7e5..f84058e37f64f9a343284335f6183094c50893ef 100644 (file)
@@ -131,10 +131,18 @@ void Settings::setupAppearanceTab() {
         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]
     QStringList availableFiatCurrencies = appData()->prices.rates.keys();
     for (const auto &currency : availableFiatCurrencies) {
         ui->comboBox_fiatCurrency->addItem(currency);
+        emit updateBalance();
     }
 
     QStringList fiatCurrencies;
@@ -151,6 +159,7 @@ void Settings::setupAppearanceTab() {
         QString selection = ui->comboBox_fiatCurrency->itemText(index);
         conf()->set(Config::preferredFiatCurrency, selection);
         emit preferredFiatCurrencyChanged(selection);
+        emit updateBalance();
     });
 }
 
index 578dfa74f6a932ece96b43ab0b0a733e89d0be8c..df2c05acd63524b6810cf6c5fb88c633b898b9a0 100644 (file)
                 </item>
                </widget>
               </item>
-              <item row="5" column="0">
+              <item row="6" column="0">
                <widget class="QLabel" name="label_17">
                 <property name="text">
                  <string>Fiat currency:</string>
                 </property>
                </widget>
               </item>
-              <item row="5" column="1">
+              <item row="6" column="1">
                <widget class="QComboBox" name="comboBox_fiatCurrency"/>
               </item>
-              <item row="6" column="0">
+              <item row="7" column="0">
                <spacer name="verticalSpacer_3">
                 <property name="orientation">
                  <enum>Qt::Vertical</enum>
                 </property>
                </spacer>
               </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>
             </item>
            </layout>
index ed26b42479a1d4f95eb309ba25a15d964a14f825..dc2288814b6be7de543a3b7d04cff5a691cde9e1 100644 (file)
@@ -439,6 +439,7 @@ QLocale getCurrencyLocale(const QString &currencyCode) {
         for (const auto& locale_: allLocales) {
             if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) {
                 locale = locale_;
+                break;
             }
         }
         localeCache[currencyCode] = locale;
index a17addfad9e78d353021d61b4b45f0ac94e07193..e2048079f1e4ffb312e21490332bdb80d4d60218 100644 (file)
@@ -80,6 +80,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
         {Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}},
         {Config::timeFormat, {QS("timeFormat"), "HH:mm"}},
         {Config::balanceDisplay, {QS("balanceDisplay"), Config::BalanceDisplay::spendablePlusUnconfirmed}},
+        {Config::balanceShowFiat, {QS("balanceShowFiat"), false}},
         {Config::inactivityLockEnabled, {QS("inactivityLockEnabled"), false}},
         {Config::inactivityLockTimeout, {QS("inactivityLockTimeout"), 10}},
         {Config::lockOnMinimize, {QS("lockOnMinimize"), false}},
index 215ec6bcf4a1d914381f850d8347b1f835ed6597..b83b4f4dbad82f97f1c3f9b681b369adf0f8d522 100644 (file)
@@ -80,6 +80,7 @@ public:
         dateFormat,
         timeFormat,
         balanceDisplay,
+        balanceShowFiat,
         preferredFiatCurrency,
 
         // Network -> Proxy
index cecd7e996857ecfe3436fea2834dec300b9f9361..86dfe58bbaecb3b7edcb9d7a2c374395bf8838c1 100644 (file)
@@ -67,7 +67,7 @@ BalanceTickerWidget::BalanceTickerWidget(QWidget *parent, Wallet *wallet, bool t
 
     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::cryptoPricesUpdated, this, &BalanceTickerWidget::updateDisplay);
 }
 
 void BalanceTickerWidget::updateDisplay() {