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