Prevent negative z balances,Hide 0-balance addresses from the balances table,Rename new address to next address

This commit is contained in:
Denio
2019-12-03 19:42:06 +01:00
parent 25317b753d
commit 8d51375107
5 changed files with 46 additions and 15 deletions

View File

@@ -1048,8 +1048,7 @@ void MainWindow::setupReceiveTab() {
updateTAddrCombo(checked);
}
// Toggle the "View all addresses" button as well
ui->btnViewAllAddresses->setVisible(checked);
});
// View all addresses goes to "View all private keys"
@@ -1065,7 +1064,14 @@ void MainWindow::setupReceiveTab() {
Settings::saveRestoreTableHeader(viewaddrs.tblAddresses, &d, "viewalladdressestable");
viewaddrs.tblAddresses->horizontalHeader()->setStretchLastSection(true);
ViewAllAddressesModel model(viewaddrs.tblAddresses, getRPC()->getModel()->getAllTAddresses(), getRPC());
QList<QString> allAddresses;
if (ui->rdioTAddr->isChecked()) {
allAddresses = getRPC()->getModel()->getAllTAddresses();
} else {
allAddresses = getRPC()->getModel()->getAllZAddresses();
}
ViewAllAddressesModel model(viewaddrs.tblAddresses, allAddresses, getRPC());
viewaddrs.tblAddresses->setModel(&model);
QObject::connect(viewaddrs.btnExportAll, &QPushButton::clicked, this, &MainWindow::exportAllKeys);
@@ -1100,6 +1106,20 @@ void MainWindow::setupReceiveTab() {
QObject::connect(ui->btnReceiveNewAddr, &QPushButton::clicked, [=] () {
if (!rpc->getConnection())
return;
// Go over the dropdown and just select the next address that has:
// 0 balance and has no labels
for (int i=ui->listReceiveAddresses->currentIndex()+1; i < ui->listReceiveAddresses->count(); i++) {
QString item = ui->listReceiveAddresses->itemText(i);
CAmount bal = getRPC()->getModel()->getAllBalances().value(item, CAmount());
if (bal == 0 && AddressBook::getInstance()->getLabelForAddress(item).isEmpty()) {
// Pick this one, since it has no balance and no label
ui->listReceiveAddresses->setCurrentIndex(i);
return;
}
}
// If none of the existing items were eligible, create a new one.
if (ui->rdioZSAddr->isChecked()) {
addNewZaddr(true);
@@ -1113,7 +1133,7 @@ void MainWindow::setupReceiveTab() {
if (tab == 2) {
// Switched to receive tab, select the z-addr radio button
ui->rdioZSAddr->setChecked(true);
ui->btnViewAllAddresses->setVisible(false);
// And then select the first one
ui->listReceiveAddresses->setCurrentIndex(0);