"Receive with" i.s.o. "Receive from" address
authorWladimir J. van der Laan <laanwj@gmail.com>
Sat, 28 May 2011 20:31:27 +0000 (22:31 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Sat, 28 May 2011 20:31:27 +0000 (22:31 +0200)
gui/include/transactionrecord.h
gui/src/transactionrecord.cpp
gui/src/transactiontablemodel.cpp

index 9769d80..d8aca76 100644 (file)
@@ -51,7 +51,7 @@ public:
         Generated,
         SendToAddress,
         SendToIP,
-        RecvFromAddress,
+        RecvWithAddress,
         RecvFromIP,
         SendToSelf
     };
index 4024e25..9feca44 100644 (file)
@@ -128,7 +128,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWalletTx
             else
             {
                 // Received by Bitcoin Address
-                sub.type = TransactionRecord::RecvFromAddress;
+                sub.type = TransactionRecord::RecvWithAddress;
                 BOOST_FOREACH(const CTxOut& txout, wtx.vout)
                 {
                     if (txout.IsMine())
@@ -176,9 +176,9 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWalletTx
 
                     if (txout.IsMine())
                     {
-                        // Sent to self
-                        sub.type = TransactionRecord::SendToSelf;
-                        sub.credit = txout.nValue;
+                        // Ignore parts sent to self, as this is usually the change
+                        // from a transaction sent back to our own address.
+                        continue;
                     } else if (!mapValue["to"].empty())
                     {
                         // Sent to IP
@@ -199,7 +199,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWalletTx
                         nValue += nTxFee;
                         nTxFee = 0;
                     }
-                    sub.debit = nValue;
+                    sub.debit = -nValue;
                     sub.status.sortKey += strprintf("-%d", nOut);
 
                     parts.append(sub);
index 3a50197..57d618e 100644 (file)
@@ -27,25 +27,17 @@ public:
     void refreshWallet()
     {
         qDebug() << "refreshWallet";
-        cachedWallet.clear();
 
-        /* Query wallet from core, and compare with our own
-           representation.
+        /* Query entire wallet from core.
          */
+        cachedWallet.clear();
         CRITICAL_BLOCK(cs_mapWallet)
         {
             for(std::map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
             {
-                /* TODO: Make note of new and removed transactions */
-                /* insertedIndices */
-                /* removedIndices */
                 cachedWallet.append(TransactionRecord::decomposeTransaction(it->second));
             }
         }
-        /* beginInsertRows(QModelIndex(), first, last) */
-        /* endInsertRows */
-        /* beginRemoveRows(QModelIndex(), first, last) */
-        /* beginEndRows */
     }
 
     /* Update our model of the wallet.
@@ -64,6 +56,10 @@ public:
         {
             qDebug() << "  " << QString::fromStdString(hash.ToString());
         }
+        /* beginInsertRows(QModelIndex(), first, last) */
+        /* endInsertRows */
+        /* beginRemoveRows(QModelIndex(), first, last) */
+        /* beginEndRows */
 
         refreshWallet();
     }
@@ -218,17 +214,17 @@ QVariant TransactionTableModel::formatTxDescription(const TransactionRecord *wtx
 
     switch(wtx->type)
     {
-    case TransactionRecord::RecvFromAddress:
-        description = tr("From: ") + QString::fromStdString(lookupAddress(wtx->address));
+    case TransactionRecord::RecvWithAddress:
+        description = tr("Received with: ") + QString::fromStdString(lookupAddress(wtx->address));
         break;
     case TransactionRecord::RecvFromIP:
-        description = tr("From IP: ") + QString::fromStdString(wtx->address);
+        description = tr("Received from IP: ") + QString::fromStdString(wtx->address);
         break;
     case TransactionRecord::SendToAddress:
-        description = tr("To: ") + QString::fromStdString(lookupAddress(wtx->address));
+        description = tr("Sent to: ") + QString::fromStdString(lookupAddress(wtx->address));
         break;
     case TransactionRecord::SendToIP:
-        description = tr("To IP: ") + QString::fromStdString(wtx->address);
+        description = tr("Sent to IP: ") + QString::fromStdString(wtx->address);
         break;
     case TransactionRecord::SendToSelf:
         description = tr("Payment to yourself");
@@ -340,7 +336,7 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
         /* Role for filtering tabs by type */
         switch(rec->type)
         {
-        case TransactionRecord::RecvFromAddress:
+        case TransactionRecord::RecvWithAddress:
         case TransactionRecord::RecvFromIP:
             return TransactionTableModel::Received;
         case TransactionRecord::SendToAddress: