Mercurial > hg > bitcoin
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 |
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 } |