From 126185aaa70839dfbb14e56884b4747e75942ab4 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 5 Aug 2011 15:35:52 +0200 Subject: [PATCH] improve tooltip over transactions --- src/qt/transactionfilterproxy.cpp | 2 +- src/qt/transactiontablemodel.cpp | 40 ++++++++++++++++++------------- src/qt/transactiontablemodel.h | 11 ++++----- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/qt/transactionfilterproxy.cpp b/src/qt/transactionfilterproxy.cpp index 5a66f8512..456043afa 100644 --- a/src/qt/transactionfilterproxy.cpp +++ b/src/qt/transactionfilterproxy.cpp @@ -28,7 +28,7 @@ bool TransactionFilterProxy::filterAcceptsRow(int sourceRow, const QModelIndex & QDateTime datetime = index.data(TransactionTableModel::DateRole).toDateTime(); QString address = index.data(TransactionTableModel::AddressRole).toString(); QString label = index.data(TransactionTableModel::LabelRole).toString(); - qint64 amount = index.data(TransactionTableModel::AbsoluteAmountRole).toLongLong(); + qint64 amount = llabs(index.data(TransactionTableModel::AmountRole).toLongLong()); if(!(TYPE(type) & typeFilter)) return false; diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 988a91ee9..f418a2bce 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -265,7 +265,7 @@ int TransactionTableModel::columnCount(const QModelIndex &parent) const return columns.length(); } -QVariant TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) const +QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) const { QString status; @@ -289,7 +289,7 @@ QVariant TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) con } if(wtx->type == TransactionRecord::Generated) { - status += "\n\n"; + status += "\n"; switch(wtx->status.maturity) { case TransactionStatus::Immature: @@ -307,18 +307,18 @@ QVariant TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) con } } - return QVariant(status); + return status; } -QVariant TransactionTableModel::formatTxDate(const TransactionRecord *wtx) const +QString TransactionTableModel::formatTxDate(const TransactionRecord *wtx) const { if(wtx->time) { - return QVariant(GUIUtil::DateTimeStr(wtx->time)); + return GUIUtil::DateTimeStr(wtx->time); } else { - return QVariant(); + return QString(); } } @@ -418,7 +418,7 @@ QVariant TransactionTableModel::addressColor(const TransactionRecord *wtx) const return QVariant(); } -QVariant TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed) const +QString TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed) const { QString str = BitcoinUnits::format(walletModel->getOptionsModel()->getDisplayUnit(), wtx->credit + wtx->debit); if(showUnconfirmed) @@ -428,10 +428,10 @@ QVariant TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, boo str = QString("[") + str + QString("]"); } } - return QVariant(str); + return QString(str); } -QVariant TransactionTableModel::formatTxDecoration(const TransactionRecord *wtx) const +QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx) const { if(wtx->type == TransactionRecord::Generated) { @@ -476,6 +476,18 @@ QVariant TransactionTableModel::formatTxDecoration(const TransactionRecord *wtx) return QColor(0,0,0); } +QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const +{ + QString tooltip = formatTxType(rec); + if(rec->type==TransactionRecord::RecvFromIP || rec->type==TransactionRecord::SendToIP || + rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress) + { + tooltip += QString(" ") + formatTxToAddress(rec, true); + } + tooltip += QString("\n") + formatTxStatus(rec); + return tooltip; +} + QVariant TransactionTableModel::data(const QModelIndex &index, int role) const { if(!index.isValid()) @@ -487,7 +499,7 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const switch(index.column()) { case Status: - return formatTxDecoration(rec); + return txStatusDecoration(rec); case ToAddress: return txAddressDecoration(rec); } @@ -530,8 +542,8 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const { case Status: return formatTxStatus(rec); - case ToAddress: - return formatTxType(rec) + QString(" ") + formatTxToAddress(rec, true); + default: + return formatTooltip(rec); } } else if (role == Qt::TextAlignmentRole) @@ -574,10 +586,6 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const { return walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(rec->address)); } - else if (role == AbsoluteAmountRole) - { - return llabs(rec->credit + rec->debit); - } else if (role == AmountRole) { return rec->credit + rec->debit; diff --git a/src/qt/transactiontablemodel.h b/src/qt/transactiontablemodel.h index 0daa5f6aa..17bfeccdb 100644 --- a/src/qt/transactiontablemodel.h +++ b/src/qt/transactiontablemodel.h @@ -37,8 +37,6 @@ public: AddressRole, // Label of address related to transaction LabelRole, - // Absolute net amount of transaction, for filtering - AbsoluteAmountRole, // Net amount of transaction AmountRole, // Unique identifier @@ -63,12 +61,13 @@ private: QString lookupAddress(const std::string &address, bool tooltip) const; QVariant addressColor(const TransactionRecord *wtx) const; - QVariant formatTxStatus(const TransactionRecord *wtx) const; - QVariant formatTxDate(const TransactionRecord *wtx) const; + QString formatTxStatus(const TransactionRecord *wtx) const; + QString formatTxDate(const TransactionRecord *wtx) const; QString formatTxType(const TransactionRecord *wtx) const; QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const; - QVariant formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const; - QVariant formatTxDecoration(const TransactionRecord *wtx) const; + QString formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const; + QString formatTooltip(const TransactionRecord *rec) const; + QVariant txStatusDecoration(const TransactionRecord *wtx) const; QVariant txAddressDecoration(const TransactionRecord *wtx) const; private slots: