]>
Commit | Line | Data |
---|---|---|
e592d43f | 1 | // Copyright (c) 2011-2013 The Bitcoin developers |
78253fcb | 2 | // Distributed under the MIT software license, see the accompanying |
e592d43f WL |
3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. |
4 | ||
b8e302eb WL |
5 | #include "editaddressdialog.h" |
6 | #include "ui_editaddressdialog.h" | |
32af5266 | 7 | |
44384a46 | 8 | #include "addresstablemodel.h" |
e457b021 | 9 | #include "guiutil.h" |
b8e302eb | 10 | |
44384a46 | 11 | #include <QDataWidgetMapper> |
48208883 | 12 | #include <QMessageBox> |
44384a46 | 13 | |
e457b021 | 14 | EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) : |
b8e302eb | 15 | QDialog(parent), |
6c1bf199 PK |
16 | ui(new Ui::EditAddressDialog), |
17 | mapper(0), | |
18 | mode(mode), | |
19 | model(0) | |
b8e302eb WL |
20 | { |
21 | ui->setupUi(this); | |
e457b021 WL |
22 | |
23 | GUIUtil::setupAddressWidget(ui->addressEdit, this); | |
44384a46 WL |
24 | |
25 | switch(mode) | |
26 | { | |
27 | case NewReceivingAddress: | |
28 | setWindowTitle(tr("New receiving address")); | |
29 | ui->addressEdit->setEnabled(false); | |
30 | break; | |
31 | case NewSendingAddress: | |
32 | setWindowTitle(tr("New sending address")); | |
33 | break; | |
34 | case EditReceivingAddress: | |
35 | setWindowTitle(tr("Edit receiving address")); | |
e6d23005 | 36 | ui->addressEdit->setEnabled(false); |
44384a46 WL |
37 | break; |
38 | case EditSendingAddress: | |
39 | setWindowTitle(tr("Edit sending address")); | |
40 | break; | |
41 | } | |
42 | ||
43 | mapper = new QDataWidgetMapper(this); | |
48208883 | 44 | mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); |
b8e302eb WL |
45 | } |
46 | ||
47 | EditAddressDialog::~EditAddressDialog() | |
48 | { | |
49 | delete ui; | |
50 | } | |
44384a46 WL |
51 | |
52 | void EditAddressDialog::setModel(AddressTableModel *model) | |
53 | { | |
48208883 | 54 | this->model = model; |
e6d23005 PK |
55 | if(!model) |
56 | return; | |
57 | ||
44384a46 WL |
58 | mapper->setModel(model); |
59 | mapper->addMapping(ui->labelEdit, AddressTableModel::Label); | |
60 | mapper->addMapping(ui->addressEdit, AddressTableModel::Address); | |
61 | } | |
62 | ||
63 | void EditAddressDialog::loadRow(int row) | |
64 | { | |
44384a46 WL |
65 | mapper->setCurrentIndex(row); |
66 | } | |
48208883 | 67 | |
ffccb569 | 68 | bool EditAddressDialog::saveCurrentRow() |
48208883 | 69 | { |
dead0ff8 WL |
70 | if(!model) |
71 | return false; | |
e6d23005 | 72 | |
48208883 WL |
73 | switch(mode) |
74 | { | |
75 | case NewReceivingAddress: | |
76 | case NewSendingAddress: | |
2547f1f7 | 77 | address = model->addRow( |
48208883 WL |
78 | mode == NewSendingAddress ? AddressTableModel::Send : AddressTableModel::Receive, |
79 | ui->labelEdit->text(), | |
ebff5c40 | 80 | ui->addressEdit->text()); |
48208883 WL |
81 | break; |
82 | case EditReceivingAddress: | |
83 | case EditSendingAddress: | |
2547f1f7 WL |
84 | if(mapper->submit()) |
85 | { | |
86 | address = ui->addressEdit->text(); | |
87 | } | |
48208883 WL |
88 | break; |
89 | } | |
ffccb569 | 90 | return !address.isEmpty(); |
48208883 | 91 | } |
669b0a58 WL |
92 | |
93 | void EditAddressDialog::accept() | |
94 | { | |
dead0ff8 WL |
95 | if(!model) |
96 | return; | |
e6d23005 | 97 | |
ffccb569 | 98 | if(!saveCurrentRow()) |
669b0a58 | 99 | { |
a5e6d723 | 100 | switch(model->getEditStatus()) |
669b0a58 | 101 | { |
e6d23005 PK |
102 | case AddressTableModel::OK: |
103 | // Failed with unknown reason. Just reject. | |
104 | break; | |
105 | case AddressTableModel::NO_CHANGES: | |
106 | // No changes were made during edit operation. Just reject. | |
a5e6d723 WL |
107 | break; |
108 | case AddressTableModel::INVALID_ADDRESS: | |
669b0a58 | 109 | QMessageBox::warning(this, windowTitle(), |
ff0ee876 | 110 | tr("The entered address \"%1\" is not a valid Bitcoin address.").arg(ui->addressEdit->text()), |
669b0a58 | 111 | QMessageBox::Ok, QMessageBox::Ok); |
e6d23005 PK |
112 | break; |
113 | case AddressTableModel::DUPLICATE_ADDRESS: | |
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; | |
b7bcaf94 WL |
118 | case AddressTableModel::WALLET_UNLOCK_FAILURE: |
119 | QMessageBox::critical(this, windowTitle(), | |
120 | tr("Could not unlock wallet."), | |
121 | QMessageBox::Ok, QMessageBox::Ok); | |
e6d23005 | 122 | break; |
c5aa1b13 WL |
123 | case AddressTableModel::KEY_GENERATION_FAILURE: |
124 | QMessageBox::critical(this, windowTitle(), | |
125 | tr("New key generation failed."), | |
126 | QMessageBox::Ok, QMessageBox::Ok); | |
76d8170c | 127 | break; |
a5e6d723 | 128 | |
e6d23005 | 129 | } |
669b0a58 WL |
130 | return; |
131 | } | |
132 | QDialog::accept(); | |
133 | } | |
134 | ||
ffccb569 WL |
135 | QString EditAddressDialog::getAddress() const |
136 | { | |
137 | return address; | |
138 | } | |
9bc9593d WL |
139 | |
140 | void EditAddressDialog::setAddress(const QString &address) | |
141 | { | |
142 | this->address = address; | |
143 | ui->addressEdit->setText(address); | |
144 | } |