Qt: Add "Copy URI" to payment request context menu
This commit is contained in:
parent
3cd836c1d8
commit
21f5a6364d
2 changed files with 35 additions and 10 deletions
|
@ -43,18 +43,21 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *platformStyle, QWidg
|
||||||
}
|
}
|
||||||
|
|
||||||
// context menu actions
|
// context menu actions
|
||||||
|
QAction *copyURIAction = new QAction(tr("Copy URI"), this);
|
||||||
QAction *copyLabelAction = new QAction(tr("Copy label"), this);
|
QAction *copyLabelAction = new QAction(tr("Copy label"), this);
|
||||||
QAction *copyMessageAction = new QAction(tr("Copy message"), this);
|
QAction *copyMessageAction = new QAction(tr("Copy message"), this);
|
||||||
QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
|
QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
|
||||||
|
|
||||||
// context menu
|
// context menu
|
||||||
contextMenu = new QMenu();
|
contextMenu = new QMenu();
|
||||||
|
contextMenu->addAction(copyURIAction);
|
||||||
contextMenu->addAction(copyLabelAction);
|
contextMenu->addAction(copyLabelAction);
|
||||||
contextMenu->addAction(copyMessageAction);
|
contextMenu->addAction(copyMessageAction);
|
||||||
contextMenu->addAction(copyAmountAction);
|
contextMenu->addAction(copyAmountAction);
|
||||||
|
|
||||||
// context menu signals
|
// context menu signals
|
||||||
connect(ui->recentRequestsView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showMenu(QPoint)));
|
connect(ui->recentRequestsView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showMenu(QPoint)));
|
||||||
|
connect(copyURIAction, SIGNAL(triggered()), this, SLOT(copyURI()));
|
||||||
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
|
||||||
connect(copyMessageAction, SIGNAL(triggered()), this, SLOT(copyMessage()));
|
connect(copyMessageAction, SIGNAL(triggered()), this, SLOT(copyMessage()));
|
||||||
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
|
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
|
||||||
|
@ -227,30 +230,50 @@ void ReceiveCoinsDialog::keyPressEvent(QKeyEvent *event)
|
||||||
this->QDialog::keyPressEvent(event);
|
this->QDialog::keyPressEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QModelIndex ReceiveCoinsDialog::selectedRow()
|
||||||
|
{
|
||||||
|
if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel())
|
||||||
|
return QModelIndex();
|
||||||
|
QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows();
|
||||||
|
if(selection.empty())
|
||||||
|
return QModelIndex();
|
||||||
|
// correct for selection mode ContiguousSelection
|
||||||
|
QModelIndex firstIndex = selection.at(0);
|
||||||
|
return firstIndex;
|
||||||
|
}
|
||||||
|
|
||||||
// copy column of selected row to clipboard
|
// copy column of selected row to clipboard
|
||||||
void ReceiveCoinsDialog::copyColumnToClipboard(int column)
|
void ReceiveCoinsDialog::copyColumnToClipboard(int column)
|
||||||
{
|
{
|
||||||
if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel())
|
QModelIndex firstIndex = selectedRow();
|
||||||
|
if (!firstIndex.isValid()) {
|
||||||
return;
|
return;
|
||||||
QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows();
|
}
|
||||||
if(selection.empty())
|
|
||||||
return;
|
|
||||||
// correct for selection mode ContiguousSelection
|
|
||||||
QModelIndex firstIndex = selection.at(0);
|
|
||||||
GUIUtil::setClipboard(model->getRecentRequestsTableModel()->data(firstIndex.child(firstIndex.row(), column), Qt::EditRole).toString());
|
GUIUtil::setClipboard(model->getRecentRequestsTableModel()->data(firstIndex.child(firstIndex.row(), column), Qt::EditRole).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// context menu
|
// context menu
|
||||||
void ReceiveCoinsDialog::showMenu(const QPoint &point)
|
void ReceiveCoinsDialog::showMenu(const QPoint &point)
|
||||||
{
|
{
|
||||||
if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel())
|
if (!selectedRow().isValid()) {
|
||||||
return;
|
|
||||||
QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows();
|
|
||||||
if(selection.empty())
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
contextMenu->exec(QCursor::pos());
|
contextMenu->exec(QCursor::pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// context menu action: copy URI
|
||||||
|
void ReceiveCoinsDialog::copyURI()
|
||||||
|
{
|
||||||
|
QModelIndex sel = selectedRow();
|
||||||
|
if (!sel.isValid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const RecentRequestsTableModel * const submodel = model->getRecentRequestsTableModel();
|
||||||
|
const QString uri = GUIUtil::formatBitcoinURI(submodel->entry(sel.row()).recipient);
|
||||||
|
GUIUtil::setClipboard(uri);
|
||||||
|
}
|
||||||
|
|
||||||
// context menu action: copy label
|
// context menu action: copy label
|
||||||
void ReceiveCoinsDialog::copyLabel()
|
void ReceiveCoinsDialog::copyLabel()
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,6 +60,7 @@ private:
|
||||||
QMenu *contextMenu;
|
QMenu *contextMenu;
|
||||||
const PlatformStyle *platformStyle;
|
const PlatformStyle *platformStyle;
|
||||||
|
|
||||||
|
QModelIndex selectedRow();
|
||||||
void copyColumnToClipboard(int column);
|
void copyColumnToClipboard(int column);
|
||||||
virtual void resizeEvent(QResizeEvent *event);
|
virtual void resizeEvent(QResizeEvent *event);
|
||||||
|
|
||||||
|
@ -71,6 +72,7 @@ private Q_SLOTS:
|
||||||
void recentRequestsView_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
void recentRequestsView_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
||||||
void updateDisplayUnit();
|
void updateDisplayUnit();
|
||||||
void showMenu(const QPoint &point);
|
void showMenu(const QPoint &point);
|
||||||
|
void copyURI();
|
||||||
void copyLabel();
|
void copyLabel();
|
||||||
void copyMessage();
|
void copyMessage();
|
||||||
void copyAmount();
|
void copyAmount();
|
||||||
|
|
Loading…
Reference in a new issue