Watchonly transactions are marked in transaction history
This commit is contained in:
parent
ffd40da361
commit
d2692f6116
3 changed files with 17 additions and 4 deletions
|
@ -70,16 +70,19 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
sub.type = TransactionRecord::Generated;
|
sub.type = TransactionRecord::Generated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub.involvesWatchAddress = mine == MINE_WATCH_ONLY;
|
||||||
parts.append(sub);
|
parts.append(sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
bool involvesWatchAddress = false;
|
||||||
isminetype fAllFromMe = MINE_SPENDABLE;
|
isminetype fAllFromMe = MINE_SPENDABLE;
|
||||||
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
|
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
|
||||||
{
|
{
|
||||||
isminetype mine = wallet->IsMine(txin);
|
isminetype mine = wallet->IsMine(txin);
|
||||||
|
if(mine == MINE_WATCH_ONLY) involvesWatchAddress = true;
|
||||||
if(fAllFromMe > mine) fAllFromMe = mine;
|
if(fAllFromMe > mine) fAllFromMe = mine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +90,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
BOOST_FOREACH(const CTxOut& txout, wtx.vout)
|
BOOST_FOREACH(const CTxOut& txout, wtx.vout)
|
||||||
{
|
{
|
||||||
isminetype mine = wallet->IsMine(txout);
|
isminetype mine = wallet->IsMine(txout);
|
||||||
|
if(mine == MINE_WATCH_ONLY) involvesWatchAddress = true;
|
||||||
if(fAllToMe > mine) fAllToMe = mine;
|
if(fAllToMe > mine) fAllToMe = mine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +101,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
|
|
||||||
parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "",
|
parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "",
|
||||||
-(nDebit - nChange), nCredit - nChange));
|
-(nDebit - nChange), nCredit - nChange));
|
||||||
|
parts.last().involvesWatchAddress = involvesWatchAddress;
|
||||||
}
|
}
|
||||||
else if (fAllFromMe)
|
else if (fAllFromMe)
|
||||||
{
|
{
|
||||||
|
@ -141,6 +146,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
}
|
}
|
||||||
sub.debit = -nValue;
|
sub.debit = -nValue;
|
||||||
|
|
||||||
|
sub.involvesWatchAddress = involvesWatchAddress;
|
||||||
parts.append(sub);
|
parts.append(sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,6 +156,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
|
||||||
// Mixed debit transaction, can't break down payees
|
// Mixed debit transaction, can't break down payees
|
||||||
//
|
//
|
||||||
parts.append(TransactionRecord(hash, nTime, TransactionRecord::Other, "", nNet, 0));
|
parts.append(TransactionRecord(hash, nTime, TransactionRecord::Other, "", nNet, 0));
|
||||||
|
parts.last().involvesWatchAddress = involvesWatchAddress;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,9 @@ public:
|
||||||
/** Status: can change with block chain update */
|
/** Status: can change with block chain update */
|
||||||
TransactionStatus status;
|
TransactionStatus status;
|
||||||
|
|
||||||
|
/** Whether the transaction was sent/received with a watch-only address */
|
||||||
|
bool involvesWatchAddress;
|
||||||
|
|
||||||
/** Return the unique identifier for this transaction (part) */
|
/** Return the unique identifier for this transaction (part) */
|
||||||
QString getTxID() const;
|
QString getTxID() const;
|
||||||
|
|
||||||
|
|
|
@ -390,19 +390,22 @@ QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx
|
||||||
|
|
||||||
QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const
|
QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const
|
||||||
{
|
{
|
||||||
|
// mark transactions involving watch-only addresses:
|
||||||
|
QString watchAddress = wtx->involvesWatchAddress ? " (w) " : "";
|
||||||
|
|
||||||
switch(wtx->type)
|
switch(wtx->type)
|
||||||
{
|
{
|
||||||
case TransactionRecord::RecvFromOther:
|
case TransactionRecord::RecvFromOther:
|
||||||
return QString::fromStdString(wtx->address);
|
return QString::fromStdString(wtx->address) + watchAddress;
|
||||||
case TransactionRecord::RecvWithAddress:
|
case TransactionRecord::RecvWithAddress:
|
||||||
case TransactionRecord::SendToAddress:
|
case TransactionRecord::SendToAddress:
|
||||||
case TransactionRecord::Generated:
|
case TransactionRecord::Generated:
|
||||||
return lookupAddress(wtx->address, tooltip);
|
return lookupAddress(wtx->address, tooltip) + watchAddress;
|
||||||
case TransactionRecord::SendToOther:
|
case TransactionRecord::SendToOther:
|
||||||
return QString::fromStdString(wtx->address);
|
return QString::fromStdString(wtx->address) + watchAddress;
|
||||||
case TransactionRecord::SendToSelf:
|
case TransactionRecord::SendToSelf:
|
||||||
default:
|
default:
|
||||||
return tr("(n/a)");
|
return tr("(n/a)") + watchAddress;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue