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 <QLineEdit>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QTextDocument> // For Qt::escape
|
#include <QTextDocument> // For Qt::escape
|
||||||
|
#include <QAbstractItemView>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QClipboard>
|
||||||
|
|
||||||
QString GUIUtil::dateTimeStr(qint64 nTime)
|
QString GUIUtil::dateTimeStr(qint64 nTime)
|
||||||
{
|
{
|
||||||
@ -88,3 +91,16 @@ QString GUIUtil::HtmlEscape(const std::string& str, bool fMultiLine)
|
|||||||
{
|
{
|
||||||
return HtmlEscape(QString::fromStdString(str), 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 QWidget;
|
||||||
class QDateTime;
|
class QDateTime;
|
||||||
class QUrl;
|
class QUrl;
|
||||||
|
class QAbstractItemView;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
class SendCoinsRecipient;
|
class SendCoinsRecipient;
|
||||||
|
|
||||||
@ -35,6 +36,15 @@ public:
|
|||||||
// HTML escaping for rich text controls
|
// HTML escaping for rich text controls
|
||||||
static QString HtmlEscape(const QString& str, bool fMultiLine=false);
|
static QString HtmlEscape(const QString& str, bool fMultiLine=false);
|
||||||
static QString HtmlEscape(const std::string& 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
|
#endif // GUIUTIL_H
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "transactiondescdialog.h"
|
#include "transactiondescdialog.h"
|
||||||
#include "editaddressdialog.h"
|
#include "editaddressdialog.h"
|
||||||
#include "optionsmodel.h"
|
#include "optionsmodel.h"
|
||||||
|
#include "guiutil.h"
|
||||||
|
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
@ -123,12 +124,14 @@ TransactionView::TransactionView(QWidget *parent) :
|
|||||||
// Actions
|
// Actions
|
||||||
QAction *copyAddressAction = new QAction(tr("Copy address"), this);
|
QAction *copyAddressAction = new QAction(tr("Copy address"), this);
|
||||||
QAction *copyLabelAction = new QAction(tr("Copy label"), 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 *editLabelAction = new QAction(tr("Edit label"), this);
|
||||||
QAction *showDetailsAction = new QAction(tr("Show details..."), this);
|
QAction *showDetailsAction = new QAction(tr("Show details..."), this);
|
||||||
|
|
||||||
contextMenu = new QMenu();
|
contextMenu = new QMenu();
|
||||||
contextMenu->addAction(copyAddressAction);
|
contextMenu->addAction(copyAddressAction);
|
||||||
contextMenu->addAction(copyLabelAction);
|
contextMenu->addAction(copyLabelAction);
|
||||||
|
contextMenu->addAction(copyAmountAction);
|
||||||
contextMenu->addAction(editLabelAction);
|
contextMenu->addAction(editLabelAction);
|
||||||
contextMenu->addAction(showDetailsAction);
|
contextMenu->addAction(showDetailsAction);
|
||||||
|
|
||||||
@ -139,14 +142,11 @@ TransactionView::TransactionView(QWidget *parent) :
|
|||||||
connect(amountWidget, SIGNAL(textChanged(QString)), this, SLOT(changedAmount(QString)));
|
connect(amountWidget, SIGNAL(textChanged(QString)), this, SLOT(changedAmount(QString)));
|
||||||
|
|
||||||
connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));
|
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(copyAddressAction, SIGNAL(triggered()), this, SLOT(copyAddress()));
|
||||||
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
||||||
|
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
|
||||||
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()));
|
||||||
}
|
}
|
||||||
@ -302,24 +302,17 @@ void TransactionView::contextualMenu(const QPoint &point)
|
|||||||
|
|
||||||
void TransactionView::copyAddress()
|
void TransactionView::copyAddress()
|
||||||
{
|
{
|
||||||
if(!transactionView->selectionModel())
|
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::AddressRole);
|
||||||
return;
|
|
||||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
|
||||||
if(!selection.isEmpty())
|
|
||||||
{
|
|
||||||
QApplication::clipboard()->setText(selection.at(0).data(TransactionTableModel::AddressRole).toString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransactionView::copyLabel()
|
void TransactionView::copyLabel()
|
||||||
{
|
{
|
||||||
if(!transactionView->selectionModel())
|
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::LabelRole);
|
||||||
return;
|
}
|
||||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
|
||||||
if(!selection.isEmpty())
|
void TransactionView::copyAmount()
|
||||||
{
|
{
|
||||||
QApplication::clipboard()->setText(selection.at(0).data(TransactionTableModel::LabelRole).toString());
|
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::FormattedAmountRole);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransactionView::editLabel()
|
void TransactionView::editLabel()
|
||||||
|
@ -60,6 +60,11 @@ private:
|
|||||||
private slots:
|
private slots:
|
||||||
void contextualMenu(const QPoint &);
|
void contextualMenu(const QPoint &);
|
||||||
void dateRangeChanged();
|
void dateRangeChanged();
|
||||||
|
void showDetails();
|
||||||
|
void copyAddress();
|
||||||
|
void editLabel();
|
||||||
|
void copyLabel();
|
||||||
|
void copyAmount();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void doubleClicked(const QModelIndex&);
|
void doubleClicked(const QModelIndex&);
|
||||||
@ -70,10 +75,6 @@ public slots:
|
|||||||
void changedPrefix(const QString &prefix);
|
void changedPrefix(const QString &prefix);
|
||||||
void changedAmount(const QString &amount);
|
void changedAmount(const QString &amount);
|
||||||
void exportClicked();
|
void exportClicked();
|
||||||
void showDetails();
|
|
||||||
void copyAddress();
|
|
||||||
void editLabel();
|
|
||||||
void copyLabel();
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user