aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2011-12-28 11:14:05 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2011-12-28 11:14:05 +0100
commit56c6e3696d0f8e222395be00f9e532412781b339 (patch)
tree0e9a63c0a0e63ca2beafc4e954cb69bcddddc05f
parent625b56de6491170ad6a2e45c57d974fca6160750 (diff)
Fix transaction type in UI: not all tx'es with "from"/"to" field are necessarily IP tx'es
- Also, prepare for OP_EVAL by calling all transactions without bitcoin address "SendToOther"/"RecvFromOther", (IP tx'es are so rare they can be put together with funky EV_EVAL scripts)
-rw-r--r--src/qt/transactionrecord.cpp39
-rw-r--r--src/qt/transactionrecord.h4
-rw-r--r--src/qt/transactiontablemodel.cpp17
-rw-r--r--src/qt/transactionview.cpp4
4 files changed, 31 insertions, 33 deletions
diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp
index f3dbd45c6d..2cd135df34 100644
--- a/src/qt/transactionrecord.cpp
+++ b/src/qt/transactionrecord.cpp
@@ -64,17 +64,10 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
sub.credit = nUnmatured;
}
}
- else if (!mapValue["from"].empty() || !mapValue["message"].empty())
- {
- // Received by IP connection
- sub.type = TransactionRecord::RecvFromIP;
- if (!mapValue["from"].empty())
- sub.address = mapValue["from"];
- }
else
{
+ bool foundAddress = false;
// Received by Bitcoin Address
- sub.type = TransactionRecord::RecvWithAddress;
BOOST_FOREACH(const CTxOut& txout, wtx.vout)
{
if(wallet->IsMine(txout))
@@ -82,11 +75,19 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
CBitcoinAddress address;
if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address))
{
+ sub.type = TransactionRecord::RecvWithAddress;
sub.address = address.ToString();
+ foundAddress = true;
+ break;
}
- break;
}
}
+ if(!foundAddress)
+ {
+ // Received by IP connection, or other non-address transaction like OP_EVAL
+ sub.type = TransactionRecord::RecvFromOther;
+ sub.address = mapValue["from"];
+ }
}
parts.append(sub);
}
@@ -127,21 +128,19 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *
// from a transaction sent back to our own address.
continue;
}
- else if(!mapValue["to"].empty())
+
+ CBitcoinAddress address;
+ if (ExtractAddress(txout.scriptPubKey, address))
{
- // Sent to IP
- sub.type = TransactionRecord::SendToIP;
- sub.address = mapValue["to"];
+ // Sent to Bitcoin Address
+ sub.type = TransactionRecord::SendToAddress;
+ sub.address = address.ToString();
}
else
{
- // Sent to Bitcoin Address
- sub.type = TransactionRecord::SendToAddress;
- CBitcoinAddress address;
- if (ExtractAddress(txout.scriptPubKey, address))
- {
- sub.address = address.ToString();
- }
+ // Sent to IP, or other non-address transaction like OP_EVAL
+ sub.type = TransactionRecord::SendToOther;
+ sub.address = mapValue["to"];
}
int64 nValue = txout.nValue;
diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h
index 704cfe65b7..db06374c44 100644
--- a/src/qt/transactionrecord.h
+++ b/src/qt/transactionrecord.h
@@ -65,9 +65,9 @@ public:
Other,
Generated,
SendToAddress,
- SendToIP,
+ SendToOther,
RecvWithAddress,
- RecvFromIP,
+ RecvFromOther,
SendToSelf
};
diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp
index 0e1733f156..b863546691 100644
--- a/src/qt/transactiontablemodel.cpp
+++ b/src/qt/transactiontablemodel.cpp
@@ -345,12 +345,11 @@ QString TransactionTableModel::formatTxType(const TransactionRecord *wtx) const
{
case TransactionRecord::RecvWithAddress:
return tr("Received with");
- case TransactionRecord::RecvFromIP:
- return tr("Received from IP");
+ case TransactionRecord::RecvFromOther:
+ return tr("Received from");
case TransactionRecord::SendToAddress:
+ case TransactionRecord::SendToOther:
return tr("Sent to");
- case TransactionRecord::SendToIP:
- return tr("Sent to IP");
case TransactionRecord::SendToSelf:
return tr("Payment to yourself");
case TransactionRecord::Generated:
@@ -367,10 +366,10 @@ QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx
case TransactionRecord::Generated:
return QIcon(":/icons/tx_mined");
case TransactionRecord::RecvWithAddress:
- case TransactionRecord::RecvFromIP:
+ case TransactionRecord::RecvFromOther:
return QIcon(":/icons/tx_input");
case TransactionRecord::SendToAddress:
- case TransactionRecord::SendToIP:
+ case TransactionRecord::SendToOther:
return QIcon(":/icons/tx_output");
default:
return QIcon(":/icons/tx_inout");
@@ -382,12 +381,12 @@ QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, b
{
switch(wtx->type)
{
- case TransactionRecord::RecvFromIP:
+ case TransactionRecord::RecvFromOther:
return QString::fromStdString(wtx->address);
case TransactionRecord::RecvWithAddress:
case TransactionRecord::SendToAddress:
return lookupAddress(wtx->address, tooltip);
- case TransactionRecord::SendToIP:
+ case TransactionRecord::SendToOther:
return QString::fromStdString(wtx->address);
case TransactionRecord::SendToSelf:
case TransactionRecord::Generated:
@@ -478,7 +477,7 @@ QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx)
QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const
{
QString tooltip = formatTxStatus(rec) + QString("\n") + formatTxType(rec);
- if(rec->type==TransactionRecord::RecvFromIP || rec->type==TransactionRecord::SendToIP ||
+ if(rec->type==TransactionRecord::RecvFromOther || rec->type==TransactionRecord::SendToOther ||
rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress)
{
tooltip += QString(" ") + formatTxToAddress(rec, true);
diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp
index cba06298d4..4c357d1379 100644
--- a/src/qt/transactionview.cpp
+++ b/src/qt/transactionview.cpp
@@ -71,9 +71,9 @@ TransactionView::TransactionView(QWidget *parent) :
typeWidget->addItem(tr("All"), TransactionFilterProxy::ALL_TYPES);
typeWidget->addItem(tr("Received with"), TransactionFilterProxy::TYPE(TransactionRecord::RecvWithAddress) |
- TransactionFilterProxy::TYPE(TransactionRecord::RecvFromIP));
+ TransactionFilterProxy::TYPE(TransactionRecord::RecvFromOther));
typeWidget->addItem(tr("Sent to"), TransactionFilterProxy::TYPE(TransactionRecord::SendToAddress) |
- TransactionFilterProxy::TYPE(TransactionRecord::SendToIP));
+ TransactionFilterProxy::TYPE(TransactionRecord::SendToOther));
typeWidget->addItem(tr("To yourself"), TransactionFilterProxy::TYPE(TransactionRecord::SendToSelf));
typeWidget->addItem(tr("Mined"), TransactionFilterProxy::TYPE(TransactionRecord::Generated));
typeWidget->addItem(tr("Other"), TransactionFilterProxy::TYPE(TransactionRecord::Other));