mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	BalanceDialog
This commit is contained in:
		
							parent
							
								
									f5255440e4
								
							
						
					
					
						commit
						a11dc3f4b2
					
				
					 9 changed files with 229 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -796,13 +796,11 @@ void AppContext::updateBalance() {
 | 
			
		|||
    if (!this->currentWallet)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    AppContext::balance = this->currentWallet->balance() / globals::cdiv;
 | 
			
		||||
    auto balance_str = QString::number(balance, 'f');
 | 
			
		||||
    quint64 balance_u = this->currentWallet->balance();
 | 
			
		||||
    AppContext::balance = balance_u / globals::cdiv;
 | 
			
		||||
    double spendable = this->currentWallet->unlockedBalance();
 | 
			
		||||
 | 
			
		||||
    double unlocked = this->currentWallet->unlockedBalance() / globals::cdiv;
 | 
			
		||||
    auto unlocked_str = QString::number(unlocked, 'f');
 | 
			
		||||
 | 
			
		||||
    emit balanceUpdated(balance, unlocked, balance_str, unlocked_str);
 | 
			
		||||
    emit balanceUpdated(balance_u, spendable);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AppContext::syncStatusUpdated(quint64 height, quint64 target) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,7 +138,7 @@ private slots:
 | 
			
		|||
    void onConnectionStatusChanged(int status);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void balanceUpdated(double balance, double unlocked, QString balance_str, QString unlocked_str);
 | 
			
		||||
    void balanceUpdated(quint64 balance, quint64 spendable);
 | 
			
		||||
    void blockchainSync(int height, int target);
 | 
			
		||||
    void refreshSync(int height, int target);
 | 
			
		||||
    void synchronized();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										27
									
								
								src/dialog/balancedialog.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/dialog/balancedialog.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#include "balancedialog.h"
 | 
			
		||||
#include "ui_balancedialog.h"
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/WalletManager.h"
 | 
			
		||||
 | 
			
		||||
BalanceDialog::BalanceDialog(QWidget *parent, Wallet *wallet)
 | 
			
		||||
        : QDialog(parent)
 | 
			
		||||
        , ui(new Ui::BalanceDialog)
 | 
			
		||||
{
 | 
			
		||||
    ui->setupUi(this);
 | 
			
		||||
 | 
			
		||||
    ui->label_unconfirmed_help->setHelpText("Outputs require 10 confirmations before they become spendable. "
 | 
			
		||||
                                            "This will take 20 minutes on average.");
 | 
			
		||||
 | 
			
		||||
    ui->label_unconfirmed->setText(WalletManager::displayAmount(wallet->balance() - wallet->unlockedBalance()));
 | 
			
		||||
    ui->label_spendable->setText(WalletManager::displayAmount(wallet->unlockedBalance()));
 | 
			
		||||
    ui->label_total->setText(WalletManager::displayAmount(wallet->balance()));
 | 
			
		||||
 | 
			
		||||
    this->adjustSize();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BalanceDialog::~BalanceDialog() {
 | 
			
		||||
    delete ui;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								src/dialog/balancedialog.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/dialog/balancedialog.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_BALANCEDIALOG_H
 | 
			
		||||
#define FEATHER_BALANCEDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
namespace Ui {
 | 
			
		||||
    class BalanceDialog;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class BalanceDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    explicit BalanceDialog(QWidget *parent, Wallet *wallet);
 | 
			
		||||
    ~BalanceDialog() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    Ui::BalanceDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_BALANCEDIALOG_H
 | 
			
		||||
							
								
								
									
										142
									
								
								src/dialog/balancedialog.ui
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								src/dialog/balancedialog.ui
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,142 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<ui version="4.0">
 | 
			
		||||
 <class>BalanceDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="BalanceDialog">
 | 
			
		||||
  <property name="geometry">
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>405</width>
 | 
			
		||||
    <height>162</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
   <string>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">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Unconfirmed</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>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="textInteractionFlags">
 | 
			
		||||
        <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="1" column="0">
 | 
			
		||||
      <widget class="QLabel" name="label_spendable_help">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Spendable</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="1" column="1">
 | 
			
		||||
      <widget class="QLabel" name="label_spendable">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>0.0</string>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="alignment">
 | 
			
		||||
        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="textInteractionFlags">
 | 
			
		||||
        <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="2" column="1">
 | 
			
		||||
      <widget class="Line" name="line">
 | 
			
		||||
       <property name="orientation">
 | 
			
		||||
        <enum>Qt::Horizontal</enum>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="3" column="0">
 | 
			
		||||
      <widget class="QLabel" name="label_7">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Total</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <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>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="textInteractionFlags">
 | 
			
		||||
        <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
    </layout>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QDialogButtonBox" name="buttonBox">
 | 
			
		||||
     <property name="orientation">
 | 
			
		||||
      <enum>Qt::Horizontal</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="standardButtons">
 | 
			
		||||
      <set>QDialogButtonBox::Ok</set>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
  </layout>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <customwidgets>
 | 
			
		||||
  <customwidget>
 | 
			
		||||
   <class>HelpLabel</class>
 | 
			
		||||
   <extends>QLabel</extends>
 | 
			
		||||
   <header>components.h</header>
 | 
			
		||||
  </customwidget>
 | 
			
		||||
 </customwidgets>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 <connections>
 | 
			
		||||
  <connection>
 | 
			
		||||
   <sender>buttonBox</sender>
 | 
			
		||||
   <signal>accepted()</signal>
 | 
			
		||||
   <receiver>BalanceDialog</receiver>
 | 
			
		||||
   <slot>accept()</slot>
 | 
			
		||||
   <hints>
 | 
			
		||||
    <hint type="sourcelabel">
 | 
			
		||||
     <x>248</x>
 | 
			
		||||
     <y>254</y>
 | 
			
		||||
    </hint>
 | 
			
		||||
    <hint type="destinationlabel">
 | 
			
		||||
     <x>157</x>
 | 
			
		||||
     <y>274</y>
 | 
			
		||||
    </hint>
 | 
			
		||||
   </hints>
 | 
			
		||||
  </connection>
 | 
			
		||||
  <connection>
 | 
			
		||||
   <sender>buttonBox</sender>
 | 
			
		||||
   <signal>rejected()</signal>
 | 
			
		||||
   <receiver>BalanceDialog</receiver>
 | 
			
		||||
   <slot>reject()</slot>
 | 
			
		||||
   <hints>
 | 
			
		||||
    <hint type="sourcelabel">
 | 
			
		||||
     <x>316</x>
 | 
			
		||||
     <y>260</y>
 | 
			
		||||
    </hint>
 | 
			
		||||
    <hint type="destinationlabel">
 | 
			
		||||
     <x>286</x>
 | 
			
		||||
     <y>274</y>
 | 
			
		||||
    </hint>
 | 
			
		||||
   </hints>
 | 
			
		||||
  </connection>
 | 
			
		||||
 </connections>
 | 
			
		||||
</ui>
 | 
			
		||||
| 
						 | 
				
			
			@ -21,12 +21,14 @@
 | 
			
		|||
#include "dialog/broadcasttxdialog.h"
 | 
			
		||||
#include "dialog/tximportdialog.h"
 | 
			
		||||
#include "dialog/passworddialog.h"
 | 
			
		||||
#include "dialog/balancedialog.h"
 | 
			
		||||
#include "utils/utils.h"
 | 
			
		||||
#include "utils/config.h"
 | 
			
		||||
#include "utils/daemonrpc.h"
 | 
			
		||||
#include "components.h"
 | 
			
		||||
#include "calcwindow.h"
 | 
			
		||||
#include "ui_mainwindow.h"
 | 
			
		||||
#include "globals.h"
 | 
			
		||||
 | 
			
		||||
// libwalletqt
 | 
			
		||||
#include "libwalletqt/WalletManager.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +214,6 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) :
 | 
			
		|||
    connect(this, &MainWindow::walletClosed, ui->xmrToWidget, &XMRToWidget::onWalletClosed);
 | 
			
		||||
    connect(this, &MainWindow::walletClosed, ui->sendWidget, &SendWidget::onWalletClosed);
 | 
			
		||||
    connect(m_ctx, &AppContext::balanceUpdated, this, &MainWindow::onBalanceUpdated);
 | 
			
		||||
    connect(m_ctx, &AppContext::balanceUpdated, ui->xmrToWidget, &XMRToWidget::onBalanceUpdated);
 | 
			
		||||
    connect(m_ctx, &AppContext::walletOpened, this, &MainWindow::onWalletOpened);
 | 
			
		||||
    connect(m_ctx, &AppContext::walletClosed, this, QOverload<>::of(&MainWindow::onWalletClosed));
 | 
			
		||||
    connect(m_ctx, &AppContext::walletOpenedError, this, &MainWindow::onWalletOpenedError);
 | 
			
		||||
| 
						 | 
				
			
			@ -655,18 +656,18 @@ void MainWindow::onWalletOpened() {
 | 
			
		|||
    m_updateBytes.start(100);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::onBalanceUpdated(double balance, double unlocked, const QString &balance_str, const QString &unlocked_str) {
 | 
			
		||||
void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
 | 
			
		||||
    qDebug() << Q_FUNC_INFO;
 | 
			
		||||
    bool hide = config()->get(Config::hideBalance).toBool();
 | 
			
		||||
 | 
			
		||||
    auto label_str = QString("Balance: %1 XMR").arg(unlocked_str);
 | 
			
		||||
    if(balance > unlocked)
 | 
			
		||||
        label_str += QString(" (+%1 XMR unconfirmed)").arg(QString::number(balance - unlocked, 'f'));
 | 
			
		||||
    QString label_str = QString("Balance: %1 XMR").arg(QString::number(spendable / globals::cdiv, 'f'));
 | 
			
		||||
    if (balance > spendable)
 | 
			
		||||
        label_str += QString(" (+%1 XMR unconfirmed)").arg(QString::number((balance - spendable) / globals::cdiv, 'f'));
 | 
			
		||||
 | 
			
		||||
    if (hide) {
 | 
			
		||||
    if (hide)
 | 
			
		||||
        label_str = "Balance: HIDDEN";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m_statusLabelBalance->setToolTip("Click for details");
 | 
			
		||||
    m_statusLabelBalance->setText(label_str);
 | 
			
		||||
    m_balanceWidget->setHidden(hide);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -823,9 +824,11 @@ void MainWindow::create_status_bar() {
 | 
			
		|||
    m_statusLabelNetStats->setTextInteractionFlags(Qt::TextSelectableByMouse);
 | 
			
		||||
    this->statusBar()->addWidget(m_statusLabelNetStats);
 | 
			
		||||
 | 
			
		||||
    m_statusLabelBalance = new QLabel("Balance: 0.00 XMR", this);
 | 
			
		||||
    m_statusLabelBalance = new ClickableLabel(this);
 | 
			
		||||
    m_statusLabelBalance->setText("Balance: 0.00 XMR");
 | 
			
		||||
    m_statusLabelBalance->setTextInteractionFlags(Qt::TextSelectableByMouse);
 | 
			
		||||
    this->statusBar()->addPermanentWidget(m_statusLabelBalance);
 | 
			
		||||
    connect(m_statusLabelBalance, &ClickableLabel::clicked, this, &MainWindow::showBalanceDialog);
 | 
			
		||||
 | 
			
		||||
    m_statusBtnConnectionStatusIndicator = new StatusBarButton(QIcon(":/assets/images/status_disconnected.svg"), "Connection status");
 | 
			
		||||
    connect(m_statusBtnConnectionStatusIndicator, &StatusBarButton::clicked, this, &MainWindow::showConnectionStatusDialog);
 | 
			
		||||
| 
						 | 
				
			
			@ -1322,6 +1325,15 @@ void MainWindow::rescanSpent() {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::showBalanceDialog() {
 | 
			
		||||
    if (!m_ctx->currentWallet) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    auto *dialog = new BalanceDialog(this, m_ctx->currentWallet);
 | 
			
		||||
    dialog->exec();
 | 
			
		||||
    dialog->deleteLater();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString MainWindow::statusDots() {
 | 
			
		||||
    m_statusDots++;
 | 
			
		||||
    m_statusDots = m_statusDots % 4;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ public slots:
 | 
			
		|||
    void loadSignedTxFromText();
 | 
			
		||||
 | 
			
		||||
    // libwalletqt
 | 
			
		||||
    void onBalanceUpdated(double balance, double unlocked, const QString &balance_str, const QString &unlocked_str);
 | 
			
		||||
    void onBalanceUpdated(quint64 balance, quint64 spendable);
 | 
			
		||||
    void onSynchronized();
 | 
			
		||||
    void onWalletOpened();
 | 
			
		||||
    void onWalletClosed();
 | 
			
		||||
| 
						 | 
				
			
			@ -169,6 +169,7 @@ private:
 | 
			
		|||
    void updateNetStats();
 | 
			
		||||
    void rescanSpent();
 | 
			
		||||
    void setStatusText(const QString &text);
 | 
			
		||||
    void showBalanceDialog();
 | 
			
		||||
    QString statusDots();
 | 
			
		||||
 | 
			
		||||
    WalletWizard *createWizard(WalletWizard::Page startPage);
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +193,7 @@ private:
 | 
			
		|||
    TickerWidget *m_balanceWidget;
 | 
			
		||||
 | 
			
		||||
    // lower status bar
 | 
			
		||||
    QLabel *m_statusLabelBalance;
 | 
			
		||||
    ClickableLabel *m_statusLabelBalance;
 | 
			
		||||
    QLabel *m_statusLabelStatus;
 | 
			
		||||
    QLabel *m_statusLabelNetStats;
 | 
			
		||||
    StatusBarButton *m_statusBtnConnectionStatusIndicator;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
#include "dialog/xmrtoinfodialog.h"
 | 
			
		||||
#include "libwalletqt/WalletManager.h"
 | 
			
		||||
#include "mainwindow.h"
 | 
			
		||||
#include "globals.h"
 | 
			
		||||
 | 
			
		||||
#include <QMenu>
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
| 
						 | 
				
			
			@ -71,8 +72,8 @@ void XMRToWidget::setHistoryModel(XmrToModel *model) {
 | 
			
		|||
    this->ui->historyTable->setModel(model);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XMRToWidget::onBalanceUpdated(double balance, double unlocked, const QString &balance_str, const QString &unlocked_str) {
 | 
			
		||||
    this->m_unlockedBalance = unlocked;
 | 
			
		||||
void XMRToWidget::onBalanceUpdated(quint64 balance, quint64 spendable) {
 | 
			
		||||
    this->m_unlockedBalance = spendable / globals::cdiv;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XMRToWidget::onWalletClosed() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ public slots:
 | 
			
		|||
    void onRatesUpdated(XmrToRates rates);
 | 
			
		||||
    void onTorCheckBoxToggled(int state);
 | 
			
		||||
    void onCreateOrder();
 | 
			
		||||
    void onBalanceUpdated(double balance, double unlocked, const QString &balance_str, const QString &unlocked_str);
 | 
			
		||||
    void onBalanceUpdated(quint64 balance, quint64 spendable);
 | 
			
		||||
    void updateConversionLabel();
 | 
			
		||||
 | 
			
		||||
    void onInitiateTransaction();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue