diff --git a/resources/css/_settingsManager.css b/resources/css/_settingsManager.css index aed2f7c..94f81e9 100644 --- a/resources/css/_settingsManager.css +++ b/resources/css/_settingsManager.css @@ -12,6 +12,13 @@ html, body { position: relative; } +#header { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; +} + .row { display: flex; flex-direction: row; @@ -22,8 +29,39 @@ html, body { height: 40px; } +#save-button { + color: black; + font-weight: bold; + font-size: 14px; + border: 1px solid black; + background: transparent; + border-radius: 2px; + height: 20px; +} + +#save-button:hover { + color: white; + background: black; +} + input { width: 80px; + margin: 5px; +} + +input[type=button] { + width: 65px; + color: blue; + font-weight: bold; + font-size: 14px; + border: 0; + background: transparent; + border-radius: 2px; +} + +input[type=button]:hover { + color: white; + background: blue; } input[type=number]::-webkit-inner-spin-button, diff --git a/resources/js/_settingsManager.js b/resources/js/_settingsManager.js index 00d0d9c..88b3b49 100644 --- a/resources/js/_settingsManager.js +++ b/resources/js/_settingsManager.js @@ -1,3 +1,28 @@ +function onDownloadDirChanged (downloadDir) { + app.downloadDir = downloadDir; +} + +function onSettingsChecked (valid) { + if (!valid) { + alert("Invalid download path"); + app.downloadDir = settingsManager.downloadDir; + return; + } + settingsManager.setKiwixServerPort(app.kiwixServerPort); + app.zoomFactor = (app.zoomFactor < 30) ? 30 : app.zoomFactor; + app.zoomFactor = (app.zoomFactor > 500) ? 500 : app.zoomFactor; + settingsManager.setZoomFactor(app.zoomFactor / 100); + settingsManager.setDownloadDir(app.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 validDownloadDir (dir) { + settingsManager.validDownloadDir(dir); +} + function init() { new QWebChannel(qt.webChannelTransport, function(channel) { settingsManager = channel.objects.settingsManager; @@ -7,24 +32,26 @@ function init() { settingsManager: settingsManager, kiwixServerPort: settingsManager.kiwixServerPort, zoomFactor: Math.floor(settingsManager.zoomFactor * 100), + downloadDir: settingsManager.downloadDir, }, methods: { - setPort : function() { - // regex for valid port - if (/^([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(this.kiwixServerPort)) - { - settingsManager.setKiwixServerPort(this.kiwixServerPort); - } else { - alert("invalid port"); + saveSettings : function() { + if (!validPort(this.kiwixServerPort)) { + alert("Invalid port"); this.kiwixServerPort = settingsManager.kiwixServerPort; + return; } + validDownloadDir(this.downloadDir); }, - 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.settingsChecked.connect(onSettingsChecked) }); } \ No newline at end of file diff --git a/resources/texts/_settingsManager.html b/resources/texts/_settingsManager.html index f6d967c..73d3a40 100644 --- a/resources/texts/_settingsManager.html +++ b/resources/texts/_settingsManager.html @@ -8,14 +8,23 @@