mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-29 18:20:58 +02:00
Merge bitcoin-core/gui#205: Save/restore TransactionView and recentRequestsView tables column sizes
964885d048
qt: Save/restore recentRequestsView table column sizes (Hennadii Stepanov)f5c8093e77
qt: Move recentRequestsView properties settings to constructor (Hennadii Stepanov)9c5f4f2169
qt: Save/restore TransactionView table column sizes (Hennadii Stepanov)788205c3f7
qt: Move transactionView properties settings to constructor (Hennadii Stepanov)ecdbaf71c0
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: ACK964885d048
, tested on macOS 11.1 Qt 5.15.2 Talkless: tACK964885d048
, tested on Debian Sid, saving/restoring and resetting (with `-resetguisettings`) works as expected. Tree-SHA512: c24e41bf4d95bb33dce16e9a0b952ffd0912e95f4d2a1bc5292fcf5a27100e70fea73433c4ff246d05b174fc23a7b6de1790a2e8b990a9089e4deca79a00dedc
This commit is contained in:
@ -19,6 +19,7 @@
|
||||
#include <QCursor>
|
||||
#include <QMessageBox>
|
||||
#include <QScrollBar>
|
||||
#include <QSettings>
|
||||
#include <QTextDocument>
|
||||
|
||||
ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *_platformStyle, QWidget *parent) :
|
||||
@ -62,6 +63,22 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *_platformStyle, QWid
|
||||
connect(copyAmountAction, &QAction::triggered, this, &ReceiveCoinsDialog::copyAmount);
|
||||
|
||||
connect(ui->clearButton, &QPushButton::clicked, this, &ReceiveCoinsDialog::clear);
|
||||
|
||||
QTableView* tableView = ui->recentRequestsView;
|
||||
tableView->verticalHeader()->hide();
|
||||
tableView->setAlternatingRowColors(true);
|
||||
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
tableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
|
||||
|
||||
QSettings settings;
|
||||
if (!tableView->horizontalHeader()->restoreState(settings.value("RecentRequestsViewHeaderState").toByteArray())) {
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH);
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH);
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
|
||||
tableView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
|
||||
tableView->horizontalHeader()->setStretchLastSection(true);
|
||||
}
|
||||
tableView->horizontalHeader()->setSortIndicator(RecentRequestsTableModel::Date, Qt::DescendingOrder);
|
||||
}
|
||||
|
||||
void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
||||
@ -75,18 +92,7 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
||||
updateDisplayUnit();
|
||||
|
||||
QTableView* tableView = ui->recentRequestsView;
|
||||
|
||||
tableView->verticalHeader()->hide();
|
||||
tableView->setModel(_model->getRecentRequestsTableModel());
|
||||
tableView->setAlternatingRowColors(true);
|
||||
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
tableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH);
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH);
|
||||
tableView->setColumnWidth(RecentRequestsTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
|
||||
tableView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
|
||||
tableView->horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
connect(tableView->selectionModel(),
|
||||
&QItemSelectionModel::selectionChanged, this,
|
||||
&ReceiveCoinsDialog::recentRequestsView_selectionChanged);
|
||||
@ -109,6 +115,8 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
||||
|
||||
ReceiveCoinsDialog::~ReceiveCoinsDialog()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue("RecentRequestsViewHeaderState", ui->recentRequestsView->horizontalHeader()->saveState());
|
||||
delete ui;
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <QMenu>
|
||||
#include <QPoint>
|
||||
#include <QScrollBar>
|
||||
#include <QSettings>
|
||||
#include <QTableView>
|
||||
#include <QTimer>
|
||||
#include <QUrl>
|
||||
@ -126,27 +127,40 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
vlayout->setContentsMargins(0,0,0,0);
|
||||
vlayout->setSpacing(0);
|
||||
|
||||
QTableView *view = new QTableView(this);
|
||||
transactionView = new QTableView(this);
|
||||
transactionView->setObjectName("transactionView");
|
||||
vlayout->addLayout(hlayout);
|
||||
vlayout->addWidget(createDateRangeWidget());
|
||||
vlayout->addWidget(view);
|
||||
vlayout->addWidget(transactionView);
|
||||
vlayout->setSpacing(0);
|
||||
int width = view->verticalScrollBar()->sizeHint().width();
|
||||
int width = transactionView->verticalScrollBar()->sizeHint().width();
|
||||
// Cover scroll bar width with spacing
|
||||
if (platformStyle->getUseExtraSpacing()) {
|
||||
hlayout->addSpacing(width+2);
|
||||
} else {
|
||||
hlayout->addSpacing(width);
|
||||
}
|
||||
// Always show scroll bar
|
||||
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
view->setTabKeyNavigation(false);
|
||||
view->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
transactionView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
transactionView->setTabKeyNavigation(false);
|
||||
transactionView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
transactionView->installEventFilter(this);
|
||||
transactionView->setAlternatingRowColors(true);
|
||||
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
transactionView->setSortingEnabled(true);
|
||||
transactionView->verticalHeader()->hide();
|
||||
|
||||
view->installEventFilter(this);
|
||||
|
||||
transactionView = view;
|
||||
transactionView->setObjectName("transactionView");
|
||||
QSettings settings;
|
||||
if (!transactionView->horizontalHeader()->restoreState(settings.value("TransactionViewHeaderState").toByteArray())) {
|
||||
transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
|
||||
transactionView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
|
||||
transactionView->horizontalHeader()->setStretchLastSection(true);
|
||||
}
|
||||
transactionView->horizontalHeader()->setSortIndicator(TransactionTableModel::Date, Qt::DescendingOrder);
|
||||
|
||||
// Actions
|
||||
abandonAction = new QAction(tr("Abandon transaction"), this);
|
||||
@ -183,8 +197,8 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
connect(search_widget, &QLineEdit::textChanged, prefix_typing_delay, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
connect(prefix_typing_delay, &QTimer::timeout, this, &TransactionView::changedSearch);
|
||||
|
||||
connect(view, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
|
||||
connect(view, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
|
||||
connect(transactionView, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
|
||||
connect(transactionView, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
|
||||
|
||||
connect(bumpFeeAction, &QAction::triggered, this, &TransactionView::bumpFee);
|
||||
connect(abandonAction, &QAction::triggered, this, &TransactionView::abandonTx);
|
||||
@ -204,6 +218,12 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
||||
});
|
||||
}
|
||||
|
||||
TransactionView::~TransactionView()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue("TransactionViewHeaderState", transactionView->horizontalHeader()->saveState());
|
||||
}
|
||||
|
||||
void TransactionView::setModel(WalletModel *_model)
|
||||
{
|
||||
this->model = _model;
|
||||
@ -214,24 +234,8 @@ void TransactionView::setModel(WalletModel *_model)
|
||||
transactionProxyModel->setDynamicSortFilter(true);
|
||||
transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
|
||||
transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||
|
||||
transactionProxyModel->setSortRole(Qt::EditRole);
|
||||
|
||||
transactionView->setModel(transactionProxyModel);
|
||||
transactionView->setAlternatingRowColors(true);
|
||||
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
transactionView->horizontalHeader()->setSortIndicator(TransactionTableModel::Date, Qt::DescendingOrder);
|
||||
transactionView->setSortingEnabled(true);
|
||||
transactionView->verticalHeader()->hide();
|
||||
|
||||
transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH);
|
||||
transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH);
|
||||
transactionView->horizontalHeader()->setMinimumSectionSize(MINIMUM_COLUMN_WIDTH);
|
||||
transactionView->horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
if (_model->getOptionsModel())
|
||||
{
|
||||
|
@ -35,6 +35,7 @@ class TransactionView : public QWidget
|
||||
|
||||
public:
|
||||
explicit TransactionView(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
|
||||
~TransactionView();
|
||||
|
||||
void setModel(WalletModel *model);
|
||||
|
||||
|
Reference in New Issue
Block a user