]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
Disable various tabs when websocket is disabled
authortobtoht <thotbot@protonmail.com>
Tue, 15 Mar 2022 12:36:20 +0000 (13:36 +0100)
committertobtoht <thotbot@protonmail.com>
Tue, 15 Mar 2022 12:36:20 +0000 (13:36 +0100)
src/MainWindow.cpp
src/MainWindow.h
src/SettingsDialog.cpp
src/SettingsDialog.h
src/WindowManager.cpp
src/WindowManager.h
src/widgets/NodeWidget.cpp
src/widgets/NodeWidget.h
src/widgets/XMRigWidget.cpp
src/widgets/XMRigWidget.h

index ab75aecf995471e535a2cd283b66f6c655726861..f509cc77add2cd24573257936f19d7768fa5a622 100644 (file)
@@ -68,6 +68,9 @@ MainWindow::MainWindow(WindowManager *windowManager, Wallet *wallet, QWidget *pa
 #endif
     websocketNotifier()->emitCache(); // Get cached data
 
+    connect(m_windowManager, &WindowManager::websocketStatusChanged, this, &MainWindow::onWebsocketStatusChanged);
+    this->onWebsocketStatusChanged(!config()->get(Config::disableWebsocket).toBool());
+
     connect(m_windowManager, &WindowManager::torSettingsChanged, m_ctx.get(), &AppContext::onTorSettingsChanged);
     connect(torManager(), &TorManager::connectionStateChanged, this, &MainWindow::onTorConnectionStateChanged);
     this->onTorConnectionStateChanged(torManager()->torConnected);
@@ -540,6 +543,20 @@ void MainWindow::tryStoreWallet() {
     m_ctx->wallet->store();
 }
 
+void MainWindow::onWebsocketStatusChanged(bool enabled) {
+    ui->actionShow_Home->setVisible(enabled);
+    ui->actionShow_calc->setVisible(enabled);
+    ui->actionShow_Exchange->setVisible(enabled);
+
+    ui->tabWidget->setTabVisible(Tabs::HOME, enabled && config()->get(Config::showTabHome).toBool());
+    ui->tabWidget->setTabVisible(Tabs::CALC, enabled && config()->get(Config::showTabCalc).toBool());
+    ui->tabWidget->setTabVisible(Tabs::EXCHANGES, enabled && config()->get(Config::showTabExchange).toBool());
+
+#ifdef HAS_XMRIG
+    m_xmrig->setDownloadsTabEnabled(enabled);
+#endif
+}
+
 void MainWindow::onSynchronized() {
     this->updateNetStats();
     this->setStatusText("Synchronized");
@@ -828,6 +845,7 @@ void MainWindow::menuSettingsClicked() {
     connect(&settings, &Settings::preferredFiatCurrencyChanged, m_balanceTickerWidget, &BalanceTickerWidget::updateDisplay);
     connect(&settings, &Settings::preferredFiatCurrencyChanged, m_sendWidget, QOverload<>::of(&SendWidget::onPreferredFiatCurrencyChanged));
     connect(&settings, &Settings::skinChanged, this, &MainWindow::skinChanged);
+    connect(&settings, &Settings::websocketStatusChanged, m_windowManager, &WindowManager::onWebsocketStatusChanged);
     settings.exec();
 }
 
index 49c668a77a0a63ab9da7438b21bc1a476104b1aa..a8b3464c4d63e6a619bb5903ecb7ecc6fa67d7cc 100644 (file)
@@ -182,6 +182,7 @@ private slots:
     void onUpdatesAvailable(const QJsonObject &updates);
     void toggleSearchbar(bool enabled);
     void tryStoreWallet();
+    void onWebsocketStatusChanged(bool enabled);
 
 private:
     friend WindowManager;
index c4f244d6fea86d515c406557865f3fdfe40008b7..569f13f690771f37d265e1524e579c7bf7d0b5c0 100644 (file)
@@ -94,14 +94,6 @@ void Settings::setupGeneralTab() {
     // [Balance display]
     ui->comboBox_balanceDisplay->setCurrentIndex(config()->get(Config::balanceDisplay).toInt());
     connect(ui->comboBox_balanceDisplay, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &Settings::comboBox_balanceDisplayChanged);
-
-    // [Offline mode]
-    ui->checkBox_offlineMode->setChecked(config()->get(Config::offlineMode).toBool());
-    connect(ui->checkBox_offlineMode, &QCheckBox::toggled, [this](bool checked){
-        config()->set(Config::offlineMode, checked);
-        m_ctx->wallet->setOffline(checked);
-        this->enableWebsocket(checked);
-    });
 }
 
 void Settings::setupPrivacyTab() {
@@ -129,7 +121,7 @@ void Settings::setupPrivacyTab() {
     ui->checkBox_disableWebsocket->setChecked(config()->get(Config::disableWebsocket).toBool());
     connect(ui->checkBox_disableWebsocket, &QCheckBox::toggled, [this](bool checked){
         config()->set(Config::disableWebsocket, checked);
-        this->enableWebsocket(checked);
+        this->enableWebsocket(!checked);
     });
 
     // [Do not write log files to disk]
@@ -148,6 +140,14 @@ void Settings::setupPrivacyTab() {
     connect(ui->spinBox_inactivityLockTimeout, QOverload<int>::of(&QSpinBox::valueChanged), [](int value){
         config()->set(Config::inactivityLockTimeout, value);
     });
+
+    // [Offline mode]
+    ui->checkBox_offlineMode->setChecked(config()->get(Config::offlineMode).toBool());
+    connect(ui->checkBox_offlineMode, &QCheckBox::toggled, [this](bool checked){
+        config()->set(Config::offlineMode, checked);
+        m_ctx->wallet->setOffline(checked);
+        this->enableWebsocket(!checked);
+    });
 }
 
 void Settings::setupNodeTab() {
@@ -261,6 +261,8 @@ void Settings::enableWebsocket(bool enabled) {
     } else {
         websocketNotifier()->websocketClient.stop();
     }
+    ui->nodeWidget->onWebsocketStatusChanged();
+    emit websocketStatusChanged(enabled);
 }
 
 Settings::~Settings() = default;
\ No newline at end of file
index 2997b284de71a3ba1c4d6726ee34965e69ae9e28..d6342f8d615f9e39f43cc3588dc92c69b05b0e5b 100644 (file)
@@ -28,6 +28,7 @@ signals:
     void skinChanged(QString skinName);
     void blockExplorerChanged(QString blockExplorer);
     void amountPrecisionChanged(int precision);
+    void websocketStatusChanged(bool enabled);
 
 public slots:
     void checkboxExternalLinkWarn();
index a76c130a772236bd100e15a92d5573e6fff3922d..3cede7663724b73248218a3fb250be520dd2a2f1 100644 (file)
@@ -522,6 +522,10 @@ void WindowManager::onTorSettingsChanged() {
     emit torSettingsChanged();
 }
 
+void WindowManager::onWebsocketStatusChanged(bool enabled) {
+    emit websocketStatusChanged(enabled);
+}
+
 void WindowManager::initWS() {
     if (config()->get(Config::offlineMode).toBool()) {
         return;
index d7a0ee2ce4abfc1b80a1c657c4f9c4ce7259e2f4..3eca7f398bd735047f504396a5b836b2d0e03df3 100644 (file)
@@ -32,9 +32,11 @@ public:
 
 signals:
     void torSettingsChanged();
+    void websocketStatusChanged(bool enabled);
 
 public slots:
     void onTorSettingsChanged();
+    void onWebsocketStatusChanged(bool enabled);
     void tryOpenWallet(const QString &path, const QString &password);
 
 private slots:
index 43717863befa747b2c3aadb737d49a9f6683e48c..3b99b7a3f161a54b470a1b72fb5f3accaba66fce 100644 (file)
@@ -47,6 +47,8 @@ NodeWidget::NodeWidget(QWidget *parent)
 
     connect(ui->customView, &QTreeView::doubleClicked, this, &NodeWidget::onContextConnect);
     connect(ui->wsView, &QTreeView::doubleClicked, this, &NodeWidget::onContextConnect);
+
+    this->onWebsocketStatusChanged();
 }
 
 void NodeWidget::onShowWSContextMenu(const QPoint &pos) {
@@ -65,6 +67,13 @@ void NodeWidget::onShowCustomContextMenu(const QPoint &pos) {
     this->showContextMenu(pos, node);
 }
 
+void NodeWidget::onWebsocketStatusChanged() {
+    bool disabled = config()->get(Config::disableWebsocket).toBool() || config()->get(Config::offlineMode).toBool();
+    QString labelText = disabled ? "From cached list" : "From websocket (recommended)";
+    ui->radioButton_websocket->setText(labelText);
+    ui->wsView->setColumnHidden(1, disabled);
+}
+
 void NodeWidget::showContextMenu(const QPoint &pos, const FeatherNode &node) {
     QMenu menu(this);
 
index a851b3105148fc3995d46cd06a8b6d74407891b3..b667cc2e9e3ea0e0447cddc8d1f414b2a641c8ea 100644 (file)
@@ -33,6 +33,7 @@ public slots:
     void onCustomAddClicked();
     void onShowWSContextMenu(const QPoint &pos);
     void onShowCustomContextMenu(const QPoint &pos);
+    void onWebsocketStatusChanged();
 
 private slots:
     void onContextConnect();
index 400f04332708cf1d422cb448d5c0930846c4b1d4..22d9ef1630cd85ed6a71253ad8c116dd0419a76e 100644 (file)
@@ -134,6 +134,10 @@ bool XMRigWidget::isMining() {
     return m_isMining;
 }
 
+void XMRigWidget::setDownloadsTabEnabled(bool enabled) {
+    ui->tabWidget->setTabVisible(2, enabled);
+}
+
 void XMRigWidget::onWalletClosed() {
     this->onStopClicked();
 }
index c04c276bf2fda02a8abd8fc52b5bddc9af707f00..aa69d9d0839049578f0fb1033440838669f68dae 100644 (file)
@@ -26,6 +26,7 @@ public:
     QStandardItemModel *model();
 
     bool isMining();
+    void setDownloadsTabEnabled(bool enabled);
 
 public slots:
     void onWalletClosed();