Explorar o código

fixed some rounding and locale errors in settings

Malte Veerman %!s(int64=10) %!d(string=hai) anos
pai
achega
11180dc729

+ 0 - 2
kcm/src/fancontrolkcm.cpp

@@ -54,8 +54,6 @@ FancontrolKCM::FancontrolKCM(QObject *parent, const QVariantList& args)
     setAuthActionName("fancontrol.gui.helper.action");
     setAuthActionName("fancontrol.gui.helper.action");
     
     
     connect(m_base->loader(), &Loader::configFileChanged, [this] () { setNeedsSave(true); });
     connect(m_base->loader(), &Loader::configFileChanged, [this] () { setNeedsSave(true); });
-    connect(m_base, &GUIBase::configChanged, this, &FancontrolKCM::emitConfigChanged);
-    connect(m_base, &GUIBase::unitChanged, this, &FancontrolKCM::emitUnitChanged);
     
     
     qmlRegisterType<GUIBase>();
     qmlRegisterType<GUIBase>();
 }
 }

+ 0 - 20
kcm/src/fancontrolkcm.h

@@ -37,11 +37,6 @@ class FancontrolKCM : public ConfigModule
     Q_PROPERTY(bool manualControl READ manualControl WRITE setManualControl NOTIFY manualControlChanged)
     Q_PROPERTY(bool manualControl READ manualControl WRITE setManualControl NOTIFY manualControlChanged)
     Q_PROPERTY(Loader* loader READ loader CONSTANT)
     Q_PROPERTY(Loader* loader READ loader CONSTANT)
     Q_PROPERTY(SystemdCommunicator* systemdCom READ systemdCommunicator CONSTANT)
     Q_PROPERTY(SystemdCommunicator* systemdCom READ systemdCommunicator CONSTANT)
-    Q_PROPERTY(qreal minTemp READ minTemp WRITE setMinTemp NOTIFY configChanged)
-    Q_PROPERTY(qreal maxTemp READ maxTemp WRITE setMaxTemp NOTIFY configChanged)
-    Q_PROPERTY(int unit READ unit WRITE setUnit NOTIFY unitChanged)
-    Q_PROPERTY(QString serviceName READ serviceName WRITE setServiceName NOTIFY configChanged)
-    Q_PROPERTY(int interval READ interval WRITE setInterval NOTIFY configChanged)
     
     
 public:
 public:
     
     
@@ -54,16 +49,6 @@ public:
     //wrap base
     //wrap base
     Loader *loader() const { return m_base->loader(); }
     Loader *loader() const { return m_base->loader(); }
     SystemdCommunicator *systemdCommunicator() const { return m_base->systemdCommunicator(); }
     SystemdCommunicator *systemdCommunicator() const { return m_base->systemdCommunicator(); }
-    qreal minTemp() const { return m_base->minTemp(); }
-    qreal maxTemp() const { return m_base->maxTemp(); }
-    int unit() const { return m_base->unit(); }
-    QString serviceName() const { return m_base->serviceName(); }
-    int interval() const { return m_base->interval(); }
-    void setMinTemp(int temp) { m_base->setMinTemp(temp); }
-    void setMaxTemp(int temp) { m_base->setMaxTemp(temp); }
-    void setUnit(int unit) { m_base->setUnit(unit); }
-    void setServiceName(const QString &name) { m_base->setServiceName(name); }
-    void setInterval(int interval) { m_base->setInterval(interval); }
     
     
     
     
 public slots:
 public slots:
@@ -76,15 +61,10 @@ public slots:
 signals:
 signals:
     
     
     void manualControlChanged();
     void manualControlChanged();
-    void configChanged();
-    void unitChanged();
     
     
 
 
 protected:
 protected:
     
     
-    void emitConfigChanged() { emit configChanged(); }
-    void emitUnitChanged() { emit unitChanged(); }
-    
     GUIBase *const m_base;
     GUIBase *const m_base;
     bool m_manualControl;
     bool m_manualControl;
 };
 };

+ 16 - 1
lib/src/guibase.cpp

@@ -79,13 +79,19 @@ int GUIBase::interval() const
 void GUIBase::setMaxTemp(qreal temp)
 void GUIBase::setMaxTemp(qreal temp)
 {
 {
     if (temp != maxTemp())
     if (temp != maxTemp())
+    {
         m_config->findItem("MaxTemp")->setProperty(temp);
         m_config->findItem("MaxTemp")->setProperty(temp);
+        emit maxTempChanged();
+    }
 }
 }
 
 
 void GUIBase::setMinTemp(qreal temp)
 void GUIBase::setMinTemp(qreal temp)
 {
 {
     if (temp != minTemp())
     if (temp != minTemp())
+    {
         m_config->findItem("MinTemp")->setProperty(temp);
         m_config->findItem("MinTemp")->setProperty(temp);
+        emit minTempChanged();
+    }
 }
 }
 
 
 void GUIBase::setServiceName(const QString& name)
 void GUIBase::setServiceName(const QString& name)
@@ -97,7 +103,8 @@ void GUIBase::setServiceName(const QString& name)
 #ifndef NO_SYSTEMD
 #ifndef NO_SYSTEMD
         m_com->setServiceName(name);
         m_com->setServiceName(name);
 #endif
 #endif
-            
+        
+        emit serviceNameChanged();
     }
     }
 }
 }
 
 
@@ -109,4 +116,12 @@ void GUIBase::setInterval(int i)
 void GUIBase::saveConfig()
 void GUIBase::saveConfig()
 {
 {
     m_config->save();
     m_config->save();
+}
+
+void GUIBase::emitConfigChanged()
+{
+    emit minTempChanged();
+    emit maxTempChanged();
+    emit intervalChanged();
+    emit serviceNameChanged();
 }
 }

+ 9 - 6
lib/src/guibase.h

@@ -50,11 +50,11 @@ class FANCONTROL_GUI_LIB_EXPORT GUIBase : public QObject
     Q_PROPERTY(SystemdCommunicator* systemdCom READ systemdCommunicator CONSTANT)
     Q_PROPERTY(SystemdCommunicator* systemdCom READ systemdCommunicator CONSTANT)
 #endif
 #endif
     
     
-    Q_PROPERTY(qreal minTemp READ minTemp WRITE setMinTemp NOTIFY configChanged)
-    Q_PROPERTY(qreal maxTemp READ maxTemp WRITE setMaxTemp NOTIFY configChanged)
+    Q_PROPERTY(qreal minTemp READ minTemp WRITE setMinTemp NOTIFY minTempChanged)
+    Q_PROPERTY(qreal maxTemp READ maxTemp WRITE setMaxTemp NOTIFY maxTempChanged)
     Q_PROPERTY(int unit READ unit WRITE setUnit NOTIFY unitChanged)
     Q_PROPERTY(int unit READ unit WRITE setUnit NOTIFY unitChanged)
-    Q_PROPERTY(QString serviceName READ serviceName WRITE setServiceName NOTIFY configChanged)
-    Q_PROPERTY(int interval READ interval WRITE setInterval NOTIFY configChanged)
+    Q_PROPERTY(QString serviceName READ serviceName WRITE setServiceName NOTIFY serviceNameChanged)
+    Q_PROPERTY(int interval READ interval WRITE setInterval NOTIFY intervalChanged)
 
 
 public:
 public:
     
     
@@ -84,13 +84,16 @@ public:
     
     
 signals:
 signals:
 
 
-    void configChanged();
+    void minTempChanged();
+    void maxTempChanged();
+    void serviceNameChanged();
     void unitChanged();
     void unitChanged();
+    void intervalChanged();
     
     
     
     
 protected:
 protected:
     
     
-    void emitConfigChanged() { emit configChanged(); }
+    void emitConfigChanged();
 
 
     Config *m_config;
     Config *m_config;
 
 

+ 4 - 4
package/contents/scripts/units.js

@@ -19,7 +19,7 @@
 
 
 function round(number, dec) {
 function round(number, dec) {
     if (!dec || dec == 0) return Math.round(number);
     if (!dec || dec == 0) return Math.round(number);
-    return Math.round(number*10*dec) / (10*dec);
+    return Math.round(number*Math.pow(10, dec)) / Math.pow(10, dec);
 }
 }
 
 
 function toCelsius(degrees, currentUnit) {
 function toCelsius(degrees, currentUnit) {
@@ -31,7 +31,7 @@ function toCelsius(degrees, currentUnit) {
 
 
 function fromCelsius(degrees, newUnit) {
 function fromCelsius(degrees, newUnit) {
     var float = parseFloat(degrees);
     var float = parseFloat(degrees);
-    if (newUnit == 1) { return round(float + 273.15); }
-    if (newUnit == 2) { return round(float * 9 / 5 + 32); }
-    return round(float);
+    if (newUnit == 1) { return round(float + 273.15, 2); }
+    if (newUnit == 2) { return round(float * 9 / 5 + 32, 2); }
+    return round(float, 2);
 }
 }

+ 3 - 3
package/contents/ui/KCM.qml

@@ -82,12 +82,12 @@ Item {
             active: enabledBox.checked && !!kcm.loader.allPwmFans[fanCombobox.currentIndex]
             active: enabledBox.checked && !!kcm.loader.allPwmFans[fanCombobox.currentIndex]
             sourceComponent: PwmFan {
             sourceComponent: PwmFan {
                 minimizable: false
                 minimizable: false
-                unit: kcm.unit
+                unit: kcm.base.unit
                 fan: kcm.loader.allPwmFans[fanCombobox.currentIndex]
                 fan: kcm.loader.allPwmFans[fanCombobox.currentIndex]
                 loader: kcm.loader
                 loader: kcm.loader
                 systemdCom: kcm.systemdCom
                 systemdCom: kcm.systemdCom
-                minTemp: kcm.minTemp
-                maxTemp: kcm.maxTemp
+                minTemp: kcm.base.minTemp
+                maxTemp: kcm.base.maxTemp
             }
             }
         }
         }
     }
     }

+ 1 - 0
package/contents/ui/OptionInput.qml

@@ -24,6 +24,7 @@ FocusScope {
     property alias text: value.text
     property alias text: value.text
     property alias font: value.font
     property alias font: value.font
     property alias inputMethodHints: value.inputMethodHints
     property alias inputMethodHints: value.inputMethodHints
+    property alias validator: value.validator
     property alias color: value.color
     property alias color: value.color
     property real margin: 6
     property real margin: 6
 
 

+ 1 - 3
package/contents/ui/PwmFan.qml

@@ -168,8 +168,6 @@ Rectangle {
         property int bottomPadding: fontSize * 2
         property int bottomPadding: fontSize * 2
         property int plotWidth: width - leftPadding - rightPadding
         property int plotWidth: width - leftPadding - rightPadding
         property int plotHeight: height - topPadding - bottomPadding
         property int plotHeight: height - topPadding - bottomPadding
-        property alias minTemp: root.minTemp
-        property alias maxTemp: root.maxTemp
 
 
         id: canvas
         id: canvas
         renderTarget: Canvas.FramebufferObject
         renderTarget: Canvas.FramebufferObject
@@ -328,7 +326,7 @@ Rectangle {
             var convertedMaxTemp = Units.fromCelsius(maxTemp, unit);
             var convertedMaxTemp = Units.fromCelsius(maxTemp, unit);
             var suffix = (unit == 0) ? "°C" : (unit == 1) ? "K" : "°F"
             var suffix = (unit == 0) ? "°C" : (unit == 1) ? "K" : "°F"
             var lastTemp;
             var lastTemp;
-            for (i=convertedMinTemp; i<convertedMaxTemp; i+= 10) {
+            for (var i=convertedMinTemp; i<convertedMaxTemp; i+= 10) {
                 lastTemp = i;
                 lastTemp = i;
                 var x = scaleX(Units.toCelsius(i, unit));
                 var x = scaleX(Units.toCelsius(i, unit));
                 c.fillText(i + suffix, x, topPadding+plotHeight+fontSize/2);
                 c.fillText(i + suffix, x, topPadding+plotHeight+fontSize/2);

+ 25 - 7
package/contents/ui/SettingsTab.qml

@@ -57,8 +57,14 @@ Item {
                 Layout.minimumWidth: implicitWidth
                 Layout.minimumWidth: implicitWidth
                 Layout.fillWidth: true
                 Layout.fillWidth: true
                 inputMethodHints: Qt.ImhDigitsOnly
                 inputMethodHints: Qt.ImhDigitsOnly
+                validator: IntValidator { bottom: 0 }
                 text: Number(gui ? gui.interval : 1).toLocaleString(locale, 'f', 0)
                 text: Number(gui ? gui.interval : 1).toLocaleString(locale, 'f', 0)
-                onTextChanged: if (text && text != "0") gui.interval = parseInt(Number.fromLocaleString(root.locale, text))
+                onTextChanged: {
+                    if (activeFocus && text && root.locale) {
+                        var value = Number.fromLocaleString(root.locale, text);
+                        if (value) gui.interval = value;
+                    }
+                }
             }
             }
         }
         }
         RowLayout {
         RowLayout {
@@ -75,9 +81,15 @@ Item {
                 id: minTempValue
                 id: minTempValue
                 Layout.minimumWidth: implicitWidth
                 Layout.minimumWidth: implicitWidth
                 Layout.fillWidth: true
                 Layout.fillWidth: true
-                inputMethodHints: Qt.ImhDigitsOnly
-                onTextChanged: if (activeFocus) gui.minTemp = Units.toCelsius(Number.fromLocaleString(locale, text), gui.unit)
-                Component.onCompleted: text = Units.fromCelsius(gui.minTemp, gui.unit)
+                inputMethodHints: Qt.ImhFormattedNumbersOnly
+                validator: DoubleValidator {}
+                Component.onCompleted: text = Number(Units.fromCelsius(gui.minTemp, gui.unit)).toLocaleString()
+                onTextChanged: {
+                    if (activeFocus && text && root.locale) {
+                        var value = Units.toCelsius(Number.fromLocaleString(locale, text), gui.unit);
+                        if (value) gui.minTemp = value;
+                    }
+                }
                 
                 
                 Connections {
                 Connections {
                     target: gui
                     target: gui
@@ -99,9 +111,15 @@ Item {
                 id: maxTempValue
                 id: maxTempValue
                 Layout.minimumWidth: implicitWidth
                 Layout.minimumWidth: implicitWidth
                 Layout.fillWidth: true
                 Layout.fillWidth: true
-                inputMethodHints: Qt.ImhDigitsOnly
-                onTextChanged: if (activeFocus) gui.maxTemp = Units.toCelsius(Number.fromLocaleString(locale, text), gui.unit)
-                Component.onCompleted: text = Units.fromCelsius(gui.maxTemp, gui.unit)
+                inputMethodHints: Qt.ImhFormattedNumbersOnly
+                validator: DoubleValidator {}
+                Component.onCompleted: text = Number(Units.fromCelsius(gui.maxTemp, gui.unit)).toLocaleString()
+                onTextChanged: {
+                    if (activeFocus && text && root.locale) {
+                        var value = Units.toCelsius(Number.fromLocaleString(locale, text), gui.unit);
+                        if (value) gui.maxTemp = value;
+                    }
+                }
                 
                 
                 Connections {
                 Connections {
                     target: gui
                     target: gui