@ -244,33 +244,34 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value,
@@ -244,33 +244,34 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value,
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 - > SetAddressBook ( CBitcoinAddress ( rec - > address . toStdString ( ) ) . Get ( ) , value . toString ( ) . toStdString ( ) , strPurpose ) ;
break ;
case Address :
// Do nothing, if old address == new address
if ( CBitcoinAddress ( rec - > address . toStdString ( ) ) = = CBitcoinAddress ( value . toString ( ) . toStdString ( ) ) )
wallet - > SetAddressBook ( curAddress , value . toString ( ) . toStdString ( ) , strPurpose ) ;
} 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_CHANGE S;
editStatus = INVALID_ADDRES S;
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_ADDRES S;
editStatus = NO_CHANGE S;
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 ( CBitcoi nAddress( value . toString ( ) . toStdString ( ) ) . Get ( ) ) )
else if ( wallet - > mapAddressBook . count ( new Address ) )
{
editStatus = DUPLICATE_ADDRESS ;
return false ;
@ -278,16 +279,12 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value,
@@ -278,16 +279,12 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value,
// Double-check that we're not overwriting a receiving address
else if ( rec - > type = = AddressTableEntry : : Sending )
{
{
LOCK ( wallet - > cs_wallet ) ;
// Remove old entry
wallet - > DelAddressBook ( CBitcoinAddress ( rec - > address . toStdString ( ) ) . Get ( ) ) ;
wallet - > DelAddressBook ( curAddress ) ;
// Add new entry with new address
wallet - > SetAddressBook ( CBitcoi nAddress( value . toString ( ) . toStdString ( ) ) . Get ( ) , rec - > label . toStdString ( ) , strPurpose ) ;
wallet - > SetAddressBook ( new Address , rec - > label . toStdString ( ) , strPurpose ) ;
}
}
break ;
}
return true ;
}
return false ;