Browse Source

Merge pull request #3391

3380713 [Qt] coin control change address handling update (Philip Kaufmann)
0.10
Wladimir J. van der Laan 11 years ago
parent
commit
365350140a
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 12
      src/qt/coincontroldialog.cpp
  2. 57
      src/qt/sendcoinsdialog.cpp

12
src/qt/coincontroldialog.cpp

@ -449,7 +449,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
} }
} }
QString sPriorityLabel = ""; QString sPriorityLabel = tr("none");
int64_t nAmount = 0; int64_t nAmount = 0;
int64_t nPayFee = 0; int64_t nPayFee = 0;
int64_t nAfterFee = 0; int64_t nAfterFee = 0;
@ -593,10 +593,10 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
l8->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nChange)); // Change l8->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nChange)); // Change
// turn labels "red" // turn labels "red"
l5->setStyleSheet((nBytes >= 1000) ? "color:red;" : ""); // Bytes >= 1000 l5->setStyleSheet((nBytes >= 1000) ? "color:red;" : ""); // Bytes >= 1000
l6->setStyleSheet((!AllowFree(dPriority)) ? "color:red;" : ""); // Priority < "medium" l6->setStyleSheet((dPriority > 0 && !AllowFree(dPriority)) ? "color:red;" : ""); // Priority < "medium"
l7->setStyleSheet((fLowOutput) ? "color:red;" : ""); // Low Output = "yes" l7->setStyleSheet((fLowOutput) ? "color:red;" : ""); // Low Output = "yes"
l8->setStyleSheet((nChange > 0 && nChange < CENT) ? "color:red;" : ""); // Change < 0.01BTC l8->setStyleSheet((nChange > 0 && nChange < CENT) ? "color:red;" : ""); // Change < 0.01BTC
// tool tips // tool tips
QString toolTip1 = tr("This label turns red, if the transaction size is greater than 1000 bytes.") + "<br /><br />"; QString toolTip1 = tr("This label turns red, if the transaction size is greater than 1000 bytes.") + "<br /><br />";
@ -604,7 +604,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
toolTip1 += tr("Can vary +/- 1 byte per input."); toolTip1 += tr("Can vary +/- 1 byte per input.");
QString toolTip2 = tr("Transactions with higher priority are more likely to get included into a block.") + "<br /><br />"; QString toolTip2 = tr("Transactions with higher priority are more likely to get included into a block.") + "<br /><br />";
toolTip2 += tr("This label turns red, if the priority is smaller than \"medium\"") + "<br /><br />"; toolTip2 += tr("This label turns red, if the priority is smaller than \"medium\".") + "<br /><br />";
toolTip2 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CTransaction::nMinTxFee)); toolTip2 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CTransaction::nMinTxFee));
QString toolTip3 = tr("This label turns red, if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CENT)) + "<br /><br />"; QString toolTip3 = tr("This label turns red, if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CENT)) + "<br /><br />";

57
src/qt/sendcoinsdialog.cpp

@ -546,44 +546,45 @@ void SendCoinsDialog::coinControlChangeChecked(int state)
// Coin Control: custom change address changed // Coin Control: custom change address changed
void SendCoinsDialog::coinControlChangeEdited(const QString& text) void SendCoinsDialog::coinControlChangeEdited(const QString& text)
{ {
if (model) if (model && model->getAddressTableModel())
{ {
CoinControlDialog::coinControl->destChange = CBitcoinAddress(text.toStdString()).Get(); // Default to no change address until verified
CoinControlDialog::coinControl->destChange = CNoDestination();
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
CBitcoinAddress addr = CBitcoinAddress(text.toStdString());
// label for the change address if (text.isEmpty()) // Nothing entered
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}"); {
if (text.isEmpty())
ui->labelCoinControlChangeLabel->setText(""); ui->labelCoinControlChangeLabel->setText("");
else if (!CBitcoinAddress(text.toStdString()).IsValid()) }
else if (!addr.IsValid()) // Invalid address
{ {
// invalid change address
CoinControlDialog::coinControl->destChange = CNoDestination();
ui->lineEditCoinControlChange->setValid(false); ui->lineEditCoinControlChange->setValid(false);
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Bitcoin address")); ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Bitcoin address"));
} }
else else // Valid address
{ {
QString associatedLabel = model->getAddressTableModel()->labelForAddress(text); CPubKey pubkey;
if (!associatedLabel.isEmpty()) CKeyID keyid;
ui->labelCoinControlChangeLabel->setText(associatedLabel); addr.GetKeyID(keyid);
else if (!model->getPubKey(keyid, pubkey)) // Unknown change address
{ {
CPubKey pubkey; ui->lineEditCoinControlChange->setValid(false);
CKeyID keyid; ui->labelCoinControlChangeLabel->setText(tr("Warning: Unknown change address"));
CBitcoinAddress(text.toStdString()).GetKeyID(keyid); }
if (model->getPubKey(keyid, pubkey)) else // Known change address
ui->labelCoinControlChangeLabel->setText(tr("(no label)")); {
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}");
// Query label
QString associatedLabel = model->getAddressTableModel()->labelForAddress(text);
if (!associatedLabel.isEmpty())
ui->labelCoinControlChangeLabel->setText(associatedLabel);
else else
{ ui->labelCoinControlChangeLabel->setText(tr("(no label)"));
// unknown change address
CoinControlDialog::coinControl->destChange = CNoDestination(); CoinControlDialog::coinControl->destChange = addr.Get();
ui->lineEditCoinControlChange->setValid(false);
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
ui->labelCoinControlChangeLabel->setText(tr("Warning: Unknown change address"));
}
} }
} }
} }

Loading…
Cancel
Save