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

68 lines
2.2 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 <QFontDatabase>
#include "MainWindow.h"
#include "TransactionFrame.h"
#include "TransactionsModel.h"
#include "ui_transactionframe.h"
namespace WalletGui {
class RecentTransactionDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
RecentTransactionDelegate(QObject* _parent) : QStyledItemDelegate(_parent) {
}
~RecentTransactionDelegate() {
}
void setEditorData(QWidget* _editor, const QModelIndex& _index) const Q_DECL_OVERRIDE {
switch(_index.column()) {
case TransactionsModel::COLUMN_AMOUNT:
case TransactionsModel::COLUMN_HASH:
case TransactionsModel::COLUMN_DATE:
static_cast<QLabel*>(_editor)->setText(_index.data().toString());
return;
case TransactionsModel::COLUMN_TYPE:
static_cast<QLabel*>(_editor)->setPixmap(_index.data(TransactionsModel::ROLE_ICON).value<QPixmap>());
return;
default:
return;
}
}
};
TransactionFrame::TransactionFrame(const QModelIndex& _index, QWidget* _parent) : QFrame(_parent),
m_ui(new Ui::TransactionFrame), m_dataMapper(this), m_index(_index) {
m_ui->setupUi(this);
QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont);
font.setPixelSize(11);
m_ui->m_hashLabel->setFont(font);
m_dataMapper.setModel(const_cast<QAbstractItemModel*>(m_index.model()));
m_dataMapper.setItemDelegate(new RecentTransactionDelegate(this));
m_dataMapper.addMapping(m_ui->m_iconLabel, TransactionsModel::COLUMN_TYPE);
m_dataMapper.addMapping(m_ui->m_amountLabel, TransactionsModel::COLUMN_AMOUNT);
m_dataMapper.addMapping(m_ui->m_timeLabel, TransactionsModel::COLUMN_DATE);
m_dataMapper.addMapping(m_ui->m_hashLabel, TransactionsModel::COLUMN_HASH);
m_dataMapper.setCurrentModelIndex(m_index);
}
TransactionFrame::~TransactionFrame() {
}
void TransactionFrame::mousePressEvent(QMouseEvent* _event) {
MainWindow::instance().scrollToTransaction(TransactionsModel::instance().index(m_index.data(TransactionsModel::ROLE_ROW).toInt(), 0));
}
}
#include "TransactionFrame.moc"