2 #include "ui_addressbookpage.h"
18 #include <QSortFilterProxyModel>
20 #include <QMessageBox>
33 #ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac
34 ui->newAddress->setIcon(QIcon());
35 ui->copyAddress->setIcon(QIcon());
36 ui->deleteAddress->setIcon(QIcon());
37 ui->verifyMessage->setIcon(QIcon());
38 ui->signMessage->setIcon(QIcon());
39 ui->exportButton->setIcon(QIcon());
40 ui->importQRCodeButton->setIcon(QIcon());
44 ui->showQRCode->setVisible(
false);
46 ui->showQRCode->setVisible(
true);
49 ui->importQRCodeButton->setVisible(
false);
55 connect(
ui->tableView, SIGNAL(doubleClicked(QModelIndex)),
this, SLOT(accept()));
56 ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
57 ui->tableView->setFocus();
58 ui->exportButton->hide();
61 ui->buttonBox->setVisible(
false);
67 ui->labelExplanation->setText(tr(
"These are your Feathercoin addresses for sending payments. Always check the amount and the receiving address before sending coins."));
68 ui->deleteAddress->setVisible(
true);
69 ui->signMessage->setVisible(
false);
71 ui->importQRCodeButton->setVisible(
false);
75 ui->labelExplanation->setText(tr(
"These are your Feathercoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you."));
76 ui->deleteAddress->setVisible(
false);
77 ui->signMessage->setVisible(
true);
79 ui->importQRCodeButton->setVisible(
true);
85 QAction *copyAddressAction =
new QAction(
ui->copyAddress->text(),
this);
86 QAction *copyLabelAction =
new QAction(tr(
"Copy &Label"),
this);
87 QAction *editAction =
new QAction(tr(
"&Edit"),
this);
88 QAction *sendCoinsAction =
new QAction(tr(
"Send &Coins"),
this);
89 QAction *showQRCodeAction =
new QAction(
ui->showQRCode->text(),
this);
90 QAction *signMessageAction =
new QAction(
ui->signMessage->text(),
this);
91 QAction *verifyMessageAction =
new QAction(
ui->verifyMessage->text(),
this);
96 contextMenu->addAction(copyAddressAction);
97 contextMenu->addAction(copyLabelAction);
98 contextMenu->addAction(editAction);
100 contextMenu->addAction(deleteAction);
101 contextMenu->addSeparator();
103 contextMenu->addAction(sendCoinsAction);
105 contextMenu->addAction(showQRCodeAction);
108 contextMenu->addAction(signMessageAction);
110 contextMenu->addAction(verifyMessageAction);
115 connect(editAction, SIGNAL(triggered()),
this, SLOT(
onEditAction()));
122 connect(
ui->tableView, SIGNAL(customContextMenuRequested(QPoint)),
this, SLOT(
contextualMenu(QPoint)));
125 connect(
ui->buttonBox, SIGNAL(accepted()),
this, SLOT(accept()));
142 proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
143 proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
158 ui->tableView->sortByColumn(0, Qt::AscendingOrder);
161 #if QT_VERSION < 0x050000
169 connect(
ui->tableView->selectionModel(), SIGNAL(
selectionChanged(QItemSelection,QItemSelection)),
173 connect(model, SIGNAL(rowsInserted(QModelIndex,
int,
int)),
this, SLOT(
selectNewAddress(QModelIndex,
int,
int)));
195 if(!
ui->tableView->selectionModel())
197 QModelIndexList indexes =
ui->tableView->selectionModel()->selectedRows();
198 if(indexes.isEmpty())
206 QModelIndex origIndex =
proxyModel->mapToSource(indexes.at(0));
213 QTableView *table =
ui->tableView;
216 foreach (QModelIndex index, indexes)
218 QString address = index.data().toString();
225 QTableView *table =
ui->tableView;
228 foreach (QModelIndex index, indexes)
230 QString address = index.data().toString();
237 QTableView *table =
ui->tableView;
240 foreach (QModelIndex index, indexes)
242 QString address = index.data().toString();
265 QTableView *table =
ui->tableView;
266 if(!table->selectionModel())
269 QModelIndexList indexes = table->selectionModel()->selectedRows();
270 if(!indexes.isEmpty())
272 table->model()->removeRow(indexes.at(0).row());
279 QTableView *table =
ui->tableView;
280 if(!table->selectionModel())
283 if(table->selectionModel()->hasSelection())
289 ui->deleteAddress->setEnabled(
true);
290 ui->deleteAddress->setVisible(
true);
292 ui->signMessage->setEnabled(
false);
293 ui->signMessage->setVisible(
false);
294 ui->verifyMessage->setEnabled(
true);
295 ui->verifyMessage->setVisible(
true);
299 ui->deleteAddress->setEnabled(
false);
300 ui->deleteAddress->setVisible(
false);
302 ui->signMessage->setEnabled(
true);
303 ui->signMessage->setVisible(
true);
304 ui->verifyMessage->setEnabled(
false);
305 ui->verifyMessage->setVisible(
false);
308 ui->copyAddress->setEnabled(
true);
309 ui->showQRCode->setEnabled(
true);
310 ui->importQRCodeButton->setEnabled(
true);
314 ui->deleteAddress->setEnabled(
false);
315 ui->showQRCode->setEnabled(
false);
316 ui->copyAddress->setEnabled(
false);
317 ui->signMessage->setEnabled(
false);
318 ui->verifyMessage->setEnabled(
false);
324 QTableView *table =
ui->tableView;
325 if(!table->selectionModel() || !table->model())
334 foreach (QModelIndex index, indexes)
336 QVariant address = table->model()->data(index);
346 QDialog::done(retval);
354 tr(
"Export Address Book Data"), QString(),
355 tr(
"Comma separated file (*.csv)"));
357 if (filename.isNull())
return;
368 QMessageBox::critical(
this, tr(
"Error exporting"), tr(
"Could not write to file %1.").
arg(filename),
369 QMessageBox::Abort, QMessageBox::Abort);
377 connect(snap, SIGNAL(finished(QString)),
this, SLOT(
onSnapClosed(QString)));
383 if (privKey.size() > 0)
393 QTableView *table =
ui->tableView;
396 foreach (QModelIndex index, indexes)
398 QString address = index.data().toString();
399 QString label = index.sibling(index.row(), 0).data(Qt::EditRole).toString();
403 dialog->setAttribute(Qt::WA_DeleteOnClose);
411 QModelIndex index =
ui->tableView->indexAt(point);
424 ui->tableView->setFocus();
425 ui->tableView->selectRow(idx.row());
void on_newAddress_clicked()
Create a new address for receiving coins and / or add a new address book entry.
void onCopyLabelAction()
Copy label of currently selected address entry to clipboard (no button)
void addColumn(const QString &title, int column, int role=Qt::EditRole)
QModelIndex index(int row, int column, const QModelIndex &parent) const
QString getAddress() const
void importWallet(QString addr)
void setModel(AddressTableModel *model)
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut)
Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix when ...
void onEditAction()
Edit currently selected address entry (no button)
AddressTableModel * model
void on_showQRCode_clicked()
Generate a QR Code from the currently selected address.
QSortFilterProxyModel * proxyModel
void on_exportButton_clicked()
Export button clicked.
Open address book for editing.
void onSnapClosed(QString s)
Scan of QR code finished.
Export a Qt table model to a CSV file.
QString newAddressToSelect
void verifyMessage(QString addr)
void on_importQRCodeButton_clicked()
Import from a QR Code into your wallet.
static const QString Send
Specifies send address.
void selectNewAddress(const QModelIndex &parent, int begin, int)
New entry/entries were added to address table.
Open address book to pick address for sending.
void onSendCoinsAction()
Open send coins dialog for currently selected address (no button)
void setModel(AddressTableModel *model)
void on_copyAddress_clicked()
Copy address of currently selected address entry to clipboard.
void setOptionsModel(OptionsModel *optionsModel)
Widget that shows a list of sending or receiving addresses.
Qt model of the address book in the core.
OptionsModel * optionsModel
void setModel(OptionsModel *model)
void selectionChanged()
Set button states based on selected tab and selection.
void setModel(const QAbstractItemModel *model)
Interface from Qt to configuration data structure for Bitcoin client.
static const QString Receive
Specifies receive address.
Dialog for editing an address and associated information.
void sendCoins(QString addr)
void signMessage(QString addr)
void copyEntryData(QAbstractItemView *view, int column, int role)
Copy a field of the currently selected entry of a view to the clipboard.
void on_signMessage_clicked()
Open the sign message tab in the Sign/Verify Message dialog with currently selected address...
void contextualMenu(const QPoint &point)
Spawn contextual menu (right mouse menu) for address book entry.
void on_deleteAddress_clicked()
Delete currently selected address entry.
bool write()
Perform export of the model to CSV.
AddressBookPage(Mode mode, Tabs tab, QWidget *parent=0)
Type of address (Send or Receive)
void on_verifyMessage_clicked()
Open the verify message tab in the Sign/Verify Message dialog with currently selected address...