From: CryptoManiac Date: Wed, 3 Dec 2014 22:52:43 +0000 (+0300) Subject: Merge pull request #72 from fsb4000/senderAddress X-Git-Tag: nvc-v0.5.0~11 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=b7f085461f3ee2b54f8c92abb2c38b5e12c963d8;hp=3d933e84b0f8f29d0c6ce4459e78027dcac3fa86;p=novacoin.git Merge pull request #72 from fsb4000/senderAddress senderAddress --- diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index f6d9c8c..715a5a5 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -9,6 +9,9 @@ #include "ui_interface.h" #include "base58.h" +#include +#include + QString TransactionDesc::FormatTxStatus(const CWalletTx& wtx) { if (!wtx.IsFinal()) @@ -84,7 +87,38 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) { if (wallet->mapAddressBook.count(address)) { - strHTML += "" + tr("From") + ": " + tr("unknown") + "
"; + std::vector addedAddresses; + for (unsigned int i = 0; i < wtx.vin.size(); i++) + { + uint256 hash; + const CTxIn& vin = wtx.vin[i]; + hash.SetHex(vin.prevout.hash.ToString()); + CTransaction wtxPrev; + uint256 hashBlock = 0; + if (!GetTransaction(hash, wtxPrev, hashBlock)) + { + strHTML += "" + tr("From") + ": " + tr("unknown") + "
"; + continue; + } + CTxDestination senderAddress; + if (!ExtractDestination(wtxPrev.vout[vin.prevout.n].scriptPubKey, senderAddress) ) + { + strHTML += "" + tr("From") + ": " + tr("unknown") + "
"; + } + else if(std::find(addedAddresses.begin(), addedAddresses.end(), senderAddress) + == addedAddresses.end() ) + { + addedAddresses.push_back(senderAddress); + strHTML += "" + tr("From") + ": "; + strHTML += GUIUtil::HtmlEscape(CBitcoinAddress(senderAddress).ToString()); + if(wallet->mapAddressBook.find(senderAddress) != wallet->mapAddressBook.end()) + if (!wallet->mapAddressBook[senderAddress].empty()) + { + strHTML += " (" + tr("label") + ": " + GUIUtil::HtmlEscape(wallet->mapAddressBook[senderAddress]) + ")"; + } + strHTML += "
"; + } + } strHTML += "" + tr("To") + ": "; strHTML += GUIUtil::HtmlEscape(CBitcoinAddress(address).ToString()); if (!wallet->mapAddressBook[address].empty())