58ecb4948682514f86f088e4f30aabaa4ac193e1
[novacoin.git] / src / qt / editaddressdialog.cpp
1 #include "editaddressdialog.h"
2 #include "ui_editaddressdialog.h"
3 #include "addresstablemodel.h"
4 #include "guiutil.h"
5
6 #include <QDataWidgetMapper>
7 #include <QMessageBox>
8
9 EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) :
10     QDialog(parent),
11     ui(new Ui::EditAddressDialog), mapper(0), mode(mode), model(0)
12 {
13     ui->setupUi(this);
14
15     GUIUtil::setupAddressWidget(ui->addressEdit, this);
16
17     switch(mode)
18     {
19     case NewReceivingAddress:
20         setWindowTitle(tr("New receiving address"));
21         ui->addressEdit->setEnabled(false);
22         ui->setAsDefault->setChecked(true);
23         break;
24     case NewSendingAddress:
25         setWindowTitle(tr("New sending address"));
26         ui->setAsDefault->setVisible(false);
27         break;
28     case EditReceivingAddress:
29         setWindowTitle(tr("Edit receiving address"));
30         ui->addressEdit->setReadOnly(true);
31         break;
32     case EditSendingAddress:
33         setWindowTitle(tr("Edit sending address"));
34         ui->setAsDefault->setVisible(false);
35         break;
36     }
37
38     mapper = new QDataWidgetMapper(this);
39     mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
40 }
41
42 EditAddressDialog::~EditAddressDialog()
43 {
44     delete ui;
45 }
46
47 void EditAddressDialog::setModel(AddressTableModel *model)
48 {
49     this->model = model;
50     mapper->setModel(model);
51     mapper->addMapping(ui->labelEdit, AddressTableModel::Label);
52     mapper->addMapping(ui->addressEdit, AddressTableModel::Address);
53     mapper->addMapping(ui->setAsDefault, AddressTableModel::IsDefaultAddress);
54 }
55
56 void EditAddressDialog::loadRow(int row)
57 {
58     mapper->setCurrentIndex(row);
59 }
60
61 QString EditAddressDialog::saveCurrentRow()
62 {
63     QString address;
64     switch(mode)
65     {
66     case NewReceivingAddress:
67     case NewSendingAddress:
68         address = model->addRow(
69                 mode == NewSendingAddress ? AddressTableModel::Send : AddressTableModel::Receive,
70                 ui->labelEdit->text(),
71                 ui->addressEdit->text(),
72                 ui->setAsDefault->isChecked());
73         if(address.isEmpty())
74         {
75             QMessageBox::warning(this, windowTitle(),
76                 tr("The address %1 is already in the address book.").arg(ui->addressEdit->text()),
77                 QMessageBox::Ok, QMessageBox::Ok);
78         }
79         break;
80     case EditReceivingAddress:
81     case EditSendingAddress:
82         if(mapper->submit())
83         {
84             address = ui->addressEdit->text();
85         }
86         break;
87     }
88     return address;
89 }