From 73ba838685e50466a85109c58783b8df63786945 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Mon, 5 Jan 2015 00:29:52 +0300 Subject: [PATCH] + add de page * rewrite de configuration to use qsettings - remove cppcheck + add notifyrc --- sources/dataengine/dataengine.cppcheck | 6 - sources/dataengine/netctl.conf | 12 +- sources/dataengine/netctl.cpp | 69 ++------- sources/dataengine/netctl.h | 1 - sources/gui/src/gui.cppcheck | 6 - sources/plasmoid-kde4/netctl.cpp | 92 ++++------- sources/plasmoid-kde4/netctl.h | 3 +- sources/plasmoid-kde4/plasmoid.cppcheck | 6 - .../plasmoid/contents/config/config.qml | 6 + .../plasmoid/contents/ui/dataengine.qml | 144 ++++++++++++++++++ sources/plasmoid-kf5/plugin/CMakeLists.txt | 2 + sources/plasmoid-kf5/plugin/netctladds.cpp | 58 +++++++ sources/plasmoid-kf5/plugin/netctladds.h | 4 + ...sma-applet-org.kde.plasma.netctl.notifyrc} | 0 14 files changed, 259 insertions(+), 150 deletions(-) delete mode 100644 sources/dataengine/dataengine.cppcheck delete mode 100644 sources/gui/src/gui.cppcheck delete mode 100644 sources/plasmoid-kde4/plasmoid.cppcheck create mode 100644 sources/plasmoid-kf5/plasmoid/contents/ui/dataengine.qml rename sources/plasmoid-kf5/{plasma_applet_netctl.notifyrc => plugin/plasma-applet-org.kde.plasma.netctl.notifyrc} (100%) diff --git a/sources/dataengine/dataengine.cppcheck b/sources/dataengine/dataengine.cppcheck deleted file mode 100644 index 075652f..0000000 --- a/sources/dataengine/dataengine.cppcheck +++ /dev/null @@ -1,6 +0,0 @@ - - - - qt - - diff --git a/sources/dataengine/netctl.conf b/sources/dataengine/netctl.conf index 40aa930..41b7eaa 100644 --- a/sources/dataengine/netctl.conf +++ b/sources/dataengine/netctl.conf @@ -1,17 +1,9 @@ -# Configuration file for netctl data engine - -## Commands -# command +[Netctl commands] NETCTLCMD=/usr/bin/netctl -# netctl-auto command NETCTLAUTOCMD=/usr/bin/netctl-auto -## External IP -# external IPv4 check command +[External IP] EXTIP4CMD=curl ip4.telize.com -# 'true' - check external IPv4 EXTIP4=false -# external IPv6 check command EXTIP6CMD=curl ip6.telize.com -# 'true' - check external IPv6 EXTIP6=false diff --git a/sources/dataengine/netctl.cpp b/sources/dataengine/netctl.cpp index 0ff6816..1bb1efd 100644 --- a/sources/dataengine/netctl.cpp +++ b/sources/dataengine/netctl.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -87,15 +88,6 @@ void Netctl::readConfiguration() { if (debug) qDebug() << PDEBUG; - // default configuration - QMap rawConfig; - rawConfig[QString("EXTIP4")] = QString("false"); - rawConfig[QString("EXTIP4CMD")] = QString("curl ip4.telize.com"); - rawConfig[QString("EXTIP6")] = QString("false"); - rawConfig[QString("EXTIP6CMD")] = QString("curl ip6.telize.com"); - rawConfig[QString("NETCTLCMD")] = QString("/usr/bin/netctl"); - rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto"); - QString fileName; #ifdef BUILD_KDE4 fileName = KGlobal::dirs()->findResource("config", "netctl.conf"); @@ -103,59 +95,22 @@ void Netctl::readConfiguration() fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString("netctl.conf")); #endif /* BUILD_KDE4 */ if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; - QFile configFile(fileName); - if (!configFile.open(QIODevice::ReadOnly)) { - configuration = updateConfiguration(rawConfig); - return; - } - QString fileStr; - QStringList value; - while (true) { - fileStr = QString(configFile.readLine()).trimmed(); - if ((fileStr.isEmpty()) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar('#')) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar(';')) && (!configFile.atEnd())) continue; - if (fileStr.contains(QChar('='))) { - value.clear(); - for (int i=1; i Netctl::updateConfiguration(const QMap rawConfig) -{ - if (debug) qDebug() << PDEBUG; - - QMap config; - QString key, value; - // remove spaces and copy source map - for (int i=0; i - - - qt - - diff --git a/sources/plasmoid-kde4/netctl.cpp b/sources/plasmoid-kde4/netctl.cpp index a9689d0..ccd340f 100644 --- a/sources/plasmoid-kde4/netctl.cpp +++ b/sources/plasmoid-kde4/netctl.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -150,80 +151,47 @@ QMap Netctl::readDataEngineConfiguration() { if (debug) qDebug() << PDEBUG; - QMap rawConfig; - rawConfig[QString("EXTIP4")] = QString("false"); - rawConfig[QString("EXTIP4CMD")] = QString("curl ip4.telize.com"); - rawConfig[QString("EXTIP6")] = QString("false"); - rawConfig[QString("EXTIP6CMD")] = QString("curl ip6.telize.com"); - rawConfig[QString("NETCTLCMD")] = QString("/usr/bin/netctl"); - rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto"); - - QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf"); + QMap configuration; + QString fileName; + fileName = KGlobal::dirs()->findResource("config", "netctl.conf"); if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; - QFile configFile(fileName); - if (!configFile.open(QIODevice::ReadOnly)) - return updateDataEngineConfiguration(rawConfig); - QString fileStr; - QStringList value; - while (true) { - fileStr = QString(configFile.readLine()).trimmed(); - if ((fileStr.isEmpty()) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar('#')) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar(';')) && (!configFile.atEnd())) continue; - if (fileStr.contains(QChar('='))) { - value.clear(); - for (int i=1; i settings) +void Netctl::writeDataEngineConfiguration(const QMap configuration) { if (debug) qDebug() << PDEBUG; - QMap config = updateDataEngineConfiguration(settings); QString fileName = KGlobal::dirs()->locateLocal("config", "netctl.conf"); - if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; - QFile configFile(fileName); - if (!configFile.open(QIODevice::WriteOnly)) return; - for (int i=0; i Netctl::updateDataEngineConfiguration(const QMap rawConfig) -{ - if (debug) qDebug() << PDEBUG; + settings.beginGroup(QString("External IP")); + settings.setValue(QString("EXTIP4"), configuration[QString("EXTIP4")]); + settings.setValue(QString("EXTIP4CMD"), configuration[QString("EXTIP4CMD")]); + settings.setValue(QString("EXTIP6"), configuration[QString("EXTIP6")]); + settings.setValue(QString("EXTIP6CMD"), configuration[QString("EXTIP6CMD")]); + settings.endGroup(); - QMap config; - QString key, value; - // remove spaces and copy source map - for (int i=0; i - - - qt - - diff --git a/sources/plasmoid-kf5/plasmoid/contents/config/config.qml b/sources/plasmoid-kf5/plasmoid/contents/config/config.qml index 6d931c9..e2efe75 100644 --- a/sources/plasmoid-kf5/plasmoid/contents/config/config.qml +++ b/sources/plasmoid-kf5/plasmoid/contents/config/config.qml @@ -33,6 +33,12 @@ ConfigModel { source: "appearance.qml" } + ConfigCategory { + name: i18n("DataEngine") + icon: "/usr/share/pixmaps/netctl-gui-widget.png" + source: "dataengine.qml" + } + ConfigCategory { name: i18n("About") icon: "help-about" diff --git a/sources/plasmoid-kf5/plasmoid/contents/ui/dataengine.qml b/sources/plasmoid-kf5/plasmoid/contents/ui/dataengine.qml new file mode 100644 index 0000000..54537f1 --- /dev/null +++ b/sources/plasmoid-kf5/plasmoid/contents/ui/dataengine.qml @@ -0,0 +1,144 @@ +/*************************************************************************** + * This file is part of netctl-gui * + * * + * netctl-gui is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * netctl-gui is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with netctl-gui. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Controls 1.0 as QtControls +import QtQuick.Dialogs 1.1 as QtDialogs +import QtQuick.Layouts 1.0 as QtLayouts + +import org.kde.plasma.private.netctl 1.0 + + +Item { + id: dataenginePage + width: childrenRect.width + height: childrenRect.height + + property variant cfg_dataengine: NetctlAdds.readDataEngineConfiguration() + + QtLayouts.ColumnLayout { + QtLayouts.RowLayout { + QtControls.Label { + text: i18n("Path to netctl") + } + QtControls.TextField { + id: netctlPath + QtLayouts.Layout.fillWidth: true + text: cfg_dataengine["NETCTLCMD"] + } + QtControls.Button { + text: i18n("Browse") + onClicked: netctlFileDialog.visible = true + } + + QtDialogs.FileDialog { + id: netctlFileDialog + title: i18n("Select a path") + folder: "/usr/bin" + nameFilters: [ "All files (*)" ] + selectExisting: true + onAccepted: netctlPath.text = netctlFileDialog.fileUrl + } + } + + QtLayouts.RowLayout { + QtControls.Label { + text: i18n("Path to netctl-auto") + } + QtControls.TextField { + id: netctlAutoPath + QtLayouts.Layout.fillWidth: true + text: cfg_dataengine["NETCTLAUTOCMD"] + } + QtControls.Button { + text: i18n("Browse") + onClicked: netctlAutoFileDialog.visible = true + } + + QtDialogs.FileDialog { + id: netctlAutoFileDialog + title: i18n("Select a path") + folder: "/usr/bin" + nameFilters: [ "All files (*)" ] + selectExisting: true + onAccepted: netctlAutoPath.text = netctlAutoFileDialog.fileUrl + } + } + + QtLayouts.RowLayout { + QtControls.CheckBox { + id: extIp4 + text: i18n("Check external IPv4") + checked: cfg_dataengine["EXTIP4"] == "true" + } + QtControls.TextField { + id: extIp4Path + enabled: extIp4.checked + QtLayouts.Layout.fillWidth: true + text: cfg_dataengine["EXTIP4CMD"] + } + QtControls.Button { + enabled: extIp4.checked + text: i18n("Browse") + onClicked: extIp4FileDialog.visible = true + } + + QtDialogs.FileDialog { + id: extIp4FileDialog + title: i18n("Select a path") + folder: "/usr/bin" + nameFilters: [ "All files (*)" ] + selectExisting: true + onAccepted: extIp4Path.text = extIp4FileDialog.fileUrl + } + } + + QtLayouts.RowLayout { + QtControls.CheckBox { + id: extIp6 + text: i18n("Check external IPv6") + checked: cfg_dataengine["EXTIP6"] == "true" + } + QtControls.TextField { + id: extIp6Path + enabled: extIp6.checked + QtLayouts.Layout.fillWidth: true + text: cfg_dataengine["EXTIP6CMD"] + } + QtControls.Button { + enabled: extIp6.checked + text: i18n("Browse") + onClicked: extIp6FileDialog.visible = true + } + + QtDialogs.FileDialog { + id: extIp6FileDialog + title: i18n("Select a path") + folder: "/usr/bin" + nameFilters: [ "All files (*)" ] + selectExisting: true + onAccepted: extIp6Path.text = extIp6FileDialog.fileUrl + } + } + } + + Component.onDestruction: { + cfg_dataengine["EXTIP4"] = extIp4.checked ? "true" : "false" + cfg_dataengine["EXTIP6"] = extIp6.checked ? "true" : "false" + NetctlAdds.writeDataEngineConfiguration(cfg_dataengine) + } +} diff --git a/sources/plasmoid-kf5/plugin/CMakeLists.txt b/sources/plasmoid-kf5/plugin/CMakeLists.txt index bea8154..b2b37fa 100644 --- a/sources/plasmoid-kf5/plugin/CMakeLists.txt +++ b/sources/plasmoid-kf5/plugin/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories (${CMAKE_SOURCE_DIR} ${Kf5_INCLUDE}) file (GLOB SUBPROJECT_SOURCE *.cpp) +file (GLOB SUBPROJECT_NOTIFY *.notifyrc) add_library (${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE}) target_link_libraries (${PLUGIN_NAME} ${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Qml_LIBRARIES} ${I18n_LIBRARIES} ${Plasma_LIBRARIES} @@ -14,3 +15,4 @@ target_link_libraries (${PLUGIN_NAME} ${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} install (TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/netctl) install (FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/netctl) +install (FILES ${SUBPROJECT_NOTIFY} DESTINATION ${KNOTIFYRC_INSTALL_DIR}) diff --git a/sources/plasmoid-kf5/plugin/netctladds.cpp b/sources/plasmoid-kf5/plugin/netctladds.cpp index 70b370a..734e5f1 100644 --- a/sources/plasmoid-kf5/plugin/netctladds.cpp +++ b/sources/plasmoid-kf5/plugin/netctladds.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include @@ -135,6 +137,14 @@ QString NetctlAdds::getInfo(const QString current, const QString status) } +bool NetctlAdds::isDebugEnabled() +{ + if (debug) qDebug() << PDEBUG; + + return debug; +} + + QString NetctlAdds::parsePattern(const QString pattern, const QMap dict) { if (debug) qDebug() << PDEBUG; @@ -293,3 +303,51 @@ void NetctlAdds::switchToProfileSlot(QString profile, const bool useHelper, command.startDetached(commandLine); } } + + +QMap NetctlAdds::readDataEngineConfiguration() +{ + if (debug) qDebug() << PDEBUG; + + QMap configuration; + QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString("netctl.conf")); + + if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; + QSettings settings(fileName, QSettings::IniFormat); + settings.beginGroup(QString("Netctl commands")); + configuration[QString("NETCTLCMD")] = settings.value(QString("NETCTLCMD"), QString("/usr/bin/netctl")); + configuration[QString("NETCTLAUTOCMD")] = settings.value(QString("NETCTLAUTOCMD"), QString("/usr/bin/netctl-auto")); + settings.endGroup(); + settings.beginGroup(QString("External IP")); + configuration[QString("EXTIP4")] = settings.value(QString("EXTIP4"), QString("false")); + configuration[QString("EXTIP4CMD")] = settings.value(QString("EXTIP4CMD"), QString("curl ip4.telize.com")); + configuration[QString("EXTIP6")] = settings.value(QString("EXTIP6"), QString("false")); + configuration[QString("EXTIP6CMD")] = settings.value(QString("EXTIP6CMD"), QString("curl ip6.telize.com")); + settings.endGroup(); + + return configuration; +} + + +void NetctlAdds::writeDataEngineConfiguration(const QMap configuration) +{ + if (debug) qDebug() << PDEBUG; + + QString fileName = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QString("/netctl.conf"); + QSettings settings(fileName, QSettings::IniFormat); + if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << settings.fileName(); + + settings.beginGroup(QString("Netctl commands")); + settings.setValue(QString("NETCTLCMD"), configuration[QString("NETCTLCMD")].toString()); + settings.setValue(QString("NETCTLAUTOCMD"), configuration[QString("NETCTLAUTOCMD")].toString()); + settings.endGroup(); + + settings.beginGroup(QString("External IP")); + settings.setValue(QString("EXTIP4"), configuration[QString("EXTIP4")].toString()); + settings.setValue(QString("EXTIP4CMD"), configuration[QString("EXTIP4CMD")].toString()); + settings.setValue(QString("EXTIP6"), configuration[QString("EXTIP6")].toString()); + settings.setValue(QString("EXTIP6CMD"), configuration[QString("EXTIP6CMD")].toString()); + settings.endGroup(); + + settings.sync(); +} diff --git a/sources/plasmoid-kf5/plugin/netctladds.h b/sources/plasmoid-kf5/plugin/netctladds.h index b960fb8..d0e6083 100644 --- a/sources/plasmoid-kf5/plugin/netctladds.h +++ b/sources/plasmoid-kf5/plugin/netctladds.h @@ -34,6 +34,7 @@ public: Q_INVOKABLE QString getAboutText(const QString type = "header"); Q_INVOKABLE QString getInfo(const QString current, const QString status); + Q_INVOKABLE bool isDebugEnabled(); Q_INVOKABLE QString parsePattern(const QString pattern, const QMap dict); Q_INVOKABLE void runCmd(const QString cmd); Q_INVOKABLE void sendNotification(const QString eventId, const QString message); @@ -60,6 +61,9 @@ public: Q_INVOKABLE void switchToProfileSlot(QString profile, const bool useHelper = true, const QString cmd = QString("/usr/bin/netctl-auto")); + // dataengine + Q_INVOKABLE QMap readDataEngineConfiguration(); + Q_INVOKABLE void writeDataEngineConfiguration(const QMap configuration); private: bool debug = false; diff --git a/sources/plasmoid-kf5/plasma_applet_netctl.notifyrc b/sources/plasmoid-kf5/plugin/plasma-applet-org.kde.plasma.netctl.notifyrc similarity index 100% rename from sources/plasmoid-kf5/plasma_applet_netctl.notifyrc rename to sources/plasmoid-kf5/plugin/plasma-applet-org.kde.plasma.netctl.notifyrc