Stored settings view in settings manager

Deleted some helper functions (browseDownloadDir, confirmDownloadDir, resetDownloadDir) from SettingsManager
Deleted unnecessary settingsManager.js and settingsManager.html
Fixed settingsManager.css code factoring issues
This commit is contained in:
Nikhil Tanwar 2021-10-04 20:15:31 +05:30 committed by Emmanuel Engelhart
parent e01473085b
commit 8ba4e8ab85
7 changed files with 20 additions and 160 deletions

View File

@ -1,5 +1,5 @@
QWidget#widget{ QWidget#widget {
max-width:500; max-width: 500;
} }
QLabel, QLabel,
@ -10,30 +10,31 @@ QSpinBox {
padding: 8px; padding: 8px;
} }
QFrame[frameShape="4"] { /*frameShape 4 is HLine */ QFrame[frameShape="4"] {
border:1px solid #eaecf0; /*frameShape 4 is HLine */
min-height:0pt; border: 1px solid #eaecf0;
max-height:1pt; min-height: 0pt;
max-height: 1pt;
} }
QLabel#settingsLabel { QLabel#settingsLabel {
font-size: 32px; font-size: 32px;
line-height: 44px; line-height: 44px;
font-weight: bold; font-weight: bold;
} }
QSpinBox, QLabel#downloadDirPath{ QSpinBox,
QLabel#downloadDirPath {
font: bold 12pt "Cantarell"; font: bold 12pt "Cantarell";
} }
QPushButton { QPushButton {
background-color: white; background-color: white;
color: #3366cc;; color: #3366cc;
padding: 4px; padding: 4px;
font:bold; font: bold;
border-radius: 4px; border-radius: 4px;
} }
QPushButton:hover { QPushButton:hover {
background-color: #3366cc;; background-color: #3366cc;
color: white; color: white;
} }

View File

@ -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);
});
}

View File

@ -1,7 +1,5 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>texts/_settingsManager.html</file>
<file>css/_settingsManager.css</file> <file>css/_settingsManager.css</file>
<file>js/_settingsManager.js</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,33 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<script src="qrc:///js/vue.js"></script>
<script src="qrc:///qtwebchannel/qwebchannel.js"></script>
<script src="qrc:///js/_settingsManager.js"></script>
<script src="qrc:///js/tools.js"></script>
<link rel="stylesheet" type="text/css" href="qrc:///css/_settingsManager.css"/>
</head>
<body onload="init()">
<div id="settings">
<div id="header">
<h1>{{ gt("settings") }}</h1>
</div>
<div class="row">
<label>{{ gt("port-for-local-kiwix-server-setting") }}</label>
<input type="number" min="1" max="65535" v-on:change="setPort()" v-model="kiwixServerPort">
</div>
<div class="row">
<label>{{ gt("zoom-level-setting") }}</label>
<div class="percentage-symbol">
<input type="number" step="10" min="30" max="500" v-on:change="setZoomFactor()" v-model="zoomFactor" >
</div>
</div>
<div class="row">
<label>{{ gt("download-directory-setting") }}</label>
<span id="download_dir"><span>{{ downloadDir }}</span></span>
<input type="button" :value="gt('reset')" v-on:click="resetDownloadDir()">
<input type="button" :value="gt('browse')" v-on:click="browseDownloadDir()">
</div>
</div>
</body></html>

View File

@ -7,19 +7,23 @@
SettingsManager::SettingsManager(QObject *parent) SettingsManager::SettingsManager(QObject *parent)
: QObject(parent), : QObject(parent),
m_settings("Kiwix", "Kiwix-desktop"), m_settings("Kiwix", "Kiwix-desktop"),
m_settingsViewDisplayed(false) m_view(nullptr)
{ {
initSettings(); initSettings();
} }
SettingsView* SettingsManager::getView() SettingsView* SettingsManager::getView()
{ {
if (m_view == nullptr) {
auto view = new SettingsView(); auto view = new SettingsView();
view->init(m_kiwixServerPort, m_zoomFactor * 100, m_downloadDir); view->init(m_kiwixServerPort, m_zoomFactor * 100, m_downloadDir);
connect(view, &SettingsView::serverPortChanged, this, &SettingsManager::setKiwixServerPort); connect(view, &SettingsView::serverPortChanged, this, &SettingsManager::setKiwixServerPort);
connect(view, &SettingsView::downloadDirChanged, this, &SettingsManager::setDownloadDir); connect(view, &SettingsView::downloadDirChanged, this, &SettingsManager::setDownloadDir);
connect(view, &SettingsView::zoomFactorChanged, this, &SettingsManager::setZoom); 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) void SettingsManager::setSettings(const QString &key, const QVariant &value)
@ -78,50 +82,6 @@ bool SettingsManager::setDownloadDir(QString downloadDir)
return true; 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 SettingsManager::getTranslations(const QStringList &keys)
{ {
QStringList translations; QStringList translations;

View File

@ -17,7 +17,6 @@ public:
virtual ~SettingsManager() {}; virtual ~SettingsManager() {};
SettingsView* getView(); SettingsView* getView();
bool isSettingsViewdisplayed() { return m_settingsViewDisplayed; };
void setSettings(const QString &key, const QVariant &value); void setSettings(const QString &key, const QVariant &value);
void deleteSettings(const QString &key); void deleteSettings(const QString &key);
bool settingsExists(const QString &key); bool settingsExists(const QString &key);
@ -32,12 +31,9 @@ public slots:
qreal getZoomFactor() { return m_zoomFactor; }; qreal getZoomFactor() { return m_zoomFactor; };
bool setDownloadDir(QString downloadDir); bool setDownloadDir(QString downloadDir);
QString getDownloadDir() { return m_downloadDir; } QString getDownloadDir() { return m_downloadDir; }
void resetDownloadDir();
void browseDownloadDir();
void setZoom(int factor); void setZoom(int factor);
private: private:
void initSettings(); void initSettings();
bool confirmDialogDownloadDir(const QString& dir);
signals: signals:
void portChanged(int port); void portChanged(int port);
@ -46,7 +42,7 @@ signals:
private: private:
QSettings m_settings; QSettings m_settings;
bool m_settingsViewDisplayed; SettingsView *m_view;
int m_kiwixServerPort; int m_kiwixServerPort;
qreal m_zoomFactor; qreal m_zoomFactor;
QString m_downloadDir; QString m_downloadDir;

View File

@ -8,7 +8,6 @@
#include <QToolTip> #include <QToolTip>
#include <QCursor> #include <QCursor>
#include <QPainter> #include <QPainter>
#define QUITIFNULL(VIEW) if (nullptr==(VIEW)) { return; } #define QUITIFNULL(VIEW) if (nullptr==(VIEW)) { return; }
#define CURRENTIFNULL(VIEW) if(nullptr==VIEW) { VIEW = currentZimView();} #define CURRENTIFNULL(VIEW) if(nullptr==VIEW) { VIEW = currentZimView();}
@ -56,7 +55,7 @@ TabBar::TabBar(QWidget *parent) :
connect(app->getAction(KiwixApp::SettingAction), &QAction::triggered, connect(app->getAction(KiwixApp::SettingAction), &QAction::triggered,
this, [=]() { this, [=]() {
for (int i = 0 ; i < mp_stackedWidget->count(); i++) { for (int i = 0 ; i < mp_stackedWidget->count(); i++) {
if (qobject_cast<SettingsView*>(mp_stackedWidget->widget(i))) { if (mp_stackedWidget->widget(i) == KiwixApp::instance()->getSettingsManager()->getView()) {
setCurrentIndex(i); setCurrentIndex(i);
return; return;
} }