Skip to content

Commit

Permalink
Merge #256: Save/restore column sizes of the tables in the Peers tab
Browse files Browse the repository at this point in the history
fb1b1e0 qt: Save/restore column sizes of the tables in the Peers tab (Hennadii Stepanov)

Pull request description:

ACKs for top commit:
  jonatack:
    ACK fb1b1e0 code review, debug-built and tested
  jarolrod:
    ACK fb1b1e0

Tree-SHA512: f93495ecd13e4202aba61b407fffbeec855f5b0c1cc027197c78edddd7d11c87ebdb0fcb1daac242f0407323b31f4e7e0313bd76113a5241e4c868a8829af20a
  • Loading branch information
hebasto committed Jun 5, 2021
2 parents 916f45e + fb1b1e0 commit 21d87bb
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 6 deletions.
27 changes: 22 additions & 5 deletions src/qt/rpcconsole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
ui->splitter->restoreState(settings.value("RPCConsoleWidgetPeersTabSplitterSizes").toByteArray());
}

m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();

constexpr QChar nonbreaking_hyphen(8209);
const std::vector<QString> CONNECTION_TYPE_DOC{
tr("Inbound: initiated by peer"),
Expand Down Expand Up @@ -570,6 +573,9 @@ RPCConsole::~RPCConsole()
settings.setValue("RPCConsoleWidgetPeersTabSplitterSizes", ui->splitter->saveState());
}

settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);

m_node.rpcUnsetTimerInterface(rpcTimerInterface);
delete rpcTimerInterface;
delete ui;
Expand Down Expand Up @@ -658,9 +664,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->peerWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui->peerWidget->setContextMenuPolicy(Qt::CustomContextMenu);
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);

if (!ui->peerWidget->horizontalHeader()->restoreState(m_peer_widget_header_state)) {
ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH);
}
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
ui->peerWidget->setItemDelegateForColumn(PeerTableModel::NetNodeId, new PeerIdViewDelegate(this));

Expand All @@ -683,8 +692,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
ui->banlistWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->banlistWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui->banlistWidget->setContextMenuPolicy(Qt::CustomContextMenu);
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);

if (!ui->banlistWidget->horizontalHeader()->restoreState(m_banlist_widget_header_state)) {
ui->banlistWidget->setColumnWidth(BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
}
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);

// create ban table context menu
Expand Down Expand Up @@ -1190,6 +1202,11 @@ void RPCConsole::showEvent(QShowEvent *event)

void RPCConsole::hideEvent(QHideEvent *event)
{
// It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
// the columns of QTableView child widgets will have zero width at that moment.
m_peer_widget_header_state = ui->peerWidget->horizontalHeader()->saveState();
m_banlist_widget_header_state = ui->banlistWidget->horizontalHeader()->saveState();

QWidget::hideEvent(event);

if (!clientModel || !clientModel->getPeerTableModel())
Expand Down
5 changes: 4 additions & 1 deletion src/qt/rpcconsole.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@

#include <net.h>

#include <QWidget>
#include <QByteArray>
#include <QCompleter>
#include <QThread>
#include <QWidget>

class ClientModel;
class PlatformStyle;
Expand Down Expand Up @@ -167,6 +168,8 @@ public Q_SLOTS:
QThread thread;
WalletModel* m_last_wallet_model{nullptr};
bool m_is_executing{false};
QByteArray m_peer_widget_header_state;
QByteArray m_banlist_widget_header_state;

/** Update UI with latest network info from model. */
void updateNetworkState();
Expand Down

0 comments on commit 21d87bb

Please sign in to comment.