X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Fsendcoinsdialog.cpp;h=71ac1915e0470db8bb6ca31e6a76e87689deebfa;hb=1c4fc9052a444c114d9c1501d2c6d1305de650d0;hp=7f7d8bf329a1b1223fa4bf5109e9722dc2c71918;hpb=99fc7c42ab87c9d6d9ae3aac72e120701078535e;p=novacoin.git diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 7f7d8bf..71ac191 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -49,7 +49,6 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) : ui->lineEditCoinControlChange->setFont(GUIUtil::bitcoinAddressFont()); connect(ui->pushButtonCoinControl, SIGNAL(clicked()), this, SLOT(coinControlButtonClicked())); connect(ui->checkBoxCoinControlChange, SIGNAL(stateChanged(int)), this, SLOT(coinControlChangeChecked(int))); - connect(ui->lineEditCoinControlChange, SIGNAL(textEdited(const QString &)), this, SLOT(coinControlChangeEdited(const QString &))); // Coin Control: clipboard actions QAction *clipboardQuantityAction = new QAction(tr("Copy quantity"), this); @@ -94,8 +93,8 @@ void SendCoinsDialog::setModel(WalletModel *model) } if(model && model->getOptionsModel()) { - setBalance(model->getBalance(), model->getStake(), model->getUnconfirmedBalance(), model->getImmatureBalance()); - connect(model, SIGNAL(balanceChanged(qint64, qint64, qint64, qint64)), this, SLOT(setBalance(qint64, qint64, qint64, qint64))); + setBalance(model->getBalance(), model->getBalanceWatchOnly(), model->getStake(), model->getUnconfirmedBalance(), model->getImmatureBalance()); + connect(model, SIGNAL(balanceChanged(qint64, qint64, qint64, qint64, qint64)), this, SLOT(setBalance(qint64, qint64, qint64, qint64, qint64))); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); // Coin Control @@ -120,6 +119,19 @@ void SendCoinsDialog::on_sendButton_clicked() if(!model) return; + if (ui->lineEditCoinControlChange->isEnabled()) + { + if(!ui->lineEditCoinControlChange->hasAcceptableInput() || + (model && !model->validateAddress(ui->lineEditCoinControlChange->text()))) + { + CoinControlDialog::coinControl->destChange = CNoDestination(); + ui->lineEditCoinControlChange->setValid(false); + valid = false; + } + else + CoinControlDialog::coinControl->destChange = CBitcoinAddress(ui->lineEditCoinControlChange->text().toStdString()).Get(); + } + for(int i = 0; i < ui->entries->count(); ++i) { SendCoinsEntry *entry = qobject_cast(ui->entries->itemAt(i)->widget()); @@ -346,7 +358,7 @@ bool SendCoinsDialog::handleURI(const QString &uri) return false; } -void SendCoinsDialog::setBalance(qint64 balance, qint64 stake, qint64 unconfirmedBalance, qint64 immatureBalance) +void SendCoinsDialog::setBalance(qint64 total, qint64 watchOnly, qint64 stake, qint64 unconfirmedBalance, qint64 immatureBalance) { Q_UNUSED(stake); Q_UNUSED(unconfirmedBalance); @@ -355,7 +367,7 @@ void SendCoinsDialog::setBalance(qint64 balance, qint64 stake, qint64 unconfirme return; int unit = model->getOptionsModel()->getDisplayUnit(); - ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, balance)); + ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, total - watchOnly)); } void SendCoinsDialog::updateDisplayUnit() @@ -363,7 +375,7 @@ void SendCoinsDialog::updateDisplayUnit() if(model && model->getOptionsModel()) { // Update labelBalance with the current balance and the current unit - ui->labelBalance->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), model->getBalance())); + ui->labelBalance->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), model->getBalance() - model->getBalanceWatchOnly())); } } @@ -445,44 +457,26 @@ void SendCoinsDialog::coinControlChangeChecked(int state) } ui->lineEditCoinControlChange->setEnabled((state == Qt::Checked)); - ui->labelCoinControlChangeLabel->setEnabled((state == Qt::Checked)); +// ui->labelCoinControlChangeLabel->setEnabled((state == Qt::Checked)); + ui->addressBookButton->setEnabled((state == Qt::Checked)); + ui->pasteButton->setEnabled((state == Qt::Checked)); } -// Coin Control: custom change address changed -void SendCoinsDialog::coinControlChangeEdited(const QString & text) +void SendCoinsDialog::on_pasteButton_clicked() { - if (model) - { - CoinControlDialog::coinControl->destChange = CBitcoinAddress(text.toStdString()).Get(); + // Paste text from clipboard into recipient field + ui->lineEditCoinControlChange->setText(QApplication::clipboard()->text()); +} - // label for the change address - ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}"); - if (text.isEmpty()) - ui->labelCoinControlChangeLabel->setText(""); - else if (!CBitcoinAddress(text.toStdString()).IsValid()) - { - ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}"); - ui->labelCoinControlChangeLabel->setText(tr("WARNING: Invalid NovaCoin address")); - } - else - { - QString associatedLabel = model->getAddressTableModel()->labelForAddress(text); - if (!associatedLabel.isEmpty()) - ui->labelCoinControlChangeLabel->setText(associatedLabel); - else - { - CPubKey pubkey; - CKeyID keyid; - CBitcoinAddress(text.toStdString()).GetKeyID(keyid); - if (model->getPubKey(keyid, pubkey)) - ui->labelCoinControlChangeLabel->setText(tr("(no label)")); - else - { - ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}"); - ui->labelCoinControlChangeLabel->setText(tr("WARNING: unknown change address")); - } - } - } +void SendCoinsDialog::on_addressBookButton_clicked() +{ + if(!model) + return; + AddressBookPage dlg(AddressBookPage::ForSending, AddressBookPage::SendingTab, this); + dlg.setModel(model->getAddressTableModel()); + if(dlg.exec()) + { + ui->lineEditCoinControlChange->setText(dlg.getReturnValue()); } }