X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Ftransactiondesc.cpp;h=72bc4607fd8069e181635d78482756ec208c27aa;hb=f8ea0dd6459856f2df18ca2ad532d49432a087dd;hp=6ca00f6d74716d6fe8b6c6d39fb40f69384a6453;hpb=adb8391acdf671640adb1e8be564e68b254fca69;p=novacoin.git diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 6ca00f6..72bc460 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()) @@ -39,10 +42,10 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) strHTML.reserve(4000); strHTML += ""; - int64 nTime = wtx.GetTxTime(); - int64 nCredit = wtx.GetCredit(); - int64 nDebit = wtx.GetDebit(); - int64 nNet = nCredit - nDebit; + int64_t nTime = wtx.GetTxTime(); + int64_t nCredit = wtx.GetCredit(MINE_ALL); + int64_t nDebit = wtx.GetDebit(MINE_ALL); + int64_t nNet = nCredit - nDebit; strHTML += "" + tr("Status") + ": " + FormatTxStatus(wtx); int nRequests = wtx.GetRequestCount(); @@ -60,7 +63,7 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) // // From // - if (wtx.IsCoinBase()) + if (wtx.IsCoinBase() || wtx.IsCoinStake()) { strHTML += "" + tr("Source") + ": " + tr("Generated") + "
"; } @@ -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()) @@ -108,9 +142,9 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) // Online transaction std::string strAddress = wtx.mapValue["to"]; strHTML += "" + tr("To") + ": "; - CTxDestination dest = CBitcoinAddress(strAddress).Get(); - if (wallet->mapAddressBook.count(dest) && !wallet->mapAddressBook[dest].empty()) - strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[dest]) + " "; + CBitcoinAddress addr(strAddress); + if (wallet->mapAddressBook.count(addr) && !wallet->mapAddressBook[addr].empty()) + strHTML += GUIUtil::HtmlEscape(wallet->mapAddressBook[addr]) + " "; strHTML += GUIUtil::HtmlEscape(strAddress) + "
"; } @@ -122,9 +156,9 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) // // Coinbase // - int64 nUnmatured = 0; + int64_t nUnmatured = 0; BOOST_FOREACH(const CTxOut& txout, wtx.vout) - nUnmatured += wallet->GetCredit(txout); + nUnmatured += wallet->GetCredit(txout, MINE_ALL); strHTML += "" + tr("Credit") + ": "; if (wtx.IsInMainChain()) strHTML += BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, nUnmatured)+ " (" + tr("matures in %n more block(s)", "", wtx.GetBlocksToMaturity()) + ")"; @@ -179,13 +213,13 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) if (fAllToMe) { // Payment to self - int64 nChange = wtx.GetChange(); - int64 nValue = nCredit - nChange; + int64_t nChange = wtx.GetChange(); + int64_t nValue = nCredit - nChange; strHTML += "" + tr("Debit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -nValue) + "
"; strHTML += "" + tr("Credit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, nValue) + "
"; } - int64 nTxFee = nDebit - wtx.GetValueOut(); + int64_t nTxFee = nDebit - wtx.GetValueOut(); if (nTxFee > 0) strHTML += "" + tr("Transaction fee") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -nTxFee) + "
"; } @@ -196,10 +230,10 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) // BOOST_FOREACH(const CTxIn& txin, wtx.vin) if (wallet->IsMine(txin)) - strHTML += "" + tr("Debit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -wallet->GetDebit(txin)) + "
"; + strHTML += "" + tr("Debit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -wallet->GetDebit(txin, MINE_ALL)) + "
"; BOOST_FOREACH(const CTxOut& txout, wtx.vout) if (wallet->IsMine(txout)) - strHTML += "" + tr("Credit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, wallet->GetCredit(txout)) + "
"; + strHTML += "" + tr("Credit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, wallet->GetCredit(txout, MINE_ALL)) + "
"; } } @@ -226,10 +260,10 @@ QString TransactionDesc::toHTML(CWallet *wallet, CWalletTx &wtx) strHTML += "

" + tr("Debug information") + "

"; BOOST_FOREACH(const CTxIn& txin, wtx.vin) if(wallet->IsMine(txin)) - strHTML += "" + tr("Debit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -wallet->GetDebit(txin)) + "
"; + strHTML += "" + tr("Debit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, -wallet->GetDebit(txin, MINE_ALL)) + "
"; BOOST_FOREACH(const CTxOut& txout, wtx.vout) if(wallet->IsMine(txout)) - strHTML += "" + tr("Credit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, wallet->GetCredit(txout)) + "
"; + strHTML += "" + tr("Credit") + ": " + BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, wallet->GetCredit(txout, MINE_ALL)) + "
"; strHTML += "
" + tr("Transaction") + ":
"; strHTML += GUIUtil::HtmlEscape(wtx.ToString(), true);