Mercurial > hg > bitcoin
annotate src/qt/sendcoinsdialog.cpp @ 1238:cba27e4719cf draft
Properly html-escape labels
author | Wladimir J. van der Laan <laanwj@gmail.com> |
---|---|
date | Sun, 31 Jul 2011 12:56:46 +0200 |
parents | 6f35013311c1 |
children | 3f0305184c57 |
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" |
1213
b76439e5e887
preparations for multiple unit (uBTC, mBTC, BTC) support, fix amount entry issue
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
4 #include "bitcoinunits.h" |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
5 #include "addressbookpage.h" |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
6 #include "optionsmodel.h" |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
7 #include "sendcoinsentry.h" |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
8 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
9 |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
10 #include <QMessageBox> |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
11 #include <QLocale> |
1238
cba27e4719cf
Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1225
diff
changeset
|
12 #include <QTextDocument> |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
13 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
14 SendCoinsDialog::SendCoinsDialog(QWidget *parent) : |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
15 QDialog(parent), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
16 ui(new Ui::SendCoinsDialog), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
17 model(0) |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
18 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
19 ui->setupUi(this); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
20 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
21 addEntry(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
22 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
23 connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addEntry())); |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
24 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
25 |
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
|
26 void SendCoinsDialog::setModel(WalletModel *model) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
27 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
28 this->model = model; |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
29 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
30 for(int i = 0; i < ui->entries->count(); ++i) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
31 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
32 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
33 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
34 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
35 entry->setModel(model); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
36 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
37 } |
1049
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 |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
40 SendCoinsDialog::~SendCoinsDialog() |
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 delete ui; |
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 |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
45 void SendCoinsDialog::on_sendButton_clicked() |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
46 { |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
47 QList<SendCoinsRecipient> recipients; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
48 bool valid = true; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
49 for(int i = 0; i < ui->entries->count(); ++i) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
50 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
51 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
52 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
53 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
54 if(entry->validate()) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
55 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
56 recipients.append(entry->getValue()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
57 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
58 else |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
59 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
60 valid = false; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
61 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
62 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
63 } |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
64 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
65 if(!valid || recipients.isEmpty()) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
66 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
67 return; |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
68 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
69 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
70 // Format confirmation message |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
71 QStringList formatted; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
72 foreach(const SendCoinsRecipient &rcp, recipients) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
73 { |
1238
cba27e4719cf
Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1225
diff
changeset
|
74 formatted.append(tr("<b>%1</b> to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), Qt::escape(rcp.label), rcp.address)); |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
75 } |
1099
843ca2ecfffa
allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1086
diff
changeset
|
76 |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
77 QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm send coins"), |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
78 tr("Are you sure you want to send %1?").arg(formatted.join(tr(" and "))), |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
79 QMessageBox::Yes|QMessageBox::Cancel, |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
80 QMessageBox::Cancel); |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
81 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
82 if(retval != QMessageBox::Yes) |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
83 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
84 return; |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
85 } |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
86 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
87 WalletModel::SendCoinsReturn sendstatus = model->sendCoins(recipients); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
88 switch(sendstatus.status) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
89 { |
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
|
90 case WalletModel::InvalidAddress: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
91 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
92 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
|
93 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
94 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
|
95 case WalletModel::InvalidAmount: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
96 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
97 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
|
98 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
99 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
|
100 case WalletModel::AmountExceedsBalance: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
101 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
102 tr("Amount exceeds your balance"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
103 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
104 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
|
105 case WalletModel::AmountWithFeeExceedsBalance: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
106 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
107 tr("Total exceeds your balance when the %1 transaction fee is included"). |
1213
b76439e5e887
preparations for multiple unit (uBTC, mBTC, BTC) support, fix amount entry issue
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
108 arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, sendstatus.fee)), |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
109 QMessageBox::Ok, QMessageBox::Ok); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
110 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
111 case WalletModel::DuplicateAddress: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
112 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
113 tr("Duplicate address found, can only send to each address once in one send operation"), |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
114 QMessageBox::Ok, QMessageBox::Ok); |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
115 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
116 case WalletModel::TransactionCreationFailed: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
117 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
118 tr("Error: Transaction creation failed "), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
119 QMessageBox::Ok, QMessageBox::Ok); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
120 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
121 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
122 case WalletModel::TransactionCommitFailed: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
123 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
124 tr("Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
125 QMessageBox::Ok, QMessageBox::Ok); |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
126 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
|
127 case WalletModel::OK: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
128 accept(); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
129 break; |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
130 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
131 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
132 |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
133 void SendCoinsDialog::clear() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
134 { |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
135 // Remove entries until only one left |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
136 while(ui->entries->count() > 1) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
137 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
138 delete ui->entries->takeAt(0)->widget(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
139 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
140 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
141 // Reset the entry that is left to empty |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
142 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(0)->widget()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
143 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
144 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
145 entry->clear(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
146 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
147 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
148 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
149 |
1161
43ca4b501ae7
send coins dialog: make sure send button remain default button (triggered with enter)
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1160
diff
changeset
|
150 ui->sendButton->setDefault(true); |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
151 } |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
152 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
153 void SendCoinsDialog::reject() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
154 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
155 clear(); |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
156 } |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
157 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
158 void SendCoinsDialog::accept() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
159 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
160 clear(); |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
161 } |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
162 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
163 void SendCoinsDialog::addEntry() |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
164 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
165 SendCoinsEntry *entry = new SendCoinsEntry(this); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
166 entry->setModel(model); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
167 ui->entries->addWidget(entry); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
168 connect(entry, SIGNAL(removeEntry(SendCoinsEntry*)), this, SLOT(removeEntry(SendCoinsEntry*))); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
169 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
170 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
171 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
172 // Focus the field, so that entry can start immediately |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
173 entry->clear(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
174 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
175 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
176 void SendCoinsDialog::updateRemoveEnabled() |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
177 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
178 // Remove buttons are enabled as soon as there is more than one send-entry |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
179 bool enabled = (ui->entries->count() > 1); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
180 for(int i = 0; i < ui->entries->count(); ++i) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
181 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
182 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
183 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
184 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
185 entry->setRemoveEnabled(enabled); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
186 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
187 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
188 setupTabChain(0); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
189 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
190 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
191 void SendCoinsDialog::removeEntry(SendCoinsEntry* entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
192 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
193 delete entry; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
194 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
195 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
196 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
197 QWidget *SendCoinsDialog::setupTabChain(QWidget *prev) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
198 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
199 for(int i = 0; i < ui->entries->count(); ++i) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
200 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
201 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
202 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
203 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
204 prev = entry->setupTabChain(prev); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
205 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
206 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
207 QWidget::setTabOrder(prev, ui->addButton); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
208 QWidget::setTabOrder(ui->addButton, ui->sendButton); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
209 return ui->sendButton; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
210 } |