mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-30 02:31:05 +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 <QCursor>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
#include <QSettings>
|
||||||
#include <QTextDocument>
|
#include <QTextDocument>
|
||||||
|
|
||||||
ReceiveCoinsDialog::ReceiveCoinsDialog(const PlatformStyle *_platformStyle, QWidget *parent) :
|
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(copyAmountAction, &QAction::triggered, this, &ReceiveCoinsDialog::copyAmount);
|
||||||
|
|
||||||
connect(ui->clearButton, &QPushButton::clicked, this, &ReceiveCoinsDialog::clear);
|
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)
|
void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
||||||
@ -75,18 +92,7 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
|||||||
updateDisplayUnit();
|
updateDisplayUnit();
|
||||||
|
|
||||||
QTableView* tableView = ui->recentRequestsView;
|
QTableView* tableView = ui->recentRequestsView;
|
||||||
|
|
||||||
tableView->verticalHeader()->hide();
|
|
||||||
tableView->setModel(_model->getRecentRequestsTableModel());
|
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(),
|
connect(tableView->selectionModel(),
|
||||||
&QItemSelectionModel::selectionChanged, this,
|
&QItemSelectionModel::selectionChanged, this,
|
||||||
&ReceiveCoinsDialog::recentRequestsView_selectionChanged);
|
&ReceiveCoinsDialog::recentRequestsView_selectionChanged);
|
||||||
@ -109,6 +115,8 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
|
|||||||
|
|
||||||
ReceiveCoinsDialog::~ReceiveCoinsDialog()
|
ReceiveCoinsDialog::~ReceiveCoinsDialog()
|
||||||
{
|
{
|
||||||
|
QSettings settings;
|
||||||
|
settings.setValue("RecentRequestsViewHeaderState", ui->recentRequestsView->horizontalHeader()->saveState());
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
#include <QSettings>
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
@ -126,27 +127,40 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
|
|||||||
vlayout->setContentsMargins(0,0,0,0);
|
vlayout->setContentsMargins(0,0,0,0);
|
||||||
vlayout->setSpacing(0);
|
vlayout->setSpacing(0);
|
||||||
|
|
||||||
QTableView *view = new QTableView(this);
|
transactionView = new QTableView(this);
|
||||||
|
transactionView->setObjectName("transactionView");
|
||||||
vlayout->addLayout(hlayout);
|
vlayout->addLayout(hlayout);
|
||||||
vlayout->addWidget(createDateRangeWidget());
|
vlayout->addWidget(createDateRangeWidget());
|
||||||
vlayout->addWidget(view);
|
vlayout->addWidget(transactionView);
|
||||||
vlayout->setSpacing(0);
|
vlayout->setSpacing(0);
|
||||||
int width = view->verticalScrollBar()->sizeHint().width();
|
int width = transactionView->verticalScrollBar()->sizeHint().width();
|
||||||
// Cover scroll bar width with spacing
|
// Cover scroll bar width with spacing
|
||||||
if (platformStyle->getUseExtraSpacing()) {
|
if (platformStyle->getUseExtraSpacing()) {
|
||||||
hlayout->addSpacing(width+2);
|
hlayout->addSpacing(width+2);
|
||||||
} else {
|
} else {
|
||||||
hlayout->addSpacing(width);
|
hlayout->addSpacing(width);
|
||||||
}
|
}
|
||||||
// Always show scroll bar
|
transactionView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||||
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
transactionView->setTabKeyNavigation(false);
|
||||||
view->setTabKeyNavigation(false);
|
transactionView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
view->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);
|
QSettings settings;
|
||||||
|
if (!transactionView->horizontalHeader()->restoreState(settings.value("TransactionViewHeaderState").toByteArray())) {
|
||||||
transactionView = view;
|
transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH);
|
||||||
transactionView->setObjectName("transactionView");
|
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
|
// Actions
|
||||||
abandonAction = new QAction(tr("Abandon transaction"), this);
|
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(search_widget, &QLineEdit::textChanged, prefix_typing_delay, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||||
connect(prefix_typing_delay, &QTimer::timeout, this, &TransactionView::changedSearch);
|
connect(prefix_typing_delay, &QTimer::timeout, this, &TransactionView::changedSearch);
|
||||||
|
|
||||||
connect(view, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
|
connect(transactionView, &QTableView::doubleClicked, this, &TransactionView::doubleClicked);
|
||||||
connect(view, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
|
connect(transactionView, &QTableView::customContextMenuRequested, this, &TransactionView::contextualMenu);
|
||||||
|
|
||||||
connect(bumpFeeAction, &QAction::triggered, this, &TransactionView::bumpFee);
|
connect(bumpFeeAction, &QAction::triggered, this, &TransactionView::bumpFee);
|
||||||
connect(abandonAction, &QAction::triggered, this, &TransactionView::abandonTx);
|
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)
|
void TransactionView::setModel(WalletModel *_model)
|
||||||
{
|
{
|
||||||
this->model = _model;
|
this->model = _model;
|
||||||
@ -214,24 +234,8 @@ void TransactionView::setModel(WalletModel *_model)
|
|||||||
transactionProxyModel->setDynamicSortFilter(true);
|
transactionProxyModel->setDynamicSortFilter(true);
|
||||||
transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
|
transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
|
||||||
transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||||
|
|
||||||
transactionProxyModel->setSortRole(Qt::EditRole);
|
transactionProxyModel->setSortRole(Qt::EditRole);
|
||||||
|
|
||||||
transactionView->setModel(transactionProxyModel);
|
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())
|
if (_model->getOptionsModel())
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,7 @@ class TransactionView : public QWidget
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TransactionView(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
|
explicit TransactionView(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
|
||||||
|
~TransactionView();
|
||||||
|
|
||||||
void setModel(WalletModel *model);
|
void setModel(WalletModel *model);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user