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;
123 void width_changed(
const QModelIndex& index)
const;
130 #include <qt/overviewpage.moc> 135 m_platform_style{platformStyle},
141 QIcon icon = m_platform_style->
SingleColorIcon(QStringLiteral(
":/icons/warning"));
142 ui->labelTransactionsStatus->setIcon(icon);
143 ui->labelWalletStatus->setIcon(icon);
146 ui->listTransactions->setItemDelegate(txdelegate);
149 ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect,
false);
154 showOutOfSyncWarning(
true);
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);
OptionsModel * getOptionsModel() const
void setWalletModel(WalletModel *walletModel)
void updateAlerts(const QString &warnings)
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.
void handleTransactionClicked(const QModelIndex &index)
void setPrivacy(bool privacy)
std::unique_ptr< TransactionFilterProxy > filter
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
interfaces::WalletBalances getCachedBalance() const
TransactionTableModel * getTransactionTableModel() const
QString dateTimeStr(const QDateTime &date)
TxViewDelegate(const PlatformStyle *_platformStyle, QObject *parent=nullptr)
BitcoinUnit getDisplayUnit() const
OptionsModel * getOptionsModel()
TxViewDelegate * txdelegate
WalletModel * walletModel
void changeEvent(QEvent *e) override
void outOfSyncWarningClicked()
QString getStatusBarWarnings() const
Return warnings to be displayed in status bar.
void alertsChanged(const QString &warnings)
static QString formatWithUnit(Unit unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=SeparatorStyle::STANDARD)
Format as string (with unit)
void LimitTransactionRows()
bool setOption(OptionID option, const QVariant &value, const std::string &suffix="")
void setMonospacedFont(const QFont &)
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.
void displayUnitChanged(BitcoinUnit unit)
Collection of wallet balances.
Is transaction confirmed?
Date and time this transaction was created.
#define COLOR_UNCONFIRMED
Model for Bitcoin network client.
ClientModel * clientModel
void transactionClicked(const QModelIndex &index)
const PlatformStyle * platformStyle
void showOutOfSyncWarning(bool fShow)
const PlatformStyle * m_platform_style
CAmount unconfirmed_balance
Net amount of transaction.
Filter the transaction list according to pre-specified rules.
Interface to Bitcoin wallet from Qt view code.
QFont getFontForMoney() const
void setClientModel(ClientModel *clientModel)
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setBalance(const interfaces::WalletBalances &balances)
OverviewPage(const PlatformStyle *platformStyle, QWidget *parent=nullptr)
void fontForMoneyChanged(const QFont &)
Overview ("home") page widget.
void balanceChanged(const interfaces::WalletBalances &balances)