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{
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;
}

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>
<qresource prefix="/">
<file>texts/_settingsManager.html</file>
<file>css/_settingsManager.css</file>
<file>js/_settingsManager.js</file>
</qresource>
</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)
: 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;

View File

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

View File

@ -8,7 +8,6 @@
#include <QToolTip>
#include <QCursor>
#include <QPainter>
#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<SettingsView*>(mp_stackedWidget->widget(i))) {
if (mp_stackedWidget->widget(i) == KiwixApp::instance()->getSettingsManager()->getView()) {
setCurrentIndex(i);
return;
}