6#include <qt/forms/ui_overviewpage.h>
19#include <QAbstractItemDelegate>
20#include <QApplication>
23#include <QStatusTipEvent>
28#define DECORATION_SIZE 54
38 : QAbstractItemDelegate(parent), platformStyle(_platformStyle)
43 inline void paint(QPainter *painter,
const QStyleOptionViewItem &option,
44 const QModelIndex &index )
const override
49 QRect mainRect = option.rect;
53 int halfheight = (mainRect.height() - 2*ypad)/2;
54 QRect amountRect(mainRect.left() + xspace, mainRect.top()+ypad, mainRect.width() - xspace, halfheight);
55 QRect addressRect(mainRect.left() + xspace, mainRect.top()+ypad+halfheight, mainRect.width() - xspace, halfheight);
56 icon = platformStyle->SingleColorIcon(icon);
57 icon.paint(painter, decorationRect);
60 QString address = index.data(Qt::DisplayRole).toString();
63 QVariant value = index.data(Qt::ForegroundRole);
64 QColor foreground = option.palette.color(QPalette::Text);
65 if(value.canConvert<QBrush>())
67 QBrush brush = qvariant_cast<QBrush>(value);
68 foreground = brush.color();
71 painter->setPen(foreground);
73 painter->drawText(addressRect, Qt::AlignLeft | Qt::AlignVCenter, address, &boundingRect);
85 foreground = option.palette.color(QPalette::Text);
87 painter->setPen(foreground);
91 amountText = QString(
"[") + amountText + QString(
"]");
94 QRect amount_bounding_rect;
95 painter->drawText(amountRect, Qt::AlignRight | Qt::AlignVCenter, amountText, &amount_bounding_rect);
97 painter->setPen(option.palette.color(QPalette::Text));
98 QRect date_bounding_rect;
99 painter->drawText(amountRect, Qt::AlignLeft | Qt::AlignVCenter,
GUIUtil::dateTimeStr(date), &date_bounding_rect);
102 const int minimum_width = 1.4 * date_bounding_rect.width() + amount_bounding_rect.width();
103 const auto search = m_minimum_width.find(index.row());
104 if (search == m_minimum_width.end() || search->second != minimum_width) {
105 m_minimum_width[index.row()] = minimum_width;
106 Q_EMIT width_changed(index);
112 inline QSize
sizeHint(
const QStyleOptionViewItem &option,
const QModelIndex &index)
const override
114 const auto search = m_minimum_width.find(index.row());
115 const int minimum_text_width = search == m_minimum_width.end() ? 0 : search->second;
130#include <qt/overviewpage.moc>
135 m_platform_style{platformStyle},
142 ui->labelTransactionsStatus->setIcon(icon);
143 ui->labelWalletStatus->setIcon(icon);
149 ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect,
false);
170 if (balances.balance != -1) {
176 const QString status_tip =
m_privacy ? tr(
"Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings->Mask values.") :
"";
177 setStatusTip(status_tip);
178 QStatusTipEvent event(status_tip);
179 QApplication::sendEvent(
this, &event);
198 ui->labelImmature->setVisible(showImmature);
199 ui->labelImmatureText->setVisible(showImmature);
223 filter->setDynamicSortFilter(
true);
224 filter->setSortRole(Qt::EditRole);
225 filter->setShowInactive(
false);
228 ui->listTransactions->setModel(
filter.get());
248 if (e->type() == QEvent::PaletteChange) {
250 ui->labelTransactionsStatus->setIcon(icon);
251 ui->labelWalletStatus->setIcon(icon);
254 QWidget::changeEvent(e);
260 if (
filter &&
ui->listTransactions &&
ui->listTransactions->model() &&
filter.get() ==
ui->listTransactions->model()) {
261 for (
int i = 0; i <
filter->rowCount(); ++i) {
262 ui->listTransactions->setRowHidden(i, i >=
NUM_ITEMS);
271 if (balances.balance != -1) {
278 ui->listTransactions->update();
284 this->
ui->labelAlerts->setVisible(!warnings.isEmpty());
285 this->
ui->labelAlerts->setText(warnings);
290 ui->labelWalletStatus->setVisible(fShow);
291 ui->labelTransactionsStatus->setVisible(fShow);
296 ui->labelBalance->setFont(f);
297 ui->labelUnconfirmed->setFont(f);
298 ui->labelImmature->setFont(f);
299 ui->labelTotal->setFont(f);
static QString formatWithPrivacy(Unit unit, const CAmount &amount, SeparatorStyle separators, bool privacy)
Format as string (with unit) of fixed length to preserve privacy, if it is set.
static QString formatWithUnit(Unit unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as string (with unit)
Model for Bitcoin network client.
QString getStatusBarWarnings() const
Return warnings to be displayed in status bar.
void alertsChanged(const QString &warnings)
OptionsModel * getOptionsModel()
QFont getFontForMoney() const
bool setOption(OptionID option, const QVariant &value, const std::string &suffix="")
void displayUnitChanged(BitcoinUnit unit)
BitcoinUnit getDisplayUnit() const
void fontForMoneyChanged(const QFont &)
Overview ("home") page widget.
void setMonospacedFont(const QFont &)
const PlatformStyle * m_platform_style
void setWalletModel(WalletModel *walletModel)
void updateAlerts(const QString &warnings)
void setClientModel(ClientModel *clientModel)
WalletModel * walletModel
void LimitTransactionRows()
void handleTransactionClicked(const QModelIndex &index)
void changeEvent(QEvent *e) override
void transactionClicked(const QModelIndex &index)
OverviewPage(const PlatformStyle *platformStyle, QWidget *parent=nullptr)
std::unique_ptr< TransactionFilterProxy > filter
void outOfSyncWarningClicked()
void showOutOfSyncWarning(bool fShow)
ClientModel * clientModel
void setBalance(const interfaces::WalletBalances &balances)
TxViewDelegate * txdelegate
void setPrivacy(bool privacy)
Filter the transaction list according to pre-specified rules.
@ DateRole
Date and time this transaction was created.
@ RawDecorationRole
Unprocessed icon.
@ AmountRole
Net amount of transaction.
@ ConfirmedRole
Is transaction confirmed?
TxViewDelegate(const PlatformStyle *_platformStyle, QObject *parent=nullptr)
std::map< int, int > m_minimum_width
void width_changed(const QModelIndex &index) const
An intermediate signal for emitting from the paint() const member function.
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
const PlatformStyle * platformStyle
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Interface to Bitcoin wallet from Qt view code.
TransactionTableModel * getTransactionTableModel() const
OptionsModel * getOptionsModel() const
void balanceChanged(const interfaces::WalletBalances &balances)
interfaces::WalletBalances getCachedBalance() const
#define COLOR_UNCONFIRMED
QString dateTimeStr(const QDateTime &date)
Collection of wallet balances.
CAmount unconfirmed_balance