mirror of
https://git.wownero.com/wowlet/wowlet.git
synced 2024-08-15 01:03:14 +00:00
Merge pull request 'BalanceDialog' (#259) from tobtoht/feather:balance_dialogg into master
Reviewed-on: https://git.wownero.com/feather/feather/pulls/259
This commit is contained in:
commit
0e5ab21205
9 changed files with 229 additions and 21 deletions
|
@ -793,16 +793,14 @@ void AppContext::storeWallet() {
|
|||
}
|
||||
|
||||
void AppContext::updateBalance() {
|
||||
if(!this->currentWallet)
|
||||
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…
Reference in a new issue