Skip to content

Commit 0e9596c

Browse files
author
MarcoFalke
committed
Merge #205: Save/restore TransactionView and recentRequestsView tables column sizes
964885d qt: Save/restore recentRequestsView table column sizes (Hennadii Stepanov) f5c8093 qt: Move recentRequestsView properties settings to constructor (Hennadii Stepanov) 9c5f4f2 qt: Save/restore TransactionView table column sizes (Hennadii Stepanov) 788205c qt: Move transactionView properties settings to constructor (Hennadii Stepanov) ecdbaf7 qt, refactor: Drop intermediate assignment (Hennadii Stepanov) Pull request description: Save/restore TransactionView and recentRequestsView tables column sizes. Sorting order is not saved/restored intentionally. Based on #204 (the first commit). ACKs for top commit: jarolrod: ACK 964885d, tested on macOS 11.1 Qt 5.15.2 Talkless: tACK 964885d, tested on Debian Sid, saving/restoring and resetting (with `-resetguisettings`) works as expected. Tree-SHA512: c24e41bf4d95bb33dce16e9a0b952ffd0912e95f4d2a1bc5292fcf5a27100e70fea73433c4ff246d05b174fc23a7b6de1790a2e8b990a9089e4deca79a00dedc
2 parents fd725c2 + 964885d commit 0e9596c

File tree

3 files changed

+54
-41
lines changed

3 files changed

+54
-41
lines changed

src/qt/receivecoinsdialog.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <QCursor>
2020
#include <QMessageBox>
2121
#include <QScrollBar>
22+
#include <QSettings>
2223
#include <QTextDocument>
2324

2425
ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *_platformStyle, QWidget *parent) :
@@ -62,6 +63,22 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *_platformStyle, QWid
6263
connect(copyAmountAction, &QAction::triggered, this, &ReceiveCoinsDialog::copyAmount);
6364

6465
connect(ui->clearButton, &QPushButton::clicked, this, &ReceiveCoinsDialog::clear);
66+
67+
QTableView* tableView = ui->recentRequestsView;
68+
tableView->verticalHeader()->hide();
69+
tableView->setAlternatingRowColors(true);
70+
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
71+
tableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
72+
73+
QSettings settings;
74+
if (!tableView->horizontalHeader()->restoreState(settings.value("RecentRequestsViewHeaderState").toByteArray())) {
75+
tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH);
76+
tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH);
77+
tableView->setColumnWidth(RecentRequestsTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
78+
tableView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
79+
tableView->horizontalHeader()->setStretchLastSection(true);
80+
}
81+
tableView->horizontalHeader()->setSortIndicator(RecentRequestsTableModel::Date, Qt::DescendingOrder);
6582
}
6683

6784
void ReceiveCoinsDialog::setModel(WalletModel *_model)
@@ -75,18 +92,7 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
7592
updateDisplayUnit();
7693

7794
QTableView* tableView = ui->recentRequestsView;
78-
79-
tableView->verticalHeader()->hide();
8095
tableView->setModel(_model->getRecentRequestsTableModel());
81-
tableView->setAlternatingRowColors(true);
82-
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
83-
tableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
84-
tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH);
85-
tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH);
86-
tableView->setColumnWidth(RecentRequestsTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
87-
tableView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
88-
tableView->horizontalHeader()->setStretchLastSection(true);
89-
9096
connect(tableView->selectionModel(),
9197
&QItemSelectionModel::selectionChanged, this,
9298
&ReceiveCoinsDialog::recentRequestsView_selectionChanged);
@@ -109,6 +115,8 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
109115

110116
ReceiveCoinsDialog::~ReceiveCoinsDialog()
111117
{
118+
QSettings settings;
119+
settings.setValue("RecentRequestsViewHeaderState", ui->recentRequestsView->horizontalHeader()->saveState());
112120
delete ui;
113121
}
114122

src/qt/transactionview.cpp

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <QMenu>
3232
#include <QPoint>
3333
#include <QScrollBar>
34+
#include <QSettings>
3435
#include <QTableView>
3536
#include <QTimer>
3637
#include <QUrl>
@@ -126,27 +127,40 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
126127
vlayout->setContentsMargins(0,0,0,0);
127128
vlayout->setSpacing(0);
128129

129-
QTableView *view = new QTableView(this);
130+
transactionView = new QTableView(this);
131+
transactionView->setObjectName("transactionView");
130132
vlayout->addLayout(hlayout);
131133
vlayout->addWidget(createDateRangeWidget());
132-
vlayout->addWidget(view);
134+
vlayout->addWidget(transactionView);
133135
vlayout->setSpacing(0);
134-
int width = view->verticalScrollBar()->sizeHint().width();
136+
int width = transactionView->verticalScrollBar()->sizeHint().width();
135137
// Cover scroll bar width with spacing
136138
if (platformStyle->getUseExtraSpacing()) {
137139
hlayout->addSpacing(width+2);
138140
} else {
139141
hlayout->addSpacing(width);
140142
}
141-
// Always show scroll bar
142-
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
143-
view->setTabKeyNavigation(false);
144-
view->setContextMenuPolicy(Qt::CustomContextMenu);
145-
146-
view->installEventFilter(this);
147-
148-
transactionView = view;
149-
transactionView->setObjectName("transactionView");
143+
transactionView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
144+
transactionView->setTabKeyNavigation(false);
145+
transactionView->setContextMenuPolicy(Qt::CustomContextMenu);
146+
transactionView->installEventFilter(this);
147+
transactionView->setAlternatingRowColors(true);
148+
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
149+
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
150+
transactionView->setSortingEnabled(true);
151+
transactionView->verticalHeader()->hide();
152+
153+
QSettings settings;
154+
if (!transactionView->horizontalHeader()->restoreState(settings.value("TransactionViewHeaderState").toByteArray())) {
155+
transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
156+
transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH);
157+
transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH);
158+
transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH);
159+
transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
160+
transactionView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
161+
transactionView->horizontalHeader()->setStretchLastSection(true);
162+
}
163+
transactionView->horizontalHeader()->setSortIndicator(TransactionTableModel::Date, Qt::DescendingOrder);
150164

151165
// Actions
152166
abandonAction = new QAction(tr("Abandon transaction"), this);
@@ -183,8 +197,8 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
183197
connect(search_widget, &QLineEdit::textChanged, prefix_typing_delay, static_cast<void (QTimer::*)()>(&QTimer::start));
184198
connect(prefix_typing_delay, &QTimer::timeout, this, &TransactionView::changedSearch);
185199

186-
connect(view, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
187-
connect(view, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
200+
connect(transactionView, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
201+
connect(transactionView, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
188202

189203
connect(bumpFeeAction, &QAction::triggered, this, &TransactionView::bumpFee);
190204
connect(abandonAction, &QAction::triggered, this, &TransactionView::abandonTx);
@@ -204,6 +218,12 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
204218
});
205219
}
206220

221+
TransactionView::~TransactionView()
222+
{
223+
QSettings settings;
224+
settings.setValue("TransactionViewHeaderState", transactionView->horizontalHeader()->saveState());
225+
}
226+
207227
void TransactionView::setModel(WalletModel *_model)
208228
{
209229
this->model = _model;
@@ -214,24 +234,8 @@ void TransactionView::setModel(WalletModel *_model)
214234
transactionProxyModel->setDynamicSortFilter(true);
215235
transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
216236
transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
217-
218237
transactionProxyModel->setSortRole(Qt::EditRole);
219-
220238
transactionView->setModel(transactionProxyModel);
221-
transactionView->setAlternatingRowColors(true);
222-
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
223-
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
224-
transactionView->horizontalHeader()->setSortIndicator(TransactionTableModel::Date, Qt::DescendingOrder);
225-
transactionView->setSortingEnabled(true);
226-
transactionView->verticalHeader()->hide();
227-
228-
transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
229-
transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH);
230-
transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH);
231-
transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH);
232-
transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
233-
transactionView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
234-
transactionView->horizontalHeader()->setStretchLastSection(true);
235239

236240
if (_model->getOptionsModel())
237241
{

src/qt/transactionview.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class TransactionView : public QWidget
3535

3636
public:
3737
explicit TransactionView(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
38+
~TransactionView();
3839

3940
void setModel(WalletModel *model);
4041

0 commit comments

Comments
 (0)