mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 06:28:31 +01:00
Merge remote-tracking branch 'upstream/master'
Conflicts: src/qt/overviewpage.cpp src/qt/transactiondesc.cpp
This commit is contained in:
@@ -129,12 +129,12 @@ public:
|
||||
case CT_NEW:
|
||||
if(inModel)
|
||||
{
|
||||
qDebug() << "TransactionTablePriv::updateWallet : Warning: Got CT_NEW, but transaction is already in model";
|
||||
qWarning() << "TransactionTablePriv::updateWallet : Warning: Got CT_NEW, but transaction is already in model";
|
||||
break;
|
||||
}
|
||||
if(!inWallet)
|
||||
{
|
||||
qDebug() << "TransactionTablePriv::updateWallet : Warning: Got CT_NEW, but transaction is not in wallet";
|
||||
qWarning() << "TransactionTablePriv::updateWallet : Warning: Got CT_NEW, but transaction is not in wallet";
|
||||
break;
|
||||
}
|
||||
if(showTransaction)
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
case CT_DELETED:
|
||||
if(!inModel)
|
||||
{
|
||||
qDebug() << "TransactionTablePriv::updateWallet : Warning: Got CT_DELETED, but transaction is not in model";
|
||||
qWarning() << "TransactionTablePriv::updateWallet : Warning: Got CT_DELETED, but transaction is not in model";
|
||||
break;
|
||||
}
|
||||
// Removed -- remove entire transaction from table
|
||||
@@ -167,8 +167,7 @@ public:
|
||||
parent->endRemoveRows();
|
||||
break;
|
||||
case CT_UPDATED:
|
||||
// Miscellaneous updates -- nothing to do, status update will take care of this, and is only computed for
|
||||
// visible transactions.
|
||||
emit parent->dataChanged(parent->index(lowerIndex, parent->Status), parent->index(upperIndex-1, parent->Amount));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -189,20 +188,21 @@ public:
|
||||
// stuck if the core is holding the locks for a longer time - for
|
||||
// example, during a wallet rescan.
|
||||
//
|
||||
// If a status update is needed (blocks came in since last check),
|
||||
// update the status of this transaction from the wallet. Otherwise,
|
||||
// If a status update is needed (blocks or conflicts came in since last check),
|
||||
// update the status of this transaction from the wallet. Otherwise,
|
||||
// simply re-use the cached status.
|
||||
TRY_LOCK(cs_main, lockMain);
|
||||
if(lockMain)
|
||||
{
|
||||
TRY_LOCK(wallet->cs_wallet, lockWallet);
|
||||
if(lockWallet && rec->statusUpdateNeeded())
|
||||
if(lockWallet && rec->statusUpdateNeeded(wallet->nConflictsReceived))
|
||||
{
|
||||
std::map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(rec->hash);
|
||||
|
||||
if(mi != wallet->mapWallet.end())
|
||||
{
|
||||
rec->updateStatus(mi->second);
|
||||
rec->status.cur_num_conflicts = wallet->nConflictsReceived;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -221,7 +221,7 @@ public:
|
||||
std::map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(rec->hash);
|
||||
if(mi != wallet->mapWallet.end())
|
||||
{
|
||||
return TransactionDesc::toHTML(wallet, mi->second, rec->idx, unit);
|
||||
return TransactionDesc::toHTML(wallet, mi->second, rec, unit);
|
||||
}
|
||||
}
|
||||
return QString("");
|
||||
@@ -234,8 +234,7 @@ TransactionTableModel::TransactionTableModel(CWallet* wallet, WalletModel *paren
|
||||
walletModel(parent),
|
||||
priv(new TransactionTablePriv(wallet, this))
|
||||
{
|
||||
columns << QString() << tr("Date") << tr("Type") << tr("Address") << tr("Amount");
|
||||
|
||||
columns << QString() << tr("Date") << tr("Type") << tr("Address") << BitcoinUnits::getAmountColumnTitle(walletModel->getOptionsModel()->getDisplayUnit());
|
||||
priv->refreshWallet();
|
||||
|
||||
connect(walletModel->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
|
||||
@@ -246,6 +245,13 @@ TransactionTableModel::~TransactionTableModel()
|
||||
delete priv;
|
||||
}
|
||||
|
||||
/** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */
|
||||
void TransactionTableModel::updateAmountColumnTitle()
|
||||
{
|
||||
columns[Amount] = BitcoinUnits::getAmountColumnTitle(walletModel->getOptionsModel()->getDisplayUnit());
|
||||
emit headerDataChanged(Qt::Horizontal,Amount,Amount);
|
||||
}
|
||||
|
||||
void TransactionTableModel::updateTransaction(const QString &hash, int status)
|
||||
{
|
||||
uint256 updated;
|
||||
@@ -362,6 +368,8 @@ QString TransactionTableModel::formatTxType(const TransactionRecord *wtx) const
|
||||
return tr("Payment to yourself");
|
||||
case TransactionRecord::Generated:
|
||||
return tr("Mined");
|
||||
case TransactionRecord::Other:
|
||||
return tr("Other");
|
||||
default:
|
||||
return QString();
|
||||
}
|
||||
@@ -387,19 +395,22 @@ QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx
|
||||
|
||||
QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const
|
||||
{
|
||||
// mark transactions involving watch-only addresses:
|
||||
QString watchAddress = wtx->involvesWatchAddress ? " (w) " : "";
|
||||
|
||||
switch(wtx->type)
|
||||
{
|
||||
case TransactionRecord::RecvFromOther:
|
||||
return QString::fromStdString(wtx->address);
|
||||
return QString::fromStdString(wtx->address) + watchAddress;
|
||||
case TransactionRecord::RecvWithAddress:
|
||||
case TransactionRecord::SendToAddress:
|
||||
case TransactionRecord::Generated:
|
||||
return lookupAddress(wtx->address, tooltip);
|
||||
return lookupAddress(wtx->address, tooltip) + watchAddress;
|
||||
case TransactionRecord::SendToOther:
|
||||
return QString::fromStdString(wtx->address);
|
||||
return QString::fromStdString(wtx->address) + watchAddress;
|
||||
case TransactionRecord::SendToSelf:
|
||||
default:
|
||||
return tr("(n/a)");
|
||||
return tr("(n/a)") + watchAddress;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,7 +545,13 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
|
||||
return formatTooltip(rec);
|
||||
case Qt::TextAlignmentRole:
|
||||
return column_alignments[index.column()];
|
||||
case Qt::BackgroundColorRole:
|
||||
if (rec->status.hasConflicting)
|
||||
return COLOR_HASCONFLICTING_BG;
|
||||
break;
|
||||
case Qt::ForegroundRole:
|
||||
if (rec->status.hasConflicting)
|
||||
return COLOR_HASCONFLICTING;
|
||||
// Non-confirmed (but not immature) as transactions are grey
|
||||
if(!rec->status.countsForBalance && rec->status.status != TransactionStatus::Immature)
|
||||
{
|
||||
@@ -624,5 +641,6 @@ QModelIndex TransactionTableModel::index(int row, int column, const QModelIndex
|
||||
void TransactionTableModel::updateDisplayUnit()
|
||||
{
|
||||
// emit dataChanged to update Amount column with the current unit
|
||||
updateAmountColumnTitle();
|
||||
emit dataChanged(index(0, Amount), index(priv->size()-1, Amount));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user