|
|
@ -35,6 +35,13 @@ QList<CAmount> CoinControlDialog::payAmounts; |
|
|
|
CCoinControl* CoinControlDialog::coinControl = new CCoinControl(); |
|
|
|
CCoinControl* CoinControlDialog::coinControl = new CCoinControl(); |
|
|
|
bool CoinControlDialog::fSubtractFeeFromAmount = false; |
|
|
|
bool CoinControlDialog::fSubtractFeeFromAmount = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool CCoinControlWidgetItem::operator<(const QTreeWidgetItem &other) const { |
|
|
|
|
|
|
|
int column = treeWidget()->sortColumn(); |
|
|
|
|
|
|
|
if (column == CoinControlDialog::COLUMN_AMOUNT || column == CoinControlDialog::COLUMN_DATE || column == CoinControlDialog::COLUMN_CONFIRMATIONS) |
|
|
|
|
|
|
|
return data(column, Qt::UserRole).toLongLong() < other.data(column, Qt::UserRole).toLongLong(); |
|
|
|
|
|
|
|
return QTreeWidgetItem::operator<(other); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CoinControlDialog::CoinControlDialog(const PlatformStyle *_platformStyle, QWidget *parent) : |
|
|
|
CoinControlDialog::CoinControlDialog(const PlatformStyle *_platformStyle, QWidget *parent) : |
|
|
|
QDialog(parent), |
|
|
|
QDialog(parent), |
|
|
|
ui(new Ui::CoinControlDialog), |
|
|
|
ui(new Ui::CoinControlDialog), |
|
|
@ -128,11 +135,9 @@ CoinControlDialog::CoinControlDialog(const PlatformStyle *_platformStyle, QWidge |
|
|
|
ui->treeWidget->setColumnWidth(COLUMN_CONFIRMATIONS, 110); |
|
|
|
ui->treeWidget->setColumnWidth(COLUMN_CONFIRMATIONS, 110); |
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_TXHASH, true); // store transaction hash in this column, but don't show it
|
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_TXHASH, true); // store transaction hash in this column, but don't show it
|
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but don't show it
|
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but don't show it
|
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but don't show it
|
|
|
|
|
|
|
|
ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but don't show it
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// default view is sorted by amount desc
|
|
|
|
// default view is sorted by amount desc
|
|
|
|
sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder); |
|
|
|
sortView(COLUMN_AMOUNT, Qt::DescendingOrder); |
|
|
|
|
|
|
|
|
|
|
|
// restore list mode and sortorder as a convenience feature
|
|
|
|
// restore list mode and sortorder as a convenience feature
|
|
|
|
QSettings settings; |
|
|
|
QSettings settings; |
|
|
@ -164,15 +169,6 @@ void CoinControlDialog::setModel(WalletModel *_model) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// helper function str_pad
|
|
|
|
|
|
|
|
QString CoinControlDialog::strPad(QString s, int nPadLength, QString sPadding) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
while (s.length() < nPadLength) |
|
|
|
|
|
|
|
s = sPadding + s; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return s; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ok button
|
|
|
|
// ok button
|
|
|
|
void CoinControlDialog::buttonBoxClicked(QAbstractButton* button) |
|
|
|
void CoinControlDialog::buttonBoxClicked(QAbstractButton* button) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -338,7 +334,7 @@ void CoinControlDialog::sortView(int column, Qt::SortOrder order) |
|
|
|
sortColumn = column; |
|
|
|
sortColumn = column; |
|
|
|
sortOrder = order; |
|
|
|
sortOrder = order; |
|
|
|
ui->treeWidget->sortItems(column, order); |
|
|
|
ui->treeWidget->sortItems(column, order); |
|
|
|
ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); |
|
|
|
ui->treeWidget->header()->setSortIndicator(sortColumn, sortOrder); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// treeview: clicked on header
|
|
|
|
// treeview: clicked on header
|
|
|
@ -346,12 +342,10 @@ void CoinControlDialog::headerSectionClicked(int logicalIndex) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing
|
|
|
|
if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing
|
|
|
|
{ |
|
|
|
{ |
|
|
|
ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); |
|
|
|
ui->treeWidget->header()->setSortIndicator(sortColumn, sortOrder); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
logicalIndex = getMappedColumn(logicalIndex, false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sortColumn == logicalIndex) |
|
|
|
if (sortColumn == logicalIndex) |
|
|
|
sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder); |
|
|
|
sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder); |
|
|
|
else |
|
|
|
else |
|
|
@ -658,7 +652,7 @@ void CoinControlDialog::updateView() |
|
|
|
model->listCoins(mapCoins); |
|
|
|
model->listCoins(mapCoins); |
|
|
|
|
|
|
|
|
|
|
|
BOOST_FOREACH(const PAIRTYPE(QString, std::vector<COutput>)& coins, mapCoins) { |
|
|
|
BOOST_FOREACH(const PAIRTYPE(QString, std::vector<COutput>)& coins, mapCoins) { |
|
|
|
QTreeWidgetItem *itemWalletAddress = new QTreeWidgetItem(); |
|
|
|
CCoinControlWidgetItem *itemWalletAddress = new CCoinControlWidgetItem(); |
|
|
|
itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); |
|
|
|
itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); |
|
|
|
QString sWalletAddress = coins.first; |
|
|
|
QString sWalletAddress = coins.first; |
|
|
|
QString sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress); |
|
|
|
QString sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress); |
|
|
@ -686,9 +680,9 @@ void CoinControlDialog::updateView() |
|
|
|
nSum += out.tx->vout[out.i].nValue; |
|
|
|
nSum += out.tx->vout[out.i].nValue; |
|
|
|
nChildren++; |
|
|
|
nChildren++; |
|
|
|
|
|
|
|
|
|
|
|
QTreeWidgetItem *itemOutput; |
|
|
|
CCoinControlWidgetItem *itemOutput; |
|
|
|
if (treeMode) itemOutput = new QTreeWidgetItem(itemWalletAddress); |
|
|
|
if (treeMode) itemOutput = new CCoinControlWidgetItem(itemWalletAddress); |
|
|
|
else itemOutput = new QTreeWidgetItem(ui->treeWidget); |
|
|
|
else itemOutput = new CCoinControlWidgetItem(ui->treeWidget); |
|
|
|
itemOutput->setFlags(flgCheckbox); |
|
|
|
itemOutput->setFlags(flgCheckbox); |
|
|
|
itemOutput->setCheckState(COLUMN_CHECKBOX,Qt::Unchecked); |
|
|
|
itemOutput->setCheckState(COLUMN_CHECKBOX,Qt::Unchecked); |
|
|
|
|
|
|
|
|
|
|
@ -721,14 +715,15 @@ void CoinControlDialog::updateView() |
|
|
|
|
|
|
|
|
|
|
|
// amount
|
|
|
|
// amount
|
|
|
|
itemOutput->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, out.tx->vout[out.i].nValue)); |
|
|
|
itemOutput->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, out.tx->vout[out.i].nValue)); |
|
|
|
itemOutput->setText(COLUMN_AMOUNT_INT64, strPad(QString::number(out.tx->vout[out.i].nValue), 15, " ")); // padding so that sorting works correctly
|
|
|
|
itemOutput->setData(COLUMN_AMOUNT, Qt::UserRole, QVariant((qlonglong)out.tx->vout[out.i].nValue)); // padding so that sorting works correctly
|
|
|
|
|
|
|
|
|
|
|
|
// date
|
|
|
|
// date
|
|
|
|
itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime())); |
|
|
|
itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime())); |
|
|
|
itemOutput->setText(COLUMN_DATE_INT64, strPad(QString::number(out.tx->GetTxTime()), 20, " ")); |
|
|
|
itemOutput->setData(COLUMN_DATE, Qt::UserRole, QVariant((qlonglong)out.tx->GetTxTime())); |
|
|
|
|
|
|
|
|
|
|
|
// confirmations
|
|
|
|
// confirmations
|
|
|
|
itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " ")); |
|
|
|
itemOutput->setText(COLUMN_CONFIRMATIONS, QString::number(out.nDepth)); |
|
|
|
|
|
|
|
itemOutput->setData(COLUMN_CONFIRMATIONS, Qt::UserRole, QVariant((qlonglong)out.nDepth)); |
|
|
|
|
|
|
|
|
|
|
|
// transaction hash
|
|
|
|
// transaction hash
|
|
|
|
uint256 txhash = out.tx->GetHash(); |
|
|
|
uint256 txhash = out.tx->GetHash(); |
|
|
@ -756,7 +751,7 @@ void CoinControlDialog::updateView() |
|
|
|
{ |
|
|
|
{ |
|
|
|
itemWalletAddress->setText(COLUMN_CHECKBOX, "(" + QString::number(nChildren) + ")"); |
|
|
|
itemWalletAddress->setText(COLUMN_CHECKBOX, "(" + QString::number(nChildren) + ")"); |
|
|
|
itemWalletAddress->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, nSum)); |
|
|
|
itemWalletAddress->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, nSum)); |
|
|
|
itemWalletAddress->setText(COLUMN_AMOUNT_INT64, strPad(QString::number(nSum), 15, " ")); |
|
|
|
itemWalletAddress->setData(COLUMN_AMOUNT, Qt::UserRole, QVariant((qlonglong)nSum)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|