PRCYCoin  2.0.0.7rc1
P2P Digital Currency
editaddressdialog.cpp
Go to the documentation of this file.
1 // Copyright (c) 2011-2014 The Bitcoin developers
2 // Copyright (c) 2014-2015 The Dash developers
3 // Copyright (c) 2015-2018 The PIVX developers
4 // Copyright (c) 2018-2020 The DAPS Project developers
5 // Distributed under the MIT/X11 software license, see the accompanying
6 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
7 
8 #include "editaddressdialog.h"
9 #include "ui_editaddressdialog.h"
10 
11 #include "addresstablemodel.h"
12 #include "guiutil.h"
13 
14 #include <QDataWidgetMapper>
15 #include <QMessageBox>
16 
17 EditAddressDialog::EditAddressDialog(Mode mode, QWidget* parent) : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint),
18  ui(new Ui::EditAddressDialog),
19  mapper(0),
20  mode(mode),
21  model(0)
22 {
23  ui->setupUi(this);
24 
25  GUIUtil::setupAddressWidget(ui->addressEdit, this);
26 
27  switch (mode) {
29  setWindowTitle(tr("New receiving address"));
30  ui->addressEdit->setEnabled(false);
31  break;
32  case NewSendingAddress:
33  setWindowTitle(tr("New sending address"));
34  break;
36  setWindowTitle(tr("Edit receiving address"));
37  ui->addressEdit->setEnabled(false);
38  break;
39  case EditSendingAddress:
40  setWindowTitle(tr("Edit sending address"));
41  break;
42  }
43 
44  mapper = new QDataWidgetMapper(this);
45  mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
46 }
47 
49 {
50  delete ui;
51 }
52 
54 {
55  this->model = model;
56  if (!model)
57  return;
58 
59  mapper->setModel(model);
60  mapper->addMapping(ui->labelEdit, AddressTableModel::Label);
61  mapper->addMapping(ui->addressEdit, AddressTableModel::Address);
62 }
63 
65 {
66  mapper->setCurrentIndex(row);
67 }
68 
70 {
71  if (!model)
72  return false;
73 
74  switch (mode) {
76  case NewSendingAddress:
77  address = model->addRow(
79  ui->labelEdit->text(),
80  ui->addressEdit->text());
81  break;
83  case EditSendingAddress:
84  if (mapper->submit()) {
85  address = ui->addressEdit->text();
86  }
87  break;
88  }
89  return !address.isEmpty();
90 }
91 
93 {
94  if (!model)
95  return;
96 
97  if (!saveCurrentRow()) {
98  switch (model->getEditStatus()) {
100  // Failed with unknown reason. Just reject.
101  break;
103  // No changes were made during edit operation. Just reject.
104  break;
106  QMessageBox::warning(this, windowTitle(),
107  tr("The entered address \"%1\" is not a valid PRCY address.").arg(ui->addressEdit->text()),
108  QMessageBox::Ok, QMessageBox::Ok);
109  break;
111  QMessageBox::warning(this, windowTitle(),
112  tr("The entered address \"%1\" is already in the address book.").arg(ui->addressEdit->text()),
113  QMessageBox::Ok, QMessageBox::Ok);
114  break;
116  QMessageBox::critical(this, windowTitle(),
117  tr("Could not unlock wallet."),
118  QMessageBox::Ok, QMessageBox::Ok);
119  break;
121  QMessageBox::critical(this, windowTitle(),
122  tr("New key generation failed."),
123  QMessageBox::Ok, QMessageBox::Ok);
124  break;
125  }
126  return;
127  }
128  QDialog::accept();
129 }
130 
132 {
133  return address;
134 }
135 
136 void EditAddressDialog::setAddress(const QString& address)
137 {
138  this->address = address;
139  ui->addressEdit->setText(address);
140 }
EditAddressDialog::loadRow
void loadRow(int row)
Definition: editaddressdialog.cpp:64
EditAddressDialog::accept
void accept()
Definition: editaddressdialog.cpp:92
AddressTableModel::addRow
QString addRow(const QString &type, const QString &label, const QString &address)
Definition: addresstablemodel.cpp:333
EditAddressDialog::EditReceivingAddress
@ EditReceivingAddress
Definition: editaddressdialog.h:31
AddressTableModel
Qt model of the address book in the core.
Definition: addresstablemodel.h:19
AddressTableModel::KEY_GENERATION_FAILURE
@ KEY_GENERATION_FAILURE
Generating a new public key for a receiving address failed.
Definition: addresstablemodel.h:43
AddressTableModel::Receive
static const QString Receive
Specifies receive address.
Definition: addresstablemodel.h:47
EditAddressDialog::setModel
void setModel(AddressTableModel *model)
Definition: editaddressdialog.cpp:53
EditAddressDialog::EditSendingAddress
@ EditSendingAddress
Definition: editaddressdialog.h:32
EditAddressDialog
Dialog for editing an address and associated information.
Definition: editaddressdialog.h:23
EditAddressDialog::EditAddressDialog
EditAddressDialog(Mode mode, QWidget *parent)
Definition: editaddressdialog.cpp:17
EditAddressDialog::~EditAddressDialog
~EditAddressDialog()
Definition: editaddressdialog.cpp:48
EditAddressDialog::model
AddressTableModel * model
Definition: editaddressdialog.h:53
EditAddressDialog::mapper
QDataWidgetMapper * mapper
Definition: editaddressdialog.h:51
guiutil.h
AddressTableModel::Label
@ Label
User specified label.
Definition: addresstablemodel.h:28
EditAddressDialog::setAddress
void setAddress(const QString &address)
Definition: editaddressdialog.cpp:136
EditAddressDialog::NewSendingAddress
@ NewSendingAddress
Definition: editaddressdialog.h:30
EditAddressDialog::saveCurrentRow
bool saveCurrentRow()
Definition: editaddressdialog.cpp:69
editaddressdialog.h
EditAddressDialog::address
QString address
Definition: editaddressdialog.h:55
AddressTableModel::getEditStatus
EditStatus getEditStatus() const
Definition: addresstablemodel.h:75
EditAddressDialog::mode
Mode mode
Definition: editaddressdialog.h:52
AddressTableModel::WALLET_UNLOCK_FAILURE
@ WALLET_UNLOCK_FAILURE
Wallet could not be unlocked to create new receiving address.
Definition: addresstablemodel.h:42
Ui
Definition: 2faconfirmdialog.h:7
EditAddressDialog::ui
Ui::EditAddressDialog * ui
Definition: editaddressdialog.h:50
EditAddressDialog::Mode
Mode
Definition: editaddressdialog.h:28
AddressTableModel::INVALID_ADDRESS
@ INVALID_ADDRESS
Unparseable address.
Definition: addresstablemodel.h:40
AddressTableModel::OK
@ OK
Everything ok.
Definition: addresstablemodel.h:38
EditAddressDialog::getAddress
QString getAddress() const
Definition: editaddressdialog.cpp:131
AddressTableModel::NO_CHANGES
@ NO_CHANGES
No changes were made during edit operation.
Definition: addresstablemodel.h:39
AddressTableModel::Send
static const QString Send
Specifies send address.
Definition: addresstablemodel.h:46
GUIUtil::setupAddressWidget
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:86
AddressTableModel::DUPLICATE_ADDRESS
@ DUPLICATE_ADDRESS
Address already in address book.
Definition: addresstablemodel.h:41
addresstablemodel.h
AddressTableModel::Address
@ Address
Bitcoin address.
Definition: addresstablemodel.h:29
EditAddressDialog::NewReceivingAddress
@ NewReceivingAddress
Definition: editaddressdialog.h:29