Browse Source

made window size persistent and updated german translation

Malte Veerman 9 years ago
parent
commit
d8f840815c

+ 6 - 4
fancontrol-gui/CMakeLists.txt

@@ -1,12 +1,14 @@
-set(Fancontrol_GUI_SRCS src/main.cpp)
+set(Fancontrol_GUI_SRCS src/main.cpp
+                        src/windowconfig.cpp)
 
 
 set(LIBRARIES fancontrol_gui_lib
 set(LIBRARIES fancontrol_gui_lib
               Qt5::Widgets
               Qt5::Widgets
               KF5::Declarative
               KF5::Declarative
-              KF5::I18n)
+              KF5::I18n
+              KF5::ConfigGui)
               
               
-find_package(Qt5Widgets REQUIRED)
-find_package(KF5Declarative REQUIRED)
+find_package(Qt5 COMPONENTS Widgets REQUIRED)
+find_package(KF5 COMPONENTS Declarative Config REQUIRED)
 
 
 include_directories(${Qt5Widgets_INCLUDE_DIRS})
 include_directories(${Qt5Widgets_INCLUDE_DIRS})
 add_definitions(${Qt5Widgets_DEFINITIONS})
 add_definitions(${Qt5Widgets_DEFINITIONS})

+ 10 - 5
fancontrol-gui/src/main.cpp

@@ -27,6 +27,7 @@
 #include <KCoreAddons/KAboutData>
 #include <KCoreAddons/KAboutData>
 
 
 #include "lib/src/guibase.h"
 #include "lib/src/guibase.h"
+#include "windowconfig.h"
 
 
 
 
 int main(int argc, char *argv[])
 int main(int argc, char *argv[])
@@ -47,21 +48,25 @@ int main(int argc, char *argv[])
     about.addAuthor(i18n("Malte Veerman"), i18n("Main Developer"), "maldela@halloarsch.de");
     about.addAuthor(i18n("Malte Veerman"), i18n("Main Developer"), "maldela@halloarsch.de");
     KAboutData::setApplicationData(about);
     KAboutData::setApplicationData(about);
 
 
-    QQmlApplicationEngine engine;
-
+    QScopedPointer<QQmlApplicationEngine> engine(new QQmlApplicationEngine);
+    QQmlContext *context = engine->rootContext();
+    
     KDeclarative::KDeclarative decl;
     KDeclarative::KDeclarative decl;
-    decl.setDeclarativeEngine(&engine);
+    decl.setDeclarativeEngine(engine.data());
     decl.setupBindings();
     decl.setupBindings();
 
 
     Fancontrol::GUIBase base;
     Fancontrol::GUIBase base;
     base.load();
     base.load();
-    engine.rootContext()->setContextProperty("base", &base);
+    context->setContextProperty("base", &base);
+    
+    WindowConfig *windowConfig = WindowConfig::instance();
+    context->setContextProperty("windowConfig", windowConfig);
 
 
     KPackage::Package package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML");
     KPackage::Package package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML");
     package.setDefaultPackageRoot("kpackage/kcms");
     package.setDefaultPackageRoot("kpackage/kcms");
     package.setPath("kcm_fancontrol");
     package.setPath("kcm_fancontrol");
 
 
-    engine.load(QUrl::fromLocalFile(package.path() + "/contents/ui/Application.qml"));
+    engine->load(QUrl::fromLocalFile(package.path() + "/contents/ui/Application.qml"));
 
 
     return app.exec();
     return app.exec();
 }
 }

+ 2 - 3
lib/src/config.cpp

@@ -1,5 +1,4 @@
 /*
 /*
- * <one line to give the library's name and an idea of what it does.>
  * Copyright 2015  Malte Veerman maldela@halloarsch.de
  * Copyright 2015  Malte Veerman maldela@halloarsch.de
  *
  *
  * This program is free software; you can redistribute it and/or
  * This program is free software; you can redistribute it and/or
@@ -24,7 +23,9 @@
 #include "config.h"
 #include "config.h"
 
 
 
 
+#ifndef CONFIG_NAME
 #define CONFIG_NAME "fancontrol-gui"
 #define CONFIG_NAME "fancontrol-gui"
+#endif
 
 
 #ifndef STANDARD_CONFIG_FILE
 #ifndef STANDARD_CONFIG_FILE
 #define STANDARD_CONFIG_FILE "/etc/fancontrol"
 #define STANDARD_CONFIG_FILE "/etc/fancontrol"
@@ -60,5 +61,3 @@ Config* Config::instance()
 }
 }
 
 
 }
 }
-
-// #include "config.moc"

+ 0 - 1
lib/src/config.h

@@ -1,5 +1,4 @@
 /*
 /*
- * <one line to give the library's name and an idea of what it does.>
  * Copyright 2015  Malte Veerman maldela@halloarsch.de
  * Copyright 2015  Malte Veerman maldela@halloarsch.de
  *
  *
  * This program is free software; you can redistribute it and/or
  * This program is free software; you can redistribute it and/or

+ 7 - 4
lib/src/guibase.h

@@ -87,15 +87,18 @@ public:
     void setServiceName(const QString &name);
     void setServiceName(const QString &name);
     void setConfigUrl(const QUrl &url);
     void setConfigUrl(const QUrl &url);
     void setUnit(int unit) { if (unit != m_unit) { m_unit = unit; emit unitChanged(); m_tempModel->setUnit(unit); } }
     void setUnit(int unit) { if (unit != m_unit) { m_unit = unit; emit unitChanged(); m_tempModel->setUnit(unit); } }
-    void load();
     PwmFanModel *pwmFanModel() const { return m_pwmFanModel; };
     PwmFanModel *pwmFanModel() const { return m_pwmFanModel; };
     TempModel *tempModel() const { return m_tempModel; };
     TempModel *tempModel() const { return m_tempModel; };
-
-
-    Q_INVOKABLE void save(bool saveLoader = false, const QUrl &url = QUrl());
+    
     Q_INVOKABLE bool hasSystemdCommunicator() const { return SYSTEMD_BOOL; }
     Q_INVOKABLE bool hasSystemdCommunicator() const { return SYSTEMD_BOOL; }
 
 
 
 
+public slots:
+    
+    void save(bool saveLoader = false, const QUrl &url = QUrl());
+    void load();
+    
+    
 signals:
 signals:
 
 
     void minTempChanged();
     void minTempChanged();

+ 6 - 1
package/contents/ui/Application.qml

@@ -31,7 +31,12 @@ ApplicationWindow {
     height: 768
     height: 768
     visible: true
     visible: true
 
 
-    onClosing: base.save()
+    onClosing: {
+        base.save();
+        windowConfig.save(window);
+    }
+    
+    Component.onCompleted: windowConfig.restore(window)
 
 
     menuBar: MenuBar {
     menuBar: MenuBar {
         Menu {
         Menu {

+ 8 - 5
package/contents/ui/SettingsTab.qml

@@ -21,7 +21,6 @@
 import QtQuick 2.4
 import QtQuick 2.4
 import QtQuick.Layouts 1.1
 import QtQuick.Layouts 1.1
 import QtQuick.Controls 1.2
 import QtQuick.Controls 1.2
-import QtQml 2.2
 import "../scripts/units.js" as Units
 import "../scripts/units.js" as Units
 
 
 
 
@@ -58,9 +57,13 @@ Item {
                 Layout.minimumWidth: implicitWidth
                 Layout.minimumWidth: implicitWidth
                 Layout.fillWidth: true
                 Layout.fillWidth: true
                 value: !!loader ? loader.interval : 1
                 value: !!loader ? loader.interval : 1
-                suffix: " " + (value > 1 ? i18n("seconds") : i18n("second"))
+                suffix: " " + i18np("second", "seconds", Math.round(value))
                 minimumValue: 1.0
                 minimumValue: 1.0
-                onValueChanged: gui.loader.interval = value
+                onValueChanged: {
+                    if (!!loader) {
+                        loader.interval = value;
+                    }
+                }
             }
             }
         }
         }
         RowLayout {
         RowLayout {
@@ -116,7 +119,7 @@ Item {
             }
             }
         }
         }
         Loader {
         Loader {
-            active: systemdCom
+            active: !!systemdCom
             sourceComponent: RowLayout {
             sourceComponent: RowLayout {
                 width: column.width
                 width: column.width
 
 
@@ -141,7 +144,7 @@ Item {
             }
             }
         }
         }
         Loader {
         Loader {
-            active: systemdCom
+            active: !!systemdCom
             sourceComponent: RowLayout {
             sourceComponent: RowLayout {
                 width: column.width
                 width: column.width
 
 

+ 68 - 50
po/de/kcm_fancontrol.po

@@ -1,13 +1,13 @@
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 # This file is distributed under the same license as the PACKAGE package.
 #
 #
-# Malte Veerman <maldela@halloarsch.de>, 2015.
+# Malte Veerman <maldela@halloarsch.de>, 2015, 2016.
 msgid ""
 msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: fancontrol-gui\n"
 "Project-Id-Version: fancontrol-gui\n"
 "Report-Msgid-Bugs-To: http://github.com/maldela/fancontrol-gui\n"
 "Report-Msgid-Bugs-To: http://github.com/maldela/fancontrol-gui\n"
-"POT-Creation-Date: 2015-12-20 14:50+0100\n"
-"PO-Revision-Date: 2015-12-20 14:53+0100\n"
+"POT-Creation-Date: 2016-01-03 15:44+0100\n"
+"PO-Revision-Date: 2016-01-03 15:45+0100\n"
 "Last-Translator: Malte Veerman <maldela@halloarsch.de>\n"
 "Last-Translator: Malte Veerman <maldela@halloarsch.de>\n"
 "Language-Team: German <kde-i18n-de@kde.org>\n"
 "Language-Team: German <kde-i18n-de@kde.org>\n"
 "Language: de_DE\n"
 "Language: de_DE\n"
@@ -53,7 +53,7 @@ msgstr "%1 ist nicht lesbar!"
 msgid "%1 does not exist!"
 msgid "%1 does not exist!"
 msgstr "%1 existiert nicht!"
 msgstr "%1 existiert nicht!"
 
 
-#: lib/src/loader.cpp:241 lib/src/loader.cpp:470
+#: lib/src/loader.cpp:241 lib/src/loader.cpp:475
 msgid "%1 is not a local file!"
 msgid "%1 is not a local file!"
 msgstr "%1 ist keine lokale Datei!"
 msgstr "%1 ist keine lokale Datei!"
 
 
@@ -77,6 +77,14 @@ msgstr "%1 konnte nicht verstanden werden"
 msgid "Invalid config file!"
 msgid "Invalid config file!"
 msgstr "Ungültige Konfigurationsdatei!"
 msgstr "Ungültige Konfigurationsdatei!"
 
 
+#: lib/src/loader.cpp:446
+msgid ""
+"Unrecognized line in config:\n"
+"%1"
+msgstr ""
+"Unbekannte Zeile in Konfiguration:\n"
+"%1"
+
 #: lib/src/pwmfan.cpp:206
 #: lib/src/pwmfan.cpp:206
 msgid "Could not set pwm: "
 msgid "Could not set pwm: "
 msgstr "Konnte pwm nicht ändern:"
 msgstr "Konnte pwm nicht ändern:"
@@ -89,58 +97,66 @@ msgstr "Konnte pwm Modus nicht ändern:"
 msgid "Authorization error: "
 msgid "Authorization error: "
 msgstr "Authorisationsfehler:"
 msgstr "Authorisationsfehler:"
 
 
-#: package/contents/ui/Application.qml:36
+#: lib/src/systemdcommunicator.cpp:168
+msgid "Service %1 doesn't exist"
+msgstr "Service %1 existiert nicht!"
+
+#: lib/src/systemdcommunicator.cpp:316
+msgid "Service does not exist"
+msgstr "Service existiert nicht!"
+
+#: package/contents/ui/Application.qml:38
 msgid "File"
 msgid "File"
 msgstr "Datei"
 msgstr "Datei"
 
 
-#: package/contents/ui/Application.qml:40
+#: package/contents/ui/Application.qml:42
 #: package/contents/ui/Application.qml:156
 #: package/contents/ui/Application.qml:156
 msgid "Save configuration file as"
 msgid "Save configuration file as"
 msgstr "Konfigurationsdatei speichern unter..."
 msgstr "Konfigurationsdatei speichern unter..."
 
 
-#: package/contents/ui/Application.qml:45
+#: package/contents/ui/Application.qml:47
 msgid "Exit"
 msgid "Exit"
 msgstr "Schließen"
 msgstr "Schließen"
 
 
-#: package/contents/ui/Application.qml:66
+#: package/contents/ui/Application.qml:68
 msgid "Restart fancontrol"
 msgid "Restart fancontrol"
 msgstr "Fancontrol neustarten"
 msgstr "Fancontrol neustarten"
 
 
-#: package/contents/ui/Application.qml:66
+#: package/contents/ui/Application.qml:68
 msgid "Start fancontrol"
 msgid "Start fancontrol"
 msgstr "Fancontrol starten"
 msgstr "Fancontrol starten"
 
 
-#: package/contents/ui/Application.qml:75
+#: package/contents/ui/Application.qml:77
 msgid "Stop fancontrol"
 msgid "Stop fancontrol"
 msgstr "Fancontrol stoppen"
 msgstr "Fancontrol stoppen"
 
 
-#: package/contents/ui/Application.qml:91
+#: package/contents/ui/Application.qml:93
 msgid "Sensors"
 msgid "Sensors"
 msgstr "Sensoren"
 msgstr "Sensoren"
 
 
-#: package/contents/ui/Application.qml:97
+#: package/contents/ui/Application.qml:99
 msgid "PwmFans"
 msgid "PwmFans"
 msgstr "PwmLüfter"
 msgstr "PwmLüfter"
 
 
-#: package/contents/ui/Application.qml:103
+#: package/contents/ui/Application.qml:105
 msgid "Configfile"
 msgid "Configfile"
 msgstr "Konfigurationsdatei"
 msgstr "Konfigurationsdatei"
 
 
-#: package/contents/ui/Application.qml:110
+#: package/contents/ui/Application.qml:112
 msgid "Settings"
 msgid "Settings"
 msgstr "Einstellungen"
 msgstr "Einstellungen"
 
 
-#: package/contents/ui/Application.qml:127
-#: package/contents/ui/Application.qml:130 package/contents/ui/KCM.qml:260
+#: package/contents/ui/Application.qml:129
+#: package/contents/ui/Application.qml:132 package/contents/ui/KCM.qml:250
 msgid "Load configuration file"
 msgid "Load configuration file"
 msgstr "Konfigurationsdatei öffnen"
 msgstr "Konfigurationsdatei öffnen"
 
 
-#: package/contents/ui/Application.qml:135
-#: package/contents/ui/Application.qml:138
+#: package/contents/ui/Application.qml:137
+#: package/contents/ui/Application.qml:140
 msgid "Save configuration file"
 msgid "Save configuration file"
 msgstr "Konfigurationsdatei speichern"
 msgstr "Konfigurationsdatei speichern"
 
 
-#: package/contents/ui/Application.qml:144 package/contents/ui/KCM.qml:266
+#: package/contents/ui/Application.qml:146 package/contents/ui/KCM.qml:256
 msgid "Please choose a configuration file"
 msgid "Please choose a configuration file"
 msgstr "Konfigurationsdatei auswählen"
 msgstr "Konfigurationsdatei auswählen"
 
 
@@ -148,102 +164,104 @@ msgstr "Konfigurationsdatei auswählen"
 msgid "Error"
 msgid "Error"
 msgstr "Fehler"
 msgstr "Fehler"
 
 
-#: package/contents/ui/KCM.qml:48 package/contents/ui/PwmFansTab.qml:92
+#: package/contents/ui/KCM.qml:50 package/contents/ui/PwmFansTab.qml:83
 msgid "There are no pwm capable fans in your system."
 msgid "There are no pwm capable fans in your system."
 msgstr "Es gibt keine pwm-fähigen Lüfter in ihrem System."
 msgstr "Es gibt keine pwm-fähigen Lüfter in ihrem System."
 
 
-#: package/contents/ui/KCM.qml:55 package/contents/ui/KCM.qml:105
-#: package/contents/ui/PwmFansTab.qml:105
+#: package/contents/ui/KCM.qml:57 package/contents/ui/KCM.qml:100
+#: package/contents/ui/PwmFansTab.qml:96
 msgid "Detect fans"
 msgid "Detect fans"
 msgstr "Finde Lüfter"
 msgstr "Finde Lüfter"
 
 
-#: package/contents/ui/KCM.qml:65
+#: package/contents/ui/KCM.qml:67
 msgid "Control fans manually"
 msgid "Control fans manually"
 msgstr "Lüfter manuell kontrollieren"
 msgstr "Lüfter manuell kontrollieren"
 
 
-#: package/contents/ui/KCM.qml:85 package/contents/ui/PwmFansTab.qml:41
+#: package/contents/ui/KCM.qml:87 package/contents/ui/PwmFansTab.qml:43
 msgid "Fan:"
 msgid "Fan:"
 msgstr "Lüfter:"
 msgstr "Lüfter:"
 
 
-#: package/contents/ui/KCM.qml:143
+#: package/contents/ui/KCM.qml:133
 msgid "Advanced settings"
 msgid "Advanced settings"
 msgstr "Erweiterte Einstellungen"
 msgstr "Erweiterte Einstellungen"
 
 
-#: package/contents/ui/KCM.qml:158 package/contents/ui/SettingsTab.qml:53
+#: package/contents/ui/KCM.qml:148 package/contents/ui/SettingsTab.qml:52
 msgid "Interval:"
 msgid "Interval:"
 msgstr "Intervall:"
 msgstr "Intervall:"
 
 
-#: package/contents/ui/KCM.qml:166 package/contents/ui/SettingsTab.qml:61
+#: package/contents/ui/KCM.qml:156
 msgid "seconds"
 msgid "seconds"
 msgstr "Sekunden"
 msgstr "Sekunden"
 
 
-#: package/contents/ui/KCM.qml:166 package/contents/ui/SettingsTab.qml:61
+#: package/contents/ui/KCM.qml:156 package/contents/ui/SettingsTab.qml:60
 msgid "second"
 msgid "second"
-msgstr "Sekunde"
+msgid_plural "seconds"
+msgstr[0] "Sekunde"
+msgstr[1] "Sekunden"
 
 
-#: package/contents/ui/KCM.qml:177 package/contents/ui/SettingsTab.qml:72
+#: package/contents/ui/KCM.qml:167 package/contents/ui/SettingsTab.qml:75
 msgid "Minimum temperature for fan graphs:"
 msgid "Minimum temperature for fan graphs:"
 msgstr "Minimale Temperatur für Lüftergraphen:"
 msgstr "Minimale Temperatur für Lüftergraphen:"
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "°C"
 msgid "°C"
 msgstr "°C"
 msgstr "°C"
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "K"
 msgid "K"
 msgstr "K"
 msgstr "K"
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "°F"
 msgid "°F"
 msgstr "°F"
 msgstr "°F"
 
 
-#: package/contents/ui/KCM.qml:199 package/contents/ui/SettingsTab.qml:94
+#: package/contents/ui/KCM.qml:189 package/contents/ui/SettingsTab.qml:101
 msgid "Maximum temperature for fan graphs:"
 msgid "Maximum temperature for fan graphs:"
 msgstr "Maximale Temperatur für Lüftergraphen:"
 msgstr "Maximale Temperatur für Lüftergraphen:"
 
 
-#: package/contents/ui/KCM.qml:221 package/contents/ui/SettingsTab.qml:118
+#: package/contents/ui/KCM.qml:211 package/contents/ui/SettingsTab.qml:129
 msgid "Name of the fancontrol systemd service:"
 msgid "Name of the fancontrol systemd service:"
 msgstr "Name des fancontrol systemd services:"
 msgstr "Name des fancontrol systemd services:"
 
 
-#: package/contents/ui/KCM.qml:239
+#: package/contents/ui/KCM.qml:229
 msgid "Path to the fancontrol config file:"
 msgid "Path to the fancontrol config file:"
 msgstr "Pfad der fancontrol Konfigurationsdatei:"
 msgstr "Pfad der fancontrol Konfigurationsdatei:"
 
 
-#: package/contents/ui/PwmFan.qml:338
+#: package/contents/ui/PwmFan.qml:351
 msgid "Controlled by:"
 msgid "Controlled by:"
 msgstr "Kontrolliert von:"
 msgstr "Kontrolliert von:"
 
 
-#: package/contents/ui/PwmFan.qml:365
+#: package/contents/ui/PwmFan.qml:386
 msgid "Turn Fan off if temp < MINTEMP"
 msgid "Turn Fan off if temp < MINTEMP"
 msgstr "Lüfter abschalten, wenn MINTEMP unterschritten"
 msgstr "Lüfter abschalten, wenn MINTEMP unterschritten"
 
 
-#: package/contents/ui/PwmFan.qml:378
+#: package/contents/ui/PwmFan.qml:406
 msgid "Pwm value for fan to start:"
 msgid "Pwm value for fan to start:"
 msgstr "Wert ab dem der Lüfter startet:"
 msgstr "Wert ab dem der Lüfter startet:"
 
 
-#: package/contents/ui/PwmFan.qml:389
+#: package/contents/ui/PwmFan.qml:417
 msgid "%"
 msgid "%"
 msgstr "%"
 msgstr "%"
 
 
-#: package/contents/ui/PwmFan.qml:404
+#: package/contents/ui/PwmFan.qml:436
 msgid "Abort test"
 msgid "Abort test"
 msgstr "Test abbrechen"
 msgstr "Test abbrechen"
 
 
-#: package/contents/ui/PwmFan.qml:404
+#: package/contents/ui/PwmFan.qml:436
 msgid "Test start and stop values"
 msgid "Test start and stop values"
 msgstr "Start und Stopwerte testen"
 msgstr "Start und Stopwerte testen"
 
 
-#: package/contents/ui/SettingsTab.qml:139
+#: package/contents/ui/SettingsTab.qml:154
 msgid "Fancontrol systemd service autostart:"
 msgid "Fancontrol systemd service autostart:"
 msgstr "Fancontrol systemd service Autostart:"
 msgstr "Fancontrol systemd service Autostart:"
 
 
-#: package/contents/ui/StatusPoint.qml:103
+#: package/contents/ui/StatusPoint.qml:96
 msgid "rpm"
 msgid "rpm"
 msgstr "rpm"
 msgstr "rpm"
 
 

+ 65 - 48
po/kcm_fancontrol.pot

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: http://github.com/maldela/fancontrol-gui\n"
 "Report-Msgid-Bugs-To: http://github.com/maldela/fancontrol-gui\n"
-"POT-Creation-Date: 2015-12-20 14:50+0100\n"
+"POT-Creation-Date: 2016-01-03 15:44+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,6 +16,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
 
 #: fancontrol-gui/src/main.cpp:39 package/contents/ui/Application.qml:29
 #: fancontrol-gui/src/main.cpp:39 package/contents/ui/Application.qml:29
 msgid "Fancontrol-GUI"
 msgid "Fancontrol-GUI"
@@ -53,7 +54,7 @@ msgstr ""
 msgid "%1 does not exist!"
 msgid "%1 does not exist!"
 msgstr ""
 msgstr ""
 
 
-#: lib/src/loader.cpp:241 lib/src/loader.cpp:470
+#: lib/src/loader.cpp:241 lib/src/loader.cpp:475
 msgid "%1 is not a local file!"
 msgid "%1 is not a local file!"
 msgstr ""
 msgstr ""
 
 
@@ -75,6 +76,12 @@ msgstr ""
 msgid "Invalid config file!"
 msgid "Invalid config file!"
 msgstr ""
 msgstr ""
 
 
+#: lib/src/loader.cpp:446
+msgid ""
+"Unrecognized line in config:\n"
+"%1"
+msgstr ""
+
 #: lib/src/pwmfan.cpp:206
 #: lib/src/pwmfan.cpp:206
 msgid "Could not set pwm: "
 msgid "Could not set pwm: "
 msgstr ""
 msgstr ""
@@ -87,58 +94,66 @@ msgstr ""
 msgid "Authorization error: "
 msgid "Authorization error: "
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:36
+#: lib/src/systemdcommunicator.cpp:168
+msgid "Service %1 doesn't exist"
+msgstr ""
+
+#: lib/src/systemdcommunicator.cpp:316
+msgid "Service does not exist"
+msgstr ""
+
+#: package/contents/ui/Application.qml:38
 msgid "File"
 msgid "File"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:40
+#: package/contents/ui/Application.qml:42
 #: package/contents/ui/Application.qml:156
 #: package/contents/ui/Application.qml:156
 msgid "Save configuration file as"
 msgid "Save configuration file as"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:45
+#: package/contents/ui/Application.qml:47
 msgid "Exit"
 msgid "Exit"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:66
+#: package/contents/ui/Application.qml:68
 msgid "Restart fancontrol"
 msgid "Restart fancontrol"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:66
+#: package/contents/ui/Application.qml:68
 msgid "Start fancontrol"
 msgid "Start fancontrol"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:75
+#: package/contents/ui/Application.qml:77
 msgid "Stop fancontrol"
 msgid "Stop fancontrol"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:91
+#: package/contents/ui/Application.qml:93
 msgid "Sensors"
 msgid "Sensors"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:97
+#: package/contents/ui/Application.qml:99
 msgid "PwmFans"
 msgid "PwmFans"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:103
+#: package/contents/ui/Application.qml:105
 msgid "Configfile"
 msgid "Configfile"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:110
+#: package/contents/ui/Application.qml:112
 msgid "Settings"
 msgid "Settings"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:127
-#: package/contents/ui/Application.qml:130 package/contents/ui/KCM.qml:260
+#: package/contents/ui/Application.qml:129
+#: package/contents/ui/Application.qml:132 package/contents/ui/KCM.qml:250
 msgid "Load configuration file"
 msgid "Load configuration file"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:135
-#: package/contents/ui/Application.qml:138
+#: package/contents/ui/Application.qml:137
+#: package/contents/ui/Application.qml:140
 msgid "Save configuration file"
 msgid "Save configuration file"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/Application.qml:144 package/contents/ui/KCM.qml:266
+#: package/contents/ui/Application.qml:146 package/contents/ui/KCM.qml:256
 msgid "Please choose a configuration file"
 msgid "Please choose a configuration file"
 msgstr ""
 msgstr ""
 
 
@@ -146,102 +161,104 @@ msgstr ""
 msgid "Error"
 msgid "Error"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:48 package/contents/ui/PwmFansTab.qml:92
+#: package/contents/ui/KCM.qml:50 package/contents/ui/PwmFansTab.qml:83
 msgid "There are no pwm capable fans in your system."
 msgid "There are no pwm capable fans in your system."
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:55 package/contents/ui/KCM.qml:105
-#: package/contents/ui/PwmFansTab.qml:105
+#: package/contents/ui/KCM.qml:57 package/contents/ui/KCM.qml:100
+#: package/contents/ui/PwmFansTab.qml:96
 msgid "Detect fans"
 msgid "Detect fans"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:65
+#: package/contents/ui/KCM.qml:67
 msgid "Control fans manually"
 msgid "Control fans manually"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:85 package/contents/ui/PwmFansTab.qml:41
+#: package/contents/ui/KCM.qml:87 package/contents/ui/PwmFansTab.qml:43
 msgid "Fan:"
 msgid "Fan:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:143
+#: package/contents/ui/KCM.qml:133
 msgid "Advanced settings"
 msgid "Advanced settings"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:158 package/contents/ui/SettingsTab.qml:53
+#: package/contents/ui/KCM.qml:148 package/contents/ui/SettingsTab.qml:52
 msgid "Interval:"
 msgid "Interval:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:166 package/contents/ui/SettingsTab.qml:61
+#: package/contents/ui/KCM.qml:156
 msgid "seconds"
 msgid "seconds"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:166 package/contents/ui/SettingsTab.qml:61
+#: package/contents/ui/KCM.qml:156 package/contents/ui/SettingsTab.qml:60
 msgid "second"
 msgid "second"
-msgstr ""
+msgid_plural "seconds"
+msgstr[0] ""
+msgstr[1] ""
 
 
-#: package/contents/ui/KCM.qml:177 package/contents/ui/SettingsTab.qml:72
+#: package/contents/ui/KCM.qml:167 package/contents/ui/SettingsTab.qml:75
 msgid "Minimum temperature for fan graphs:"
 msgid "Minimum temperature for fan graphs:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "°C"
 msgid "°C"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "K"
 msgid "K"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:189 package/contents/ui/KCM.qml:211
-#: package/contents/ui/SettingsTab.qml:84
-#: package/contents/ui/SettingsTab.qml:106
+#: package/contents/ui/KCM.qml:179 package/contents/ui/KCM.qml:201
+#: package/contents/ui/SettingsTab.qml:87
+#: package/contents/ui/SettingsTab.qml:113
 msgid "°F"
 msgid "°F"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:199 package/contents/ui/SettingsTab.qml:94
+#: package/contents/ui/KCM.qml:189 package/contents/ui/SettingsTab.qml:101
 msgid "Maximum temperature for fan graphs:"
 msgid "Maximum temperature for fan graphs:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:221 package/contents/ui/SettingsTab.qml:118
+#: package/contents/ui/KCM.qml:211 package/contents/ui/SettingsTab.qml:129
 msgid "Name of the fancontrol systemd service:"
 msgid "Name of the fancontrol systemd service:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/KCM.qml:239
+#: package/contents/ui/KCM.qml:229
 msgid "Path to the fancontrol config file:"
 msgid "Path to the fancontrol config file:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:338
+#: package/contents/ui/PwmFan.qml:351
 msgid "Controlled by:"
 msgid "Controlled by:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:365
+#: package/contents/ui/PwmFan.qml:386
 msgid "Turn Fan off if temp < MINTEMP"
 msgid "Turn Fan off if temp < MINTEMP"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:378
+#: package/contents/ui/PwmFan.qml:406
 msgid "Pwm value for fan to start:"
 msgid "Pwm value for fan to start:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:389
+#: package/contents/ui/PwmFan.qml:417
 msgid "%"
 msgid "%"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:404
+#: package/contents/ui/PwmFan.qml:436
 msgid "Abort test"
 msgid "Abort test"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/PwmFan.qml:404
+#: package/contents/ui/PwmFan.qml:436
 msgid "Test start and stop values"
 msgid "Test start and stop values"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/SettingsTab.qml:139
+#: package/contents/ui/SettingsTab.qml:154
 msgid "Fancontrol systemd service autostart:"
 msgid "Fancontrol systemd service autostart:"
 msgstr ""
 msgstr ""
 
 
-#: package/contents/ui/StatusPoint.qml:103
+#: package/contents/ui/StatusPoint.qml:96
 msgid "rpm"
 msgid "rpm"
 msgstr ""
 msgstr ""