if(role == Qt::EditRole)
{
- switch(index.column())
+ LOCK(wallet->cs_wallet); /* For SetAddressBook / DelAddressBook */
+ CTxDestination curAddress = CBitcoinAddress(rec->address.toStdString()).Get();
+ if(index.column() == Label)
{
- case Label:
// Do nothing, if old label == new label
if(rec->label == value.toString())
{
editStatus = NO_CHANGES;
return false;
}
- wallet->SetAddressBookName(CBitcoinAddress(rec->address.toStdString()).Get(), value.toString().toStdString());
- break;
- case Address:
- // Do nothing, if old address == new address
- if(CBitcoinAddress(rec->address.toStdString()) == CBitcoinAddress(value.toString().toStdString()))
+ wallet->SetAddressBookName(curAddress, value.toString().toStdString());
+ } else if(index.column() == Address) {
+ CTxDestination newAddress = CBitcoinAddress(value.toString().toStdString()).Get();
+ // Refuse to set invalid address, set error status and return false
+ if(boost::get<CNoDestination>(&newAddress))
{
- editStatus = NO_CHANGES;
+ editStatus = INVALID_ADDRESS;
return false;
}
- // Refuse to set invalid address, set error status and return false
- else if(!walletModel->validateAddress(value.toString()))
+ // Do nothing, if old address == new address
+ else if(newAddress == curAddress)
{
- editStatus = INVALID_ADDRESS;
+ editStatus = NO_CHANGES;
return false;
}
// Check for duplicate addresses to prevent accidental deletion of addresses, if you try
// to paste an existing address over another address (with a different label)
- else if(wallet->mapAddressBook.count(CBitcoinAddress(value.toString().toStdString()).Get()))
+ else if(wallet->mapAddressBook.count(newAddress))
{
editStatus = DUPLICATE_ADDRESS;
return false;
// Double-check that we're not overwriting a receiving address
else if(rec->type == AddressTableEntry::Sending)
{
- {
- LOCK(wallet->cs_wallet);
- // Remove old entry
- wallet->DelAddressBookName(CBitcoinAddress(rec->address.toStdString()).Get());
- // Add new entry with new address
- wallet->SetAddressBookName(CBitcoinAddress(value.toString().toStdString()).Get(), rec->label.toStdString());
- }
+ // Remove old entry
+ wallet->DelAddressBookName(curAddress);
+ // Add new entry with new address
+ wallet->SetAddressBookName(newAddress, rec->label.toStdString());
}
- break;
}
return true;
}