From 635ab32ea60b5f68448102c91e44d40cf5e95e62 Mon Sep 17 00:00:00 2001 From: gg Date: Mon, 12 Jan 2026 20:25:52 -0500 Subject: [PATCH] m_actionDisconnectNodeOnPause, m_actionDisconnectWebSocketOnPause --- src/MainWindow.cpp | 35 ++++++++++++++++++++++++++++++++++- src/MainWindow.h | 2 ++ src/utils/config.cpp | 2 ++ src/utils/config.h | 2 ++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index da6ea32f..6d731679 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -202,6 +202,26 @@ void MainWindow::initStatusBar() { pauseSyncAction->setChecked(conf()->get(Config::syncPaused).toBool()); m_statusLabelStatus->addAction(pauseSyncAction); + m_actionDisconnectNodeOnPause = new QAction(tr("Disconnect from Node"), this); + m_actionDisconnectNodeOnPause->setCheckable(true); + m_actionDisconnectNodeOnPause->setChecked(conf()->get(Config::syncPausedAlsoDisconnectNode).toBool()); + m_actionDisconnectNodeOnPause->setEnabled(pauseSyncAction->isChecked()); + m_statusLabelStatus->addAction(m_actionDisconnectNodeOnPause); + + m_actionDisconnectWebSocketOnPause = new QAction(tr("Disconnect from WebSocket"), this); + m_actionDisconnectWebSocketOnPause->setCheckable(true); + m_actionDisconnectWebSocketOnPause->setChecked(conf()->get(Config::syncPausedAlsoDisconnectWebSocket).toBool()); + m_actionDisconnectWebSocketOnPause->setEnabled(pauseSyncAction->isChecked()); + m_statusLabelStatus->addAction(m_actionDisconnectWebSocketOnPause); + + connect(m_actionDisconnectNodeOnPause, &QAction::toggled, this, [](bool checked){ + conf()->set(Config::syncPausedAlsoDisconnectNode, checked); + }); + + connect(m_actionDisconnectWebSocketOnPause, &QAction::toggled, this, [](bool checked){ + conf()->set(Config::syncPausedAlsoDisconnectWebSocket, checked); + }); + QAction *skipSyncAction = new QAction(tr("Skip Sync"), this); m_statusLabelStatus->addAction(skipSyncAction); @@ -220,14 +240,27 @@ void MainWindow::initStatusBar() { connect(pauseSyncAction, &QAction::toggled, this, [this](bool checked) { qInfo() << "Pause Sync toggled. Checked =" << checked; conf()->set(Config::syncPaused, checked); + + m_actionDisconnectNodeOnPause->setEnabled(checked); + m_actionDisconnectWebSocketOnPause->setEnabled(checked); + if (m_wallet) { if (checked) { m_wallet->setSyncPaused(true); - websocketNotifier()->websocketClient->stop(); + + if (m_actionDisconnectNodeOnPause->isChecked()) { + m_nodes->disconnect(); + } + + if (m_actionDisconnectWebSocketOnPause->isChecked()) { + websocketNotifier()->websocketClient->stop(); + } this->setPausedSyncStatus(); } else { + // Ensure we reconnect everything when unpausing m_wallet->setSyncPaused(false); + m_nodes->connectToNode(); websocketNotifier()->websocketClient->restart(); this->setStatusText(tr("Resuming sync...")); } diff --git a/src/MainWindow.h b/src/MainWindow.h index ec78db9d..08d03358 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -235,6 +235,8 @@ private: QPointer m_clearRecentlyOpenAction; QPointer m_updateNetworkInfoAction; + QPointer m_actionDisconnectNodeOnPause; + QPointer m_actionDisconnectWebSocketOnPause; QDateTime m_lastSyncStatusUpdate; diff --git a/src/utils/config.cpp b/src/utils/config.cpp index 01848d4d..71a66c29 100644 --- a/src/utils/config.cpp +++ b/src/utils/config.cpp @@ -80,6 +80,8 @@ static const QHash configStrings = { {Config::disableAutoRefresh, {QS("disableAutoRefresh"), false}}, {Config::offlineMode, {QS("offlineMode"), false}}, {Config::syncPaused, {QS("syncPaused"), false}}, + {Config::syncPausedAlsoDisconnectNode, {QS("syncPausedAlsoDisconnectNode"), false}}, + {Config::syncPausedAlsoDisconnectWebSocket, {QS("syncPausedAlsoDisconnectWebSocket"), false}}, // Transactions {Config::multiBroadcast, {QS("multiBroadcast"), true}}, diff --git a/src/utils/config.h b/src/utils/config.h index beaa02d4..31ab8f60 100644 --- a/src/utils/config.h +++ b/src/utils/config.h @@ -145,6 +145,8 @@ public: // Sync & data saver syncPaused, + syncPausedAlsoDisconnectNode, + syncPausedAlsoDisconnectWebSocket, }; enum PrivacyLevel { -- 2.52.0