]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
refactor statusBar
authorgg <chown_tee@proton.me>
Tue, 13 Jan 2026 06:27:00 +0000 (01:27 -0500)
committergg <chown_tee@proton.me>
Tue, 13 Jan 2026 06:27:00 +0000 (01:27 -0500)
src/MainWindow.cpp
src/MainWindow.h
src/main.cpp

index 018a093287dd8fd583865fd111cd3f24532b1a77..364d8ef2173d8035bbce01eeed9a8733e380798a 100644 (file)
@@ -155,14 +155,24 @@ void MainWindow::initStatusBar() {
     m_statusUpdateAvailable->hide();
     this->statusBar()->addPermanentWidget(m_statusUpdateAvailable);
 
-    m_statusLabelBalance = new ClickableLabel(this);
-    m_statusLabelBalance->setText("Balance: 0 XMR");
+    QLabel *balancePrefix = new QLabel("Balance:", this);
+    this->statusBar()->addPermanentWidget(balancePrefix);
+
+    m_statusLabelBalance = new QLabel(this);
+    m_statusLabelBalance->setText("0");
     m_statusLabelBalance->setTextInteractionFlags(Qt::TextSelectableByMouse);
-    m_statusLabelBalance->setCursor(Qt::PointingHandCursor);
-    m_statusLabelBalance->setCursor(Qt::PointingHandCursor);
     m_statusLabelBalance->setContextMenuPolicy(Qt::ActionsContextMenu);
     this->statusBar()->addPermanentWidget(m_statusLabelBalance);
 
+    m_statusLabelBalanceSuffix = new QLabel("XMR", this);
+    this->statusBar()->addPermanentWidget(m_statusLabelBalanceSuffix);
+
+    QAction *copyBalanceAction = new QAction(tr("Copy"), this);
+    connect(copyBalanceAction, &QAction::triggered, this, [this](){
+        QApplication::clipboard()->setText(m_statusLabelBalance->text());
+    });
+    m_statusLabelBalance->addAction(copyBalanceAction);
+
     QAction *showBalanceAction = new QAction(tr("Show details"), this);
     connect(showBalanceAction, &QAction::triggered, this, &MainWindow::showBalanceDialog);
     m_statusLabelBalance->addAction(showBalanceAction);
@@ -876,18 +886,22 @@ void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
     int displaySetting = conf()->get(Config::balanceDisplay).toInt();
     int decimals = conf()->get(Config::amountPrecision).toInt();
 
-    QString balance_str = "Balance: ";
+    QString valueStr;
+    QString suffixStr;
+
     if (hide) {
-        balance_str += "HIDDEN";
+        valueStr = "HIDDEN";
     }
     else if (displaySetting == Config::totalBalance) {
-        balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(balance, false, decimals));
+        valueStr = WalletManager::displayAmount(balance, false, decimals);
+        suffixStr = " XMR";
     }
     else if (displaySetting == Config::spendable || displaySetting == Config::spendablePlusUnconfirmed) {
-        balance_str += QString("%1 XMR").arg(WalletManager::displayAmount(spendable, false, decimals));
+        valueStr = WalletManager::displayAmount(spendable, false, decimals);
+        suffixStr = " XMR";
 
         if (displaySetting == Config::spendablePlusUnconfirmed && balance > spendable) {
-            balance_str += QString(" (+%1 XMR unconfirmed)").arg(WalletManager::displayAmount(balance - spendable, false, decimals));
+            suffixStr += QString(" (+%1 XMR unconfirmed)").arg(WalletManager::displayAmount(balance - spendable, false, decimals));
         }
     }
 
@@ -895,14 +909,15 @@ void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
         QString fiatCurrency = conf()->get(Config::preferredFiatCurrency).toString();
         double balanceFiatAmount = appData()->prices.convert("XMR", fiatCurrency, balance / constants::cdiv);
         if (balance > 0 && balanceFiatAmount == 0.0) {
-            balance_str += " (---)";
+            suffixStr += " (---)";
         } else {
-            balance_str += QString(" (%1)").arg(Utils::amountToCurrencyString(balanceFiatAmount, fiatCurrency));
+            suffixStr += QString(" (%1)").arg(Utils::amountToCurrencyString(balanceFiatAmount, fiatCurrency));
         }
     }
 
     m_statusLabelBalance->setToolTip("Click for details");
-    m_statusLabelBalance->setText(balance_str);
+    m_statusLabelBalance->setText(valueStr);
+    m_statusLabelBalanceSuffix->setText(suffixStr);
 }
 
 void MainWindow::setPausedSyncStatus() {
@@ -1066,38 +1081,41 @@ void MainWindow::onConnectionStatusChanged(int status)
     qDebug() << "Wallet connection status changed " << Utils::QtEnumToString(static_cast<Wallet::ConnectionStatus>(status));
 
     if (m_updateNetworkInfoAction) {  // Maybe not initialized on first function call
-        bool syncPaused = conf()->get(Config::syncPaused).toBool();
-        m_updateNetworkInfoAction->setEnabled(status != Wallet::ConnectionStatus_Disconnected && !syncPaused);
+        m_updateNetworkInfoAction->setEnabled(status != Wallet::ConnectionStatus_Disconnected);
     }
 
     // Update connection info in status bar.
 
     QIcon icon;
+    QString statusStr;
     if (conf()->get(Config::offlineMode).toBool()) {
         icon = icons()->icon("status_offline.svg");
-        this->setStatusText("Offline mode");
+        statusStr = "Offline mode";
     } else {
         switch(status){
             case Wallet::ConnectionStatus_Disconnected:
                 icon = icons()->icon("status_offline.svg");
-                this->setStatusText("Disconnected");
+                statusStr = "Disconnected";
                 break;
             case Wallet::ConnectionStatus_Connecting:
                 icon = icons()->icon("status_lagging.svg");
-                this->setStatusText("Connecting to node");
+                statusStr = "Connecting to node";
                 break;
             case Wallet::ConnectionStatus_WrongVersion:
                 icon = icons()->icon("status_disconnected.svg");
-                this->setStatusText("Incompatible node");
+                statusStr = "Node Incompatible";
                 break;
             case Wallet::ConnectionStatus_Synchronizing:
                 icon = icons()->icon("status_waiting.svg");
+                statusStr = "Synchronizing";
                 break;
             case Wallet::ConnectionStatus_Synchronized:
                 icon = icons()->icon("status_connected.svg");
+                statusStr = "Synchronized";
                 break;
             default:
                 icon = icons()->icon("status_disconnected.svg");
+                statusStr = "Disconnected";
                 break;
         }
     }
index 08d03358f8861ead7dc849c046e27fd364992c05..68118ba1d0829291ac38768b8dda2a6f6c12f1dc 100644 (file)
@@ -242,7 +242,8 @@ private:
 
     // lower status bar
     QPushButton *m_statusUpdateAvailable;
-    ClickableLabel *m_statusLabelBalance;
+    QLabel *m_statusLabelBalance;
+    QLabel *m_statusLabelBalanceSuffix;
     QLabel *m_statusLabelStatus;
     QLabel *m_statusLabelNetStats;
     StatusBarButton *m_statusAccountSwitcher;
index 15cd44f7c7331caa46e47273780c2bf83164a376..5a7eb134a5cd3b8a30e1079650f9bf1d35893d46 100644 (file)
@@ -2,6 +2,7 @@
 // SPDX-FileCopyrightText: The Monero Project
 
 #include <QSslSocket>
+#include <iostream>
 
 #include "Application.h"
 #include "constants.h"
@@ -86,9 +87,14 @@ if (AttachConsole(ATTACH_PARENT_PROCESS)) {
     for (int i = 1; i < argc; i++) {
         if (QString(argv[i]) == "--version" || QString(argv[i]) == "-v") {
 #ifdef FEATHER_BUILD_TAG
-            qInfo() << QObject::tr("Feather Wallet") << FEATHER_VERSION << FEATHER_BUILD_TAG;
+            QString buildTag = QString(FEATHER_BUILD_TAG).replace("\"", "");
+            QString versionTag = QString(FEATHER_VERSION) + "-";
+            if (buildTag.startsWith(versionTag)) {
+                buildTag.remove(0, versionTag.length());
+            }
+            std::cout << "Feather Wallet " << FEATHER_VERSION << " (build " << buildTag.toStdString() << ")" << std::endl;
 #else
-            qInfo() << QObject::tr("Feather Wallet") << FEATHER_VERSION;
+            std::cout << "Feather Wallet " << FEATHER_VERSION << std::endl;
 #endif
             return 0;
         }