annotate src/qt/sendcoinsdialog.cpp @ 1113:fed522d006eb draft

Split off WalletModel from ClientModel, to be able to support multi-wallets in future
author Wladimir J. van der Laan <laanwj@gmail.com>
date Thu, 30 Jun 2011 18:05:29 +0200
parents 543d3631d430
children d77204c4f7f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
1 #include "sendcoinsdialog.h"
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
2 #include "ui_sendcoinsdialog.h"
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
3 #include "walletmodel.h"
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
4 #include "guiutil.h"
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
5
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
6 #include "addressbookdialog.h"
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
7 #include "optionsmodel.h"
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
8
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
9 #include <QApplication>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
10 #include <QClipboard>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
11 #include <QMessageBox>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
12 #include <QLocale>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
13 #include <QDebug>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
14
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
15 SendCoinsDialog::SendCoinsDialog(QWidget *parent, const QString &address) :
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
16 QDialog(parent),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
17 ui(new Ui::SendCoinsDialog),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
18 model(0)
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
19 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
20 ui->setupUi(this);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
21
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
22 GUIUtil::setupAddressWidget(ui->payTo, this);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
23
1076
01bf48790a02 remove commented code, use // for one-line comments and comments inside functions
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1060
diff changeset
24 // Set initial send-to address if provided
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
25 if(!address.isEmpty())
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
26 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
27 ui->payTo->setText(address);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
28 ui->payAmount->setFocus();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
29 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
30 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
31
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
32 void SendCoinsDialog::setModel(WalletModel *model)
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
33 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
34 this->model = model;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
35 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
36
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
37 SendCoinsDialog::~SendCoinsDialog()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
38 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
39 delete ui;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
40 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
41
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
42 void SendCoinsDialog::on_sendButton_clicked()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
43 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
44 bool valid;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
45 QString payAmount = ui->payAmount->text();
1099
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
46 QString label;
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
47 qint64 payAmountParsed;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
48
1110
2170917354c1 Implement filter row instead of tabs, allows for more expressive filters
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1099
diff changeset
49 valid = GUIUtil::parseMoney(payAmount, &payAmountParsed);
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
50
1112
543d3631d430 show an error if amount is not valid (either the amount or decimals is empty)
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1110
diff changeset
51 if(!valid || payAmount.isEmpty())
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
52 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
53 QMessageBox::warning(this, tr("Send Coins"),
1112
543d3631d430 show an error if amount is not valid (either the amount or decimals is empty)
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1110
diff changeset
54 tr("Must fill in an amount to pay."),
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
55 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
56 return;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
57 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
58
1099
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
59 if(ui->addToAddressBook->isChecked())
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
60 {
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
61 // Add address to address book under label, if specified
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
62 label = ui->addAsLabel->text();
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
63 }
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
64
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
65 switch(model->sendCoins(ui->payTo->text(), payAmountParsed, label))
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
66 {
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
67 case WalletModel::InvalidAddress:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
68 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
69 tr("The recepient address is not valid, please recheck."),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
70 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
71 ui->payTo->setFocus();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
72 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
73 case WalletModel::InvalidAmount:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
74 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
75 tr("The amount to pay must be larger than 0."),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
76 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
77 ui->payAmount->setFocus();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
78 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
79 case WalletModel::AmountExceedsBalance:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
80 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
81 tr("Amount exceeds your balance"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
82 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
83 ui->payAmount->setFocus();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
84 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
85 case WalletModel::AmountWithFeeExceedsBalance:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
86 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
87 tr("Total exceeds your balance when the %1 transaction fee is included").
1110
2170917354c1 Implement filter row instead of tabs, allows for more expressive filters
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1099
diff changeset
88 arg(GUIUtil::formatMoney(model->getOptionsModel()->getTransactionFee())),
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
89 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
90 ui->payAmount->setFocus();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
91 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
92 case WalletModel::OK:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
93 accept();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
94 break;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
95 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
96 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
97
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
98 void SendCoinsDialog::on_pasteButton_clicked()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
99 {
1076
01bf48790a02 remove commented code, use // for one-line comments and comments inside functions
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1060
diff changeset
100 // Paste text from clipboard into recipient field
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
101 ui->payTo->setText(QApplication::clipboard()->text());
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
102 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
103
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
104 void SendCoinsDialog::on_addressBookButton_clicked()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
105 {
1060
db302c13dee6 Address book: select action (edit/select) based on context
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1049
diff changeset
106 AddressBookDialog dlg(AddressBookDialog::ForSending);
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
107 dlg.setModel(model->getAddressTableModel());
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
108 dlg.setTab(AddressBookDialog::SendingTab);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
109 dlg.exec();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
110 ui->payTo->setText(dlg.getReturnValue());
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
111 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
112
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
113 void SendCoinsDialog::on_buttonBox_rejected()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
114 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
115 reject();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
116 }
1099
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
117
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
118 void SendCoinsDialog::on_addToAddressBook_toggled(bool checked)
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
119 {
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
120 ui->addAsLabel->setEnabled(checked);
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
121 }