2020#include < QAbstractItemDelegate>
2121#include < QPainter>
2222
23- #define DECORATION_SIZE 64
23+ #define DECORATION_SIZE 48
2424
2525class TxViewDelegate : public QAbstractItemDelegate
2626{
2727 Q_OBJECT
2828public:
29- TxViewDelegate (QObject *parent=nullptr ): QAbstractItemDelegate(parent), unit(BitcoinUnits::BTC)
29+ TxViewDelegate (QObject *parent=nullptr , int scaledDecorationSize = DECORATION_SIZE):
30+ QAbstractItemDelegate (parent), unit(BitcoinUnits::BTC), scaledDecorationSize(scaledDecorationSize)
3031 {
3132
3233 }
@@ -38,8 +39,8 @@ class TxViewDelegate : public QAbstractItemDelegate
3839
3940 QIcon icon = qvariant_cast<QIcon>(index.data (Qt::DecorationRole));
4041 QRect mainRect = option.rect ;
41- QRect decorationRect (mainRect.topLeft (), QSize (DECORATION_SIZE, DECORATION_SIZE ));
42- int xspace = DECORATION_SIZE + 8 ;
42+ QRect decorationRect (mainRect.topLeft (), QSize (scaledDecorationSize, scaledDecorationSize ));
43+ int xspace = scaledDecorationSize + 8 ;
4344 int ypad = 6 ;
4445 int halfheight = (mainRect.height () - 2 *ypad)/2 ;
4546 QRect amountRect (mainRect.left () + xspace, mainRect.top ()+ypad, mainRect.width () - xspace, halfheight);
@@ -89,11 +90,15 @@ class TxViewDelegate : public QAbstractItemDelegate
8990
9091 inline QSize sizeHint (const QStyleOptionViewItem &option, const QModelIndex &index) const
9192 {
92- return QSize (DECORATION_SIZE, DECORATION_SIZE );
93+ return QSize (scaledDecorationSize, scaledDecorationSize );
9394 }
9495
9596 int unit;
9697
98+ private:
99+
100+ int scaledDecorationSize;
101+
97102};
98103#include " overviewpage.moc"
99104
@@ -105,14 +110,23 @@ OverviewPage::OverviewPage(QWidget *parent) :
105110 currentBalance(-1 ),
106111 currentStake(0 ),
107112 currentUnconfirmedBalance(-1 ),
108- currentImmatureBalance(-1 ),
109- txdelegate(new TxViewDelegate(this ))
113+ currentImmatureBalance(-1 )
110114{
115+ scaledDecorationSize = DECORATION_SIZE * this ->logicalDpiX () / 96 ;
116+
117+ txdelegate = new TxViewDelegate (this , scaledDecorationSize);
118+
111119 ui->setupUi (this );
112120
121+ // Override .ui default spacing to deal with various dpi displays.
122+ int verticalSpacing = 7 * this ->logicalDpiX () / 96 ;
123+ ui->formLayout ->setVerticalSpacing (verticalSpacing);
124+ ui->formLayout_2 ->setVerticalSpacing (verticalSpacing);
125+ ui->researcherFormLayout ->setVerticalSpacing (verticalSpacing);
126+
113127 // Recent transactions
114128 ui->listTransactions ->setItemDelegate (txdelegate);
115- ui->listTransactions ->setIconSize (QSize (DECORATION_SIZE, DECORATION_SIZE ));
129+ ui->listTransactions ->setIconSize (QSize (scaledDecorationSize, scaledDecorationSize ));
116130 ui->listTransactions ->setAttribute (Qt::WA_MacShowFocusRect, false );
117131 updateTransactions ();
118132
@@ -158,7 +172,7 @@ int OverviewPage::getNumTransactionsForView()
158172{
159173 // Compute the maximum number of transactions the transaction list widget
160174 // can hold without overflowing.
161- const size_t itemHeight = DECORATION_SIZE + ui->listTransactions ->spacing ();
175+ const size_t itemHeight = scaledDecorationSize + ui->listTransactions ->spacing ();
162176 const size_t contentsHeight = ui->listTransactions ->height ();
163177 const int numItems = contentsHeight / itemHeight;
164178
0 commit comments