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+
207227void 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 {
0 commit comments