QT: Add 'copy full transaction details' option

Adds feature from issue #7484

modifies the ctrl-c binding to copy full transaction details in transaction view.

Added translation
This commit is contained in:
Eric Shaw 2016-03-01 14:16:32 -05:00 committed by ericshawlinux
parent e5121eb951
commit b51ed4036e
4 changed files with 41 additions and 6 deletions

View File

@ -609,6 +609,34 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
return QString::fromStdString(rec->hash.ToString()); return QString::fromStdString(rec->hash.ToString());
case TxHexRole: case TxHexRole:
return priv->getTxHex(rec); return priv->getTxHex(rec);
case TxPlainTextRole:
{
QString details;
QDateTime date = QDateTime::fromTime_t(static_cast<uint>(rec->time));
QString txLabel = walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(rec->address));
details.append(date.toString("M/d/yy HH:mm"));
details.append(" ");
details.append(formatTxStatus(rec));
details.append(". ");
if(!formatTxType(rec).isEmpty()) {
details.append(formatTxType(rec));
details.append(" ");
}
if(!rec->address.empty()) {
if(txLabel.isEmpty())
details.append(tr("(no label)") + " ");
else {
details.append("(");
details.append(txLabel);
details.append(") ");
}
details.append(QString::fromStdString(rec->address));
details.append(" ");
}
details.append(formatTxAmount(rec, false, BitcoinUnits::separatorNever));
return details;
}
case ConfirmedRole: case ConfirmedRole:
return rec->status.countsForBalance; return rec->status.countsForBalance;
case FormattedAmountRole: case FormattedAmountRole:

View File

@ -62,6 +62,8 @@ public:
TxHashRole, TxHashRole,
/** Transaction data, hex-encoded */ /** Transaction data, hex-encoded */
TxHexRole, TxHexRole,
/** Whole transaction as plain text */
TxPlainTextRole,
/** Is transaction confirmed? */ /** Is transaction confirmed? */
ConfirmedRole, ConfirmedRole,
/** Formatted amount, without brackets when unconfirmed */ /** Formatted amount, without brackets when unconfirmed */

View File

@ -142,6 +142,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
QAction *copyAmountAction = new QAction(tr("Copy amount"), this); QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
QAction *copyTxIDAction = new QAction(tr("Copy transaction ID"), this); QAction *copyTxIDAction = new QAction(tr("Copy transaction ID"), this);
QAction *copyTxHexAction = new QAction(tr("Copy raw transaction"), this); QAction *copyTxHexAction = new QAction(tr("Copy raw transaction"), this);
QAction *copyTxPlainText = new QAction(tr("Copy full transaction details"), this);
QAction *editLabelAction = new QAction(tr("Edit label"), this); QAction *editLabelAction = new QAction(tr("Edit label"), this);
QAction *showDetailsAction = new QAction(tr("Show transaction details"), this); QAction *showDetailsAction = new QAction(tr("Show transaction details"), this);
@ -151,6 +152,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
contextMenu->addAction(copyAmountAction); contextMenu->addAction(copyAmountAction);
contextMenu->addAction(copyTxIDAction); contextMenu->addAction(copyTxIDAction);
contextMenu->addAction(copyTxHexAction); contextMenu->addAction(copyTxHexAction);
contextMenu->addAction(copyTxPlainText);
contextMenu->addAction(editLabelAction); contextMenu->addAction(editLabelAction);
contextMenu->addAction(showDetailsAction); contextMenu->addAction(showDetailsAction);
@ -173,6 +175,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount())); connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
connect(copyTxIDAction, SIGNAL(triggered()), this, SLOT(copyTxID())); connect(copyTxIDAction, SIGNAL(triggered()), this, SLOT(copyTxID()));
connect(copyTxHexAction, SIGNAL(triggered()), this, SLOT(copyTxHex())); connect(copyTxHexAction, SIGNAL(triggered()), this, SLOT(copyTxHex()));
connect(copyTxPlainText, SIGNAL(triggered()), this, SLOT(copyTxPlainText()));
connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel())); connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel()));
connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails())); connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails()));
} }
@ -388,6 +391,11 @@ void TransactionView::copyTxHex()
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxHexRole); GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxHexRole);
} }
void TransactionView::copyTxPlainText()
{
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxPlainTextRole);
}
void TransactionView::editLabel() void TransactionView::editLabel()
{ {
if(!transactionView->selectionModel() ||!model) if(!transactionView->selectionModel() ||!model)
@ -526,14 +534,10 @@ bool TransactionView::eventFilter(QObject *obj, QEvent *event)
QKeyEvent *ke = static_cast<QKeyEvent *>(event); QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_C && ke->modifiers().testFlag(Qt::ControlModifier)) if (ke->key() == Qt::Key_C && ke->modifiers().testFlag(Qt::ControlModifier))
{ {
QModelIndex i = this->transactionView->currentIndex(); GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxPlainTextRole);
if (i.isValid() && i.column() == TransactionTableModel::Amount)
{
GUIUtil::setClipboard(i.data(TransactionTableModel::FormattedAmountRole).toString());
return true; return true;
} }
} }
}
return QWidget::eventFilter(obj, event); return QWidget::eventFilter(obj, event);
} }

View File

@ -94,6 +94,7 @@ private Q_SLOTS:
void copyAmount(); void copyAmount();
void copyTxID(); void copyTxID();
void copyTxHex(); void copyTxHex();
void copyTxPlainText();
void openThirdPartyTxUrl(QString url); void openThirdPartyTxUrl(QString url);
void updateWatchOnlyColumn(bool fHaveWatchOnly); void updateWatchOnlyColumn(bool fHaveWatchOnly);