danicoinwallet/src/gui/OverviewFrame.cpp
2015-04-30 15:11:48 +03:00

95 lines
3.6 KiB
C++

// 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"