|
|
@ -4,11 +4,13 @@ |
|
|
|
#include "addresstablemodel.h" |
|
|
|
#include "addresstablemodel.h" |
|
|
|
#include "editaddressdialog.h" |
|
|
|
#include "editaddressdialog.h" |
|
|
|
#include "csvmodelwriter.h" |
|
|
|
#include "csvmodelwriter.h" |
|
|
|
|
|
|
|
#include "guiutil.h" |
|
|
|
|
|
|
|
|
|
|
|
#include <QSortFilterProxyModel> |
|
|
|
#include <QSortFilterProxyModel> |
|
|
|
#include <QClipboard> |
|
|
|
#include <QClipboard> |
|
|
|
#include <QFileDialog> |
|
|
|
#include <QFileDialog> |
|
|
|
#include <QMessageBox> |
|
|
|
#include <QMessageBox> |
|
|
|
|
|
|
|
#include <QMenu> |
|
|
|
|
|
|
|
|
|
|
|
#ifdef USE_QRCODE |
|
|
|
#ifdef USE_QRCODE |
|
|
|
#include "qrcodedialog.h" |
|
|
|
#include "qrcodedialog.h" |
|
|
@ -53,7 +55,28 @@ AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
ui->tableView->setTabKeyNavigation(false); |
|
|
|
ui->tableView->setTabKeyNavigation(false); |
|
|
|
|
|
|
|
ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Context menu actions
|
|
|
|
|
|
|
|
QAction *copyAddressAction = new QAction(tr("Copy address"), this); |
|
|
|
|
|
|
|
QAction *copyLabelAction = new QAction(tr("Copy label"), this); |
|
|
|
|
|
|
|
QAction *editAction = new QAction(tr("Edit"), this); |
|
|
|
|
|
|
|
deleteAction = new QAction(tr("Delete"), this); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
contextMenu = new QMenu(); |
|
|
|
|
|
|
|
contextMenu->addAction(copyAddressAction); |
|
|
|
|
|
|
|
contextMenu->addAction(copyLabelAction); |
|
|
|
|
|
|
|
contextMenu->addAction(editAction); |
|
|
|
|
|
|
|
contextMenu->addAction(deleteAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(on_copyToClipboard_clicked())); |
|
|
|
|
|
|
|
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(onCopyLabelAction())); |
|
|
|
|
|
|
|
connect(editAction, SIGNAL(triggered()), this, SLOT(onEditAction())); |
|
|
|
|
|
|
|
connect(deleteAction, SIGNAL(triggered()), this, SLOT(on_deleteButton_clicked())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(ui->tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint))); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Pass through accept action from button box
|
|
|
|
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); |
|
|
|
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -108,18 +131,29 @@ void AddressBookPage::setModel(AddressTableModel *model) |
|
|
|
|
|
|
|
|
|
|
|
void AddressBookPage::on_copyToClipboard_clicked() |
|
|
|
void AddressBookPage::on_copyToClipboard_clicked() |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Copy currently selected address to clipboard
|
|
|
|
GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Address); |
|
|
|
// (or nothing, if nothing selected)
|
|
|
|
} |
|
|
|
QTableView *table = ui->tableView; |
|
|
|
void AddressBookPage::onCopyLabelAction() |
|
|
|
if(!table->selectionModel()) |
|
|
|
{ |
|
|
|
|
|
|
|
GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Label); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void AddressBookPage::onEditAction() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if(!ui->tableView->selectionModel()) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
QModelIndexList indexes = ui->tableView->selectionModel()->selectedRows(); |
|
|
|
|
|
|
|
if(indexes.isEmpty()) |
|
|
|
return; |
|
|
|
return; |
|
|
|
QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (QModelIndex index, indexes) |
|
|
|
EditAddressDialog dlg( |
|
|
|
{ |
|
|
|
tab == SendingTab ? |
|
|
|
QVariant address = index.data(); |
|
|
|
EditAddressDialog::EditSendingAddress : |
|
|
|
QApplication::clipboard()->setText(address.toString()); |
|
|
|
EditAddressDialog::EditReceivingAddress); |
|
|
|
} |
|
|
|
dlg.setModel(model); |
|
|
|
|
|
|
|
QModelIndex origIndex = proxyModel->mapToSource(indexes.at(0)); |
|
|
|
|
|
|
|
dlg.loadRow(origIndex.row()); |
|
|
|
|
|
|
|
dlg.exec(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void AddressBookPage::on_newAddressButton_clicked() |
|
|
|
void AddressBookPage::on_newAddressButton_clicked() |
|
|
@ -170,10 +204,14 @@ void AddressBookPage::selectionChanged() |
|
|
|
switch(tab) |
|
|
|
switch(tab) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case SendingTab: |
|
|
|
case SendingTab: |
|
|
|
|
|
|
|
// In sending tab, allow deletion of selection
|
|
|
|
ui->deleteButton->setEnabled(true); |
|
|
|
ui->deleteButton->setEnabled(true); |
|
|
|
|
|
|
|
deleteAction->setEnabled(true); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case ReceivingTab: |
|
|
|
case ReceivingTab: |
|
|
|
|
|
|
|
// Deleting receiving addresses, however, is not allowed
|
|
|
|
ui->deleteButton->setEnabled(false); |
|
|
|
ui->deleteButton->setEnabled(false); |
|
|
|
|
|
|
|
deleteAction->setEnabled(false); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
ui->copyToClipboard->setEnabled(true); |
|
|
|
ui->copyToClipboard->setEnabled(true); |
|
|
@ -207,6 +245,7 @@ void AddressBookPage::done(int retval) |
|
|
|
|
|
|
|
|
|
|
|
if(returnValue.isEmpty()) |
|
|
|
if(returnValue.isEmpty()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
// If no address entry selected, return rejected
|
|
|
|
retval = Rejected; |
|
|
|
retval = Rejected; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -257,3 +296,12 @@ void AddressBookPage::on_showQRCode_clicked() |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void AddressBookPage::contextualMenu(const QPoint &point) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
QModelIndex index = ui->tableView->indexAt(point); |
|
|
|
|
|
|
|
if(index.isValid()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
contextMenu->exec(QCursor::pos()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|