diff --git a/resources/css/_settingsManager.css b/resources/css/_settingsManager.css index a2231f9..6452da3 100644 --- a/resources/css/_settingsManager.css +++ b/resources/css/_settingsManager.css @@ -1,5 +1,5 @@ -QWidget#widget{ - max-width:500; +QWidget#widget { + max-width: 500; } QLabel, @@ -10,30 +10,31 @@ QSpinBox { padding: 8px; } -QFrame[frameShape="4"] { /*frameShape 4 is HLine */ - border:1px solid #eaecf0; - min-height:0pt; - max-height:1pt; +QFrame[frameShape="4"] { + /*frameShape 4 is HLine */ + border: 1px solid #eaecf0; + min-height: 0pt; + max-height: 1pt; } QLabel#settingsLabel { font-size: 32px; line-height: 44px; font-weight: bold; - } -QSpinBox, QLabel#downloadDirPath{ +QSpinBox, +QLabel#downloadDirPath { font: bold 12pt "Cantarell"; } QPushButton { background-color: white; - color: #3366cc;; + color: #3366cc; padding: 4px; - font:bold; + font: bold; border-radius: 4px; } QPushButton:hover { - background-color: #3366cc;; + background-color: #3366cc; color: white; } diff --git a/resources/js/_settingsManager.js b/resources/js/_settingsManager.js deleted file mode 100644 index 954cdf0..0000000 --- a/resources/js/_settingsManager.js +++ /dev/null @@ -1,61 +0,0 @@ -function onDownloadDirChanged (downloadDir) { - app.downloadDir = downloadDir; -} - -function validPort (port) { - return /^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/.test(port); -} - -function setTranslations(translations) { - app.translations = createDict(TRANSLATION_KEYS, translations); -} - -const TRANSLATION_KEYS = ["settings", - "port-for-local-kiwix-server-setting", - "zoom-level-setting", - "download-directory-setting", - "reset", - "browse", - "invalid-port"]; - -function init() { - new QWebChannel(qt.webChannelTransport, function(channel) { - settingsManager = channel.objects.settingsManager; - app = new Vue({ - el: "#settings", - data: { - settingsManager: settingsManager, - kiwixServerPort: settingsManager.kiwixServerPort, - zoomFactor: Math.floor(settingsManager.zoomFactor * 100), - downloadDir: settingsManager.downloadDir, - translations:{} - }, - methods: { - gt : function(key) { - return this.translations[key]; - }, - setPort : function() { - if (!validPort(this.kiwixServerPort)) { - alert(this.gt("invalid-port")); - this.kiwixServerPort = settingsManager.kiwixServerPort; - return; - } - settingsManager.setKiwixServerPort(this.kiwixServerPort); - }, - setZoomFactor : function() { - this.zoomFactor = (this.zoomFactor < 30) ? 30 : this.zoomFactor; - this.zoomFactor = (this.zoomFactor > 500) ? 500 : this.zoomFactor; - settingsManager.setZoomFactor(this.zoomFactor / 100); - }, - resetDownloadDir : function() { - settingsManager.resetDownloadDir(); - }, - browseDownloadDir : function() { - settingsManager.browseDownloadDir(); - } - } - }); - settingsManager.downloadDirChanged.connect(onDownloadDirChanged) - settingsManager.getTranslations(TRANSLATION_KEYS, setTranslations); - }); -} \ No newline at end of file diff --git a/resources/settingsmanager.qrc b/resources/settingsmanager.qrc index 5d32dec..92722e9 100644 --- a/resources/settingsmanager.qrc +++ b/resources/settingsmanager.qrc @@ -1,7 +1,5 @@ - texts/_settingsManager.html css/_settingsManager.css - js/_settingsManager.js diff --git a/resources/texts/_settingsManager.html b/resources/texts/_settingsManager.html deleted file mode 100644 index 32c0594..0000000 --- a/resources/texts/_settingsManager.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - -
- -
- - -
-
- -
- -
-
-
- - {{ downloadDir }} - - -
-
- - diff --git a/src/settingsmanager.cpp b/src/settingsmanager.cpp index c5256a6..ad9ae78 100644 --- a/src/settingsmanager.cpp +++ b/src/settingsmanager.cpp @@ -7,19 +7,23 @@ SettingsManager::SettingsManager(QObject *parent) : QObject(parent), m_settings("Kiwix", "Kiwix-desktop"), - m_settingsViewDisplayed(false) + m_view(nullptr) { initSettings(); } SettingsView* SettingsManager::getView() { + if (m_view == nullptr) { auto view = new SettingsView(); view->init(m_kiwixServerPort, m_zoomFactor * 100, m_downloadDir); connect(view, &SettingsView::serverPortChanged, this, &SettingsManager::setKiwixServerPort); connect(view, &SettingsView::downloadDirChanged, this, &SettingsManager::setDownloadDir); connect(view, &SettingsView::zoomFactorChanged, this, &SettingsManager::setZoom); - return view; + connect(view, &QObject::destroyed, this, [=]() { m_view = nullptr; }); + m_view = view; + } + return m_view; } void SettingsManager::setSettings(const QString &key, const QVariant &value) @@ -78,50 +82,6 @@ bool SettingsManager::setDownloadDir(QString downloadDir) return true; } -bool SettingsManager::confirmDialogDownloadDir(const QString& dir) -{ - auto text = gt("download-dir-dialog-msg"); - text = text.replace("{{DIRECTORY}}", dir); - QMessageBox msgBox( - QMessageBox::Question, //Icon - gt("download-dir-dialog-title"), //Title - text, //Text - QMessageBox::Ok | QMessageBox::Cancel //Buttons - ); - msgBox.setDefaultButton(QMessageBox::Ok); - - int ret = msgBox.exec(); - return (ret == QMessageBox::Ok); -} - -void SettingsManager::resetDownloadDir() -{ - auto dir = QString::fromStdString(kiwix::getDataDirectory()); - if (dir == m_downloadDir) { - return; - } - if (confirmDialogDownloadDir(dir)) { - setDownloadDir(dir); - emit(downloadDirChanged(dir)); - } -} - -void SettingsManager::browseDownloadDir() -{ - QString dir = QFileDialog::getExistingDirectory(KiwixApp::instance()->getMainWindow(), - gt("browse-directory"), - m_downloadDir, - QFileDialog::ShowDirsOnly); - if (dir == m_downloadDir || dir.isEmpty()) { - return; - } - - if (confirmDialogDownloadDir(dir)) { - setDownloadDir(dir); - emit(downloadDirChanged(dir)); - } -} - QStringList SettingsManager::getTranslations(const QStringList &keys) { QStringList translations; diff --git a/src/settingsmanager.h b/src/settingsmanager.h index 5e95c47..d7a6116 100644 --- a/src/settingsmanager.h +++ b/src/settingsmanager.h @@ -17,7 +17,6 @@ public: virtual ~SettingsManager() {}; SettingsView* getView(); - bool isSettingsViewdisplayed() { return m_settingsViewDisplayed; }; void setSettings(const QString &key, const QVariant &value); void deleteSettings(const QString &key); bool settingsExists(const QString &key); @@ -32,12 +31,9 @@ public slots: qreal getZoomFactor() { return m_zoomFactor; }; bool setDownloadDir(QString downloadDir); QString getDownloadDir() { return m_downloadDir; } - void resetDownloadDir(); - void browseDownloadDir(); void setZoom(int factor); private: void initSettings(); - bool confirmDialogDownloadDir(const QString& dir); signals: void portChanged(int port); @@ -46,7 +42,7 @@ signals: private: QSettings m_settings; - bool m_settingsViewDisplayed; + SettingsView *m_view; int m_kiwixServerPort; qreal m_zoomFactor; QString m_downloadDir; diff --git a/src/tabbar.cpp b/src/tabbar.cpp index 36ecf6d..b387cb9 100644 --- a/src/tabbar.cpp +++ b/src/tabbar.cpp @@ -8,7 +8,6 @@ #include #include #include - #define QUITIFNULL(VIEW) if (nullptr==(VIEW)) { return; } #define CURRENTIFNULL(VIEW) if(nullptr==VIEW) { VIEW = currentZimView();} @@ -56,7 +55,7 @@ TabBar::TabBar(QWidget *parent) : connect(app->getAction(KiwixApp::SettingAction), &QAction::triggered, this, [=]() { for (int i = 0 ; i < mp_stackedWidget->count(); i++) { - if (qobject_cast(mp_stackedWidget->widget(i))) { + if (mp_stackedWidget->widget(i) == KiwixApp::instance()->getSettingsManager()->getView()) { setCurrentIndex(i); return; }