mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-11 15:48:05 +00:00
Copy amount to clipboard (implements #657)
- Also, unify similar code related to copying transaction fields to clipboard
This commit is contained in:
parent
c4a4a4b886
commit
c58e7d4e01
@ -12,6 +12,9 @@
|
||||
#include <QLineEdit>
|
||||
#include <QUrl>
|
||||
#include <QTextDocument> // For Qt::escape
|
||||
#include <QAbstractItemView>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
|
||||
QString GUIUtil::dateTimeStr(qint64 nTime)
|
||||
{
|
||||
@ -88,3 +91,16 @@ QString GUIUtil::HtmlEscape(const std::string& str, bool fMultiLine)
|
||||
{
|
||||
return HtmlEscape(QString::fromStdString(str), fMultiLine);
|
||||
}
|
||||
|
||||
void GUIUtil::copyEntryData(QAbstractItemView *view, int column, int role)
|
||||
{
|
||||
if(!view || !view->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = view->selectionModel()->selectedRows(column);
|
||||
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
// Copy first item
|
||||
QApplication::clipboard()->setText(selection.at(0).data(role).toString());
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ class QLineEdit;
|
||||
class QWidget;
|
||||
class QDateTime;
|
||||
class QUrl;
|
||||
class QAbstractItemView;
|
||||
QT_END_NAMESPACE
|
||||
class SendCoinsRecipient;
|
||||
|
||||
@ -35,6 +36,15 @@ public:
|
||||
// HTML escaping for rich text controls
|
||||
static QString HtmlEscape(const QString& str, bool fMultiLine=false);
|
||||
static QString HtmlEscape(const std::string& str, bool fMultiLine=false);
|
||||
|
||||
/** Copy a field of the currently selected entry of a view to the clipboard. Does nothing if nothing
|
||||
is selected.
|
||||
@param[in] column Data column to extract from the model
|
||||
@param[in] role Data role to extract from the model
|
||||
@see TransactionView::copyLabel, TransactionView::copyAmount, TransactionView::copyAddress
|
||||
*/
|
||||
static void copyEntryData(QAbstractItemView *view, int column, int role=Qt::EditRole);
|
||||
|
||||
};
|
||||
|
||||
#endif // GUIUTIL_H
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "transactiondescdialog.h"
|
||||
#include "editaddressdialog.h"
|
||||
#include "optionsmodel.h"
|
||||
#include "guiutil.h"
|
||||
|
||||
#include <QScrollBar>
|
||||
#include <QComboBox>
|
||||
@ -123,12 +124,14 @@ TransactionView::TransactionView(QWidget *parent) :
|
||||
// Actions
|
||||
QAction *copyAddressAction = new QAction(tr("Copy address"), this);
|
||||
QAction *copyLabelAction = new QAction(tr("Copy label"), this);
|
||||
QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
|
||||
QAction *editLabelAction = new QAction(tr("Edit label"), this);
|
||||
QAction *showDetailsAction = new QAction(tr("Show details..."), this);
|
||||
|
||||
contextMenu = new QMenu();
|
||||
contextMenu->addAction(copyAddressAction);
|
||||
contextMenu->addAction(copyLabelAction);
|
||||
contextMenu->addAction(copyAmountAction);
|
||||
contextMenu->addAction(editLabelAction);
|
||||
contextMenu->addAction(showDetailsAction);
|
||||
|
||||
@ -139,14 +142,11 @@ TransactionView::TransactionView(QWidget *parent) :
|
||||
connect(amountWidget, SIGNAL(textChanged(QString)), this, SLOT(changedAmount(QString)));
|
||||
|
||||
connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));
|
||||
|
||||
connect(view,
|
||||
SIGNAL(customContextMenuRequested(QPoint)),
|
||||
this,
|
||||
SLOT(contextualMenu(QPoint)));
|
||||
connect(view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint)));
|
||||
|
||||
connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(copyAddress()));
|
||||
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
||||
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
|
||||
connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel()));
|
||||
connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails()));
|
||||
}
|
||||
@ -302,24 +302,17 @@ void TransactionView::contextualMenu(const QPoint &point)
|
||||
|
||||
void TransactionView::copyAddress()
|
||||
{
|
||||
if(!transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
QApplication::clipboard()->setText(selection.at(0).data(TransactionTableModel::AddressRole).toString());
|
||||
}
|
||||
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::AddressRole);
|
||||
}
|
||||
|
||||
void TransactionView::copyLabel()
|
||||
{
|
||||
if(!transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
QApplication::clipboard()->setText(selection.at(0).data(TransactionTableModel::LabelRole).toString());
|
||||
}
|
||||
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::LabelRole);
|
||||
}
|
||||
|
||||
void TransactionView::copyAmount()
|
||||
{
|
||||
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::FormattedAmountRole);
|
||||
}
|
||||
|
||||
void TransactionView::editLabel()
|
||||
|
@ -60,6 +60,11 @@ private:
|
||||
private slots:
|
||||
void contextualMenu(const QPoint &);
|
||||
void dateRangeChanged();
|
||||
void showDetails();
|
||||
void copyAddress();
|
||||
void editLabel();
|
||||
void copyLabel();
|
||||
void copyAmount();
|
||||
|
||||
signals:
|
||||
void doubleClicked(const QModelIndex&);
|
||||
@ -70,10 +75,6 @@ public slots:
|
||||
void changedPrefix(const QString &prefix);
|
||||
void changedAmount(const QString &amount);
|
||||
void exportClicked();
|
||||
void showDetails();
|
||||
void copyAddress();
|
||||
void editLabel();
|
||||
void copyLabel();
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user