From b2e1dc38b1ef77e79277b80e6b5dd2ddb02e695b Mon Sep 17 00:00:00 2001 From: nonlin-lin-chaos-order-etc-etal Date: Sun, 25 Dec 2022 16:36:27 +0800 Subject: [PATCH] Prevent tunnels.conf save after errors with it. --- src/Saver.h | 2 +- src/SaverImpl.cpp | 8 ++++++-- src/SaverImpl.h | 3 +-- src/mainwindow.cpp | 17 +++++++++++++++++ src/mainwindow.h | 6 ++++++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/Saver.h b/src/Saver.h index bf971fb..44d900a 100644 --- a/src/Saver.h +++ b/src/Saver.h @@ -19,7 +19,7 @@ public: signals: void reloadTunnelsConfigAndUISignal(const QString); - + void showPreventedSaveTunnelsConfMessage(); }; #endif // SAVER_H diff --git a/src/SaverImpl.cpp b/src/SaverImpl.cpp index d0b49c1..5a12c29 100644 --- a/src/SaverImpl.cpp +++ b/src/SaverImpl.cpp @@ -11,7 +11,9 @@ SaverImpl::SaverImpl(MainWindow *mainWindowPtr_, QList* configItems_, std::map* tunnelConfigs_) : configItems(configItems_), tunnelConfigs(tunnelConfigs_), confpath(), tunconfpath(), mainWindowPtr(mainWindowPtr_) -{} +{ + QObject::connect(this, SIGNAL(showPreventedSaveTunnelsConfMessage()), mainWindowPtr, SLOT(showTunnelsPagePreventedMessage())); +} SaverImpl::~SaverImpl() {} @@ -37,7 +39,9 @@ bool SaverImpl::save(bool reloadAfterSave, const FocusEnum focusOn, const std::s } //save tunnels config - { + if (mainWindowPtr->isPreventSaveTunnelsMode()) { + emit showPreventedSaveTunnelsConfMessage(); + }else{ std::stringstream out; for (std::map::iterator it=tunnelConfigs->begin(); it!=tunnelConfigs->end(); ++it) { diff --git a/src/SaverImpl.h b/src/SaverImpl.h index c034078..6f8ab91 100644 --- a/src/SaverImpl.h +++ b/src/SaverImpl.h @@ -14,8 +14,7 @@ class MainWindowItem; class TunnelConfig; -class SaverImpl : public Saver -{ +class SaverImpl : public Saver { public: SaverImpl(MainWindow *mainWindowPtr_, QList* configItems_, std::map* tunnelConfigs_); virtual ~SaverImpl(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 020361d..433630a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include @@ -68,6 +69,7 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren ,tunconfpath() ,tunnelConfigs() ,tunnelsPageUpdateListener(this) + ,preventSaveTunnelsBool(false) ,saverPtr( new SaverImpl(this, &configItems, @@ -778,6 +780,10 @@ void MainWindow::loadAllConfigs(SaverImpl* saverPtr){ void MainWindow::DisableTunnelsPage() { ui->tunnelsScrollAreaWidgetContents->setEnabled(false); + ui->tunnelsScrollArea->setEnabled(false); + ui->addClientTunnelPushButton->setEnabled(false); + ui->addServerTunnelPushButton->setEnabled(false); + preventSaveTunnels(); } void MainWindow::layoutTunnels() { @@ -1135,3 +1141,14 @@ void MainWindow::syncLogLevel (int /*comboBoxIndex*/) { i2p::log::Logger().Reopen (); } +void MainWindow::preventSaveTunnels() { + preventSaveTunnelsBool = true; +} + +bool MainWindow::isPreventSaveTunnelsMode() { + return preventSaveTunnelsBool; +} + +void MainWindow::showTunnelsPagePreventedMessage() { + QMessageBox::critical(this,QObject::tr("Error"),QObject::tr("Not saving tunnels configuration due to previous errors with it.")); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index 525ff63..1522e4c 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -500,6 +500,8 @@ public: Ui::GeneralSettingsContentsForm* uiSettings; void adjustSizesAccordingToWrongLabel(); bool applyTunnelsUiToConfigs(); + void preventSaveTunnels(); + bool isPreventSaveTunnelsMode(); private: int settingsTitleLabelNominalHeight; TextBrowserTweaked1 * textBrowser; @@ -894,9 +896,13 @@ private: //void onLoggingOptionsChange() {} + bool preventSaveTunnelsBool; SaverImpl* saverPtr; void DisableTunnelsPage(); + +public slots: + void showTunnelsPagePreventedMessage(); }; #endif // MAINWINDOW_H