forked from cryptonotefoundation/cryptonotewallet
/
OverviewFrame.cpp
94 lines (74 loc) · 3.57 KB
/
OverviewFrame.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright (c) 2011-2015 The Cryptonote developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "CurrencyAdapter.h"
#include "OverviewFrame.h"
#include "TransactionFrame.h"
#include "RecentTransactionsModel.h"
#include "WalletAdapter.h"
#include "ui_overviewframe.h"
namespace WalletGui {
class RecentTransactionsDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
RecentTransactionsDelegate(QObject* _parent) : QStyledItemDelegate(_parent) {
}
~RecentTransactionsDelegate() {
}
QWidget* createEditor(QWidget* _parent, const QStyleOptionViewItem& _option, const QModelIndex& _index) const Q_DECL_OVERRIDE {
if (!_index.isValid()) {
return nullptr;
}
return new TransactionFrame(_index, _parent);
}
QSize sizeHint(const QStyleOptionViewItem& _option, const QModelIndex& _index) const Q_DECL_OVERRIDE {
return QSize(346, 64);
}
};
OverviewFrame::OverviewFrame(QWidget* _parent) : QFrame(_parent), m_ui(new Ui::OverviewFrame), m_transactionModel(new RecentTransactionsModel) {
m_ui->setupUi(this);
connect(&WalletAdapter::instance(), &WalletAdapter::walletActualBalanceUpdatedSignal, this, &OverviewFrame::updateActualBalance,
Qt::QueuedConnection);
connect(&WalletAdapter::instance(), &WalletAdapter::walletPendingBalanceUpdatedSignal, this, &OverviewFrame::updatePendingBalance,
Qt::QueuedConnection);
connect(&WalletAdapter::instance(), &WalletAdapter::walletCloseCompletedSignal, this, &OverviewFrame::reset,
Qt::QueuedConnection);
connect(m_transactionModel.data(), &QAbstractItemModel::rowsInserted, this, &OverviewFrame::transactionsInserted);
connect(m_transactionModel.data(), &QAbstractItemModel::layoutChanged, this, &OverviewFrame::layoutChanged);
m_ui->m_tickerLabel1->setText(CurrencyAdapter::instance().getCurrencyTicker().toUpper());
m_ui->m_tickerLabel2->setText(CurrencyAdapter::instance().getCurrencyTicker().toUpper());
m_ui->m_tickerLabel3->setText(CurrencyAdapter::instance().getCurrencyTicker().toUpper());
m_ui->m_recentTransactionsView->setItemDelegate(new RecentTransactionsDelegate(this));
m_ui->m_recentTransactionsView->setModel(m_transactionModel.data());
reset();
}
OverviewFrame::~OverviewFrame() {
}
void OverviewFrame::transactionsInserted(const QModelIndex& _parent, int _first, int _last) {
for (quint32 i = _first; i <= _last; ++i) {
QModelIndex recentModelIndex = m_transactionModel->index(i, 0);
m_ui->m_recentTransactionsView->openPersistentEditor(recentModelIndex);
}
}
void OverviewFrame::layoutChanged() {
for (quint32 i = 0; i <= m_transactionModel->rowCount(); ++i) {
QModelIndex recent_index = m_transactionModel->index(i, 0);
m_ui->m_recentTransactionsView->openPersistentEditor(recent_index);
}
}
void OverviewFrame::updateActualBalance(quint64 _balance) {
m_ui->m_actualBalanceLabel->setText(CurrencyAdapter::instance().formatAmount(_balance));
quint64 pendingBalance = WalletAdapter::instance().getPendingBalance();
m_ui->m_totalBalanceLabel->setText(CurrencyAdapter::instance().formatAmount(_balance + pendingBalance));
}
void OverviewFrame::updatePendingBalance(quint64 _balance) {
m_ui->m_pendingBalanceLabel->setText(CurrencyAdapter::instance().formatAmount(_balance));
quint64 actualBalance = WalletAdapter::instance().getActualBalance();
m_ui->m_totalBalanceLabel->setText(CurrencyAdapter::instance().formatAmount(_balance + actualBalance));
}
void OverviewFrame::reset() {
updateActualBalance(0);
updatePendingBalance(0);
}
}
#include "OverviewFrame.moc"