reorganize transaction model data function, and transaction tooltip

This commit is contained in:
Wladimir J. van der Laan 2011-08-06 18:37:41 +02:00
parent d4e3cb4c03
commit e74e8a184a
1 changed files with 25 additions and 56 deletions

View File

@ -281,7 +281,7 @@ QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) cons
status = tr("Offline (%1 confirmations)").arg(wtx->status.depth); status = tr("Offline (%1 confirmations)").arg(wtx->status.depth);
break; break;
case TransactionStatus::Unconfirmed: case TransactionStatus::Unconfirmed:
status = tr("Unconfirmed (%1 of %2 confirmations required)").arg(wtx->status.depth).arg(TransactionRecord::NumConfirmations); status = tr("Unconfirmed (%1 of %2 confirmations)").arg(wtx->status.depth).arg(TransactionRecord::NumConfirmations);
break; break;
case TransactionStatus::HaveConfirmations: case TransactionStatus::HaveConfirmations:
status = tr("Confirmed (%1 confirmations)").arg(wtx->status.depth); status = tr("Confirmed (%1 confirmations)").arg(wtx->status.depth);
@ -478,13 +478,12 @@ QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx)
QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const
{ {
QString tooltip = formatTxType(rec); QString tooltip = formatTxStatus(rec) + QString("\n") + formatTxType(rec);
if(rec->type==TransactionRecord::RecvFromIP || rec->type==TransactionRecord::SendToIP || if(rec->type==TransactionRecord::RecvFromIP || rec->type==TransactionRecord::SendToIP ||
rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress) rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress)
{ {
tooltip += QString(" ") + formatTxToAddress(rec, true); tooltip += QString(" ") + formatTxToAddress(rec, true);
} }
tooltip += QString("\n") + formatTxStatus(rec);
return tooltip; return tooltip;
} }
@ -494,8 +493,9 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
return QVariant(); return QVariant();
TransactionRecord *rec = static_cast<TransactionRecord*>(index.internalPointer()); TransactionRecord *rec = static_cast<TransactionRecord*>(index.internalPointer());
if(role == Qt::DecorationRole) switch(role)
{ {
case Qt::DecorationRole:
switch(index.column()) switch(index.column())
{ {
case Status: case Status:
@ -503,10 +503,8 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
case ToAddress: case ToAddress:
return txAddressDecoration(rec); return txAddressDecoration(rec);
} }
} break;
else if(role == Qt::DisplayRole) case Qt::DisplayRole:
{
// Delegate to specific column handlers
switch(index.column()) switch(index.column())
{ {
case Date: case Date:
@ -518,10 +516,9 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
case Amount: case Amount:
return formatTxAmount(rec); return formatTxAmount(rec);
} }
} break;
else if(role == Qt::EditRole) case Qt::EditRole:
{ // Edit role is used for sorting, so return the unformatted values
// Edit role is used for sorting so return the real values
switch(index.column()) switch(index.column())
{ {
case Status: case Status:
@ -535,24 +532,13 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
case Amount: case Amount:
return rec->credit + rec->debit; return rec->credit + rec->debit;
} }
} break;
else if (role == Qt::ToolTipRole) case Qt::ToolTipRole:
{ return formatTooltip(rec);
switch(index.column()) case Qt::TextAlignmentRole:
{
case Status:
return formatTxStatus(rec);
default:
return formatTooltip(rec);
}
}
else if (role == Qt::TextAlignmentRole)
{
return column_alignments[index.column()]; return column_alignments[index.column()];
} case Qt::ForegroundRole:
else if (role == Qt::ForegroundRole) // Non-confirmed transactions are grey
{
/* Non-confirmed transactions are grey */
if(!rec->status.confirmed) if(!rec->status.confirmed)
{ {
return COLOR_UNCONFIRMED; return COLOR_UNCONFIRMED;
@ -565,43 +551,26 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
{ {
return addressColor(rec); return addressColor(rec);
} }
} break;
else if (role == TypeRole) case TypeRole:
{
return rec->type; return rec->type;
} case DateRole:
else if (role == DateRole)
{
return QDateTime::fromTime_t(static_cast<uint>(rec->time)); return QDateTime::fromTime_t(static_cast<uint>(rec->time));
} case LongDescriptionRole:
else if (role == LongDescriptionRole)
{
return priv->describe(rec); return priv->describe(rec);
} case AddressRole:
else if (role == AddressRole)
{
return QString::fromStdString(rec->address); return QString::fromStdString(rec->address);
} case LabelRole:
else if (role == LabelRole)
{
return walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(rec->address)); return walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(rec->address));
} case AmountRole:
else if (role == AmountRole)
{
return rec->credit + rec->debit; return rec->credit + rec->debit;
} case TxIDRole:
else if (role == TxIDRole)
{
return QString::fromStdString(rec->getTxID()); return QString::fromStdString(rec->getTxID());
} case ConfirmedRole:
else if (role == ConfirmedRole)
{
// Return True if transaction counts for balance // Return True if transaction counts for balance
return rec->status.confirmed && !(rec->type == TransactionRecord::Generated && return rec->status.confirmed && !(rec->type == TransactionRecord::Generated &&
rec->status.maturity != TransactionStatus::Mature); rec->status.maturity != TransactionStatus::Mature);
} case FormattedAmountRole:
else if (role == FormattedAmountRole)
{
return formatTxAmount(rec, false); return formatTxAmount(rec, false);
} }
return QVariant(); return QVariant();