[Qt] Support for abandoned/abandoning transactions
This commit is contained in:
committed by
lateminer
parent
ae1775b6ae
commit
db7da64904
@@ -37,7 +37,7 @@
|
||||
|
||||
TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *parent) :
|
||||
QWidget(parent), model(0), transactionProxyModel(0),
|
||||
transactionView(0)
|
||||
transactionView(0), abandonAction(0)
|
||||
{
|
||||
// Build filter row
|
||||
setContentsMargins(0,0,0,0);
|
||||
@@ -137,6 +137,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
transactionView = view;
|
||||
|
||||
// Actions
|
||||
abandonAction = new QAction(tr("Abandon transaction"), this);
|
||||
QAction *copyAddressAction = new QAction(tr("Copy address"), this);
|
||||
QAction *copyLabelAction = new QAction(tr("Copy label"), this);
|
||||
QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
|
||||
@@ -153,8 +154,10 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
contextMenu->addAction(copyTxIDAction);
|
||||
contextMenu->addAction(copyTxHexAction);
|
||||
contextMenu->addAction(copyTxPlainText);
|
||||
contextMenu->addAction(editLabelAction);
|
||||
contextMenu->addAction(showDetailsAction);
|
||||
contextMenu->addSeparator();
|
||||
contextMenu->addAction(abandonAction);
|
||||
contextMenu->addAction(editLabelAction);
|
||||
|
||||
mapperThirdPartyTxUrls = new QSignalMapper(this);
|
||||
|
||||
@@ -170,6 +173,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));
|
||||
connect(view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint)));
|
||||
|
||||
connect(abandonAction, SIGNAL(triggered()), this, SLOT(abandonTx()));
|
||||
connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(copyAddress()));
|
||||
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
||||
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
|
||||
@@ -360,12 +364,37 @@ void TransactionView::exportClicked()
|
||||
void TransactionView::contextualMenu(const QPoint &point)
|
||||
{
|
||||
QModelIndex index = transactionView->indexAt(point);
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows(0);
|
||||
|
||||
// check if transaction can be abandoned, disable context menu action in case it doesn't
|
||||
uint256 hash;
|
||||
hash.SetHex(selection.at(0).data(TransactionTableModel::TxHashRole).toString().toStdString());
|
||||
abandonAction->setEnabled(model->transactionCanBeAbandoned(hash));
|
||||
|
||||
if(index.isValid())
|
||||
{
|
||||
contextMenu->exec(QCursor::pos());
|
||||
}
|
||||
}
|
||||
|
||||
void TransactionView::abandonTx()
|
||||
{
|
||||
if(!transactionView || !transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows(0);
|
||||
|
||||
// get the hash from the TxHashRole (QVariant / QString)
|
||||
uint256 hash;
|
||||
QString hashQStr = selection.at(0).data(TransactionTableModel::TxHashRole).toString();
|
||||
hash.SetHex(hashQStr.toStdString());
|
||||
|
||||
// Abandon the wallet transaction over the walletModel
|
||||
model->abandonTransaction(hash);
|
||||
|
||||
// Update the table
|
||||
model->getTransactionTableModel()->updateTransaction(hashQStr, CT_UPDATED, false);
|
||||
}
|
||||
|
||||
void TransactionView::copyAddress()
|
||||
{
|
||||
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::AddressRole);
|
||||
|
||||
Reference in New Issue
Block a user