#include "init.h"
#include "base58.h"
#include "bitcoinunits.h"
+#include "script.h"
#include "walletmodel.h"
#include "addresstablemodel.h"
#include "optionsmodel.h"
coinControl->ListSelected(vCoinControl);
model->getOutputs(vCoinControl, vOutputs);
- BOOST_FOREACH(const COutput& out, vOutputs)
+ for(const COutput& out : vOutputs)
{
// Quantity
nQuantity++;
dPriorityInputs += (double)out.tx->vout[out.i].nValue * (out.nDepth+1);
// Bytes
- CTxDestination address;
- if(ExtractDestination(out.tx->vout[out.i].scriptPubKey, address))
+ CBitcoinAddress address;
+ if(ExtractAddress(*pwalletMain, out.tx->vout[out.i].scriptPubKey, address))
{
- CPubKey pubkey;
- CKeyID *keyid = boost::get< CKeyID >(&address);
- if (keyid && model->getPubKey(*keyid, pubkey))
- nBytesInputs += (pubkey.IsCompressed() ? 148 : 180);
- else
- nBytesInputs += 148; // in all error cases, simply assume 148 here
+ if (address.IsPair())
+ nBytesInputs += 213;
+ else if (address.IsPubKey())
+ {
+ CPubKey pubkey;
+ CKeyID keyid;
+ if (address.GetKeyID(keyid) && model->getPubKey(keyid, pubkey))
+ nBytesInputs += (pubkey.IsCompressed() ? 148 : 180);
+ else
+ nBytesInputs += 148; // in all error cases, simply assume 148 here
+ }
}
- else nBytesInputs += 148;
}
// calculation
void CoinControlDialog::updateView()
{
+ if (!model || !model->getOptionsModel() || !model->getAddressTableModel())
+ return;
bool treeMode = ui->radioTreeMode->isChecked();
ui->treeWidget->clear();
QFlags<Qt::ItemFlag> flgCheckbox=Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
QFlags<Qt::ItemFlag> flgTristate=Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsTristate;
- int nDisplayUnit = BitcoinUnits::BTC;
- if (model && model->getOptionsModel())
- nDisplayUnit = model->getOptionsModel()->getDisplayUnit();
+ int nDisplayUnit = model->getOptionsModel()->getDisplayUnit();
map<QString, vector<COutput> > mapCoins;
model->listCoins(mapCoins);
- BOOST_FOREACH(PAIRTYPE(QString, vector<COutput>) coins, mapCoins)
+ for(auto& coins : mapCoins)
{
QTreeWidgetItem *itemWalletAddress = new QTreeWidgetItem();
+ itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked);
QString sWalletAddress = coins.first;
- QString sWalletLabel = "";
- if (model->getAddressTableModel())
- sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress);
- if (sWalletLabel.length() == 0)
+ QString sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress);
+ if (sWalletLabel.isEmpty())
sWalletLabel = tr("(no label)");
if (treeMode)
int nChildren = 0;
int nInputSum = 0;
uint64_t nTxWeight = 0, nTxWeightSum = 0;
- BOOST_FOREACH(const COutput& out, coins.second)
+ for(const COutput& out : coins.second)
{
int nInputSize = 148; // 180 if uncompressed public key
nSum += out.tx->vout[out.i].nValue;
itemOutput->setCheckState(COLUMN_CHECKBOX,Qt::Unchecked);
// address
- CTxDestination outputAddress;
+ CBitcoinAddress outputAddress;
QString sAddress = "";
- if(ExtractDestination(out.tx->vout[out.i].scriptPubKey, outputAddress))
+
+ if(ExtractAddress(*pwalletMain, out.tx->vout[out.i].scriptPubKey, outputAddress))
{
sAddress = CBitcoinAddress(outputAddress).ToString().c_str();
if (!treeMode || (!(sAddress == sWalletAddress)))
itemOutput->setText(COLUMN_ADDRESS, sAddress);
- CPubKey pubkey;
- CKeyID *keyid = boost::get< CKeyID >(&outputAddress);
- if (keyid && model->getPubKey(*keyid, pubkey) && !pubkey.IsCompressed())
- nInputSize = 180;
+ if (outputAddress.IsPubKey())
+ {
+ CPubKey pubkey;
+ CKeyID keyid;
+ if (outputAddress.GetKeyID(keyid) && model->getPubKey(keyid, pubkey) && !pubkey.IsCompressed())
+ nInputSize = 180;
+ }
}
// label
}
else if (!treeMode)
{
- QString sLabel = "";
- if (model->getAddressTableModel())
- sLabel = model->getAddressTableModel()->labelForAddress(sAddress);
- if (sLabel.length() == 0)
+ QString sLabel = model->getAddressTableModel()->labelForAddress(sAddress);
+ if (sLabel.isEmpty())
sLabel = tr("(no label)");
itemOutput->setText(COLUMN_LABEL, sLabel);
}