From 0d227e93e3f7491a6ac27f80d8b67ce20fe326a9 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Thu, 30 Jan 2014 20:44:49 +0400 Subject: [PATCH] alfa version of de: IT BUILDS! --- .gitignore | 5 + LICENSE | 6 +- sources/CMakeLists.txt | 2 + sources/dataengine/netctl.conf | 18 ++ sources/dataengine/netctl.cpp | 221 ++++++++++++++++++ sources/dataengine/netctl.h | 49 ++++ .../dataengine/plasma-engine-netctl.desktop | 20 ++ sources/icons/network-idle-128-128.png | Bin 0 -> 11867 bytes sources/icons/network-idle-64x64.png | Bin 0 -> 4709 bytes sources/icons/network-offline-64x64.png | Bin 0 -> 5352 bytes sources/netctl-gui.png | Bin 0 -> 11867 bytes sources/plasmoid/CMakeLists.txt | 2 - 12 files changed, 318 insertions(+), 5 deletions(-) create mode 100644 sources/dataengine/netctl.conf create mode 100644 sources/dataengine/netctl.cpp create mode 100644 sources/dataengine/netctl.h create mode 100644 sources/dataengine/plasma-engine-netctl.desktop create mode 100644 sources/icons/network-idle-128-128.png create mode 100644 sources/icons/network-idle-64x64.png create mode 100644 sources/icons/network-offline-64x64.png create mode 100644 sources/netctl-gui.png diff --git a/.gitignore b/.gitignore index 8e254f0..d957b61 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,8 @@ # Source archive *.tar.xz +# Build directory +build/ +sources/build/ +sources/build/*/ + diff --git a/LICENSE b/LICENSE index ef7e7ef..b09a390 100644 --- a/LICENSE +++ b/LICENSE @@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} + netctl-plasmoid + Copyright (C) 2014 Evgeniy Alekseev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - {project} Copyright (C) {year} {fullname} + netctl-plasmoid Copyright (C) 2014 Evgeniy Alekseev This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt index 39b8edb..c239ac0 100644 --- a/sources/CMakeLists.txt +++ b/sources/CMakeLists.txt @@ -49,3 +49,5 @@ endif () if (BUILD_PLASMOID) add_subdirectory (plasmoid) endif () + +install (FILES netctl-gui.png DESTINATION ls share/pixmaps/netctl-gui.png) diff --git a/sources/dataengine/netctl.conf b/sources/dataengine/netctl.conf new file mode 100644 index 0000000..fb941be --- /dev/null +++ b/sources/dataengine/netctl.conf @@ -0,0 +1,18 @@ +# Configuration file for netctl data engine +# Uncomment needed lines + +## Commands +# command +#CMD=/usr/bin/netctl +# ip command +#IPCMD=/usr/bin/ip + +## Network +# path to list of network devices +#NETDIR=/sys/class/net/ + +## External IP +# external ip check command +#EXTIPCMD=wget -qO- http://ifconfig.me/ip +# 'true' - check external IP +#EXTIP=false diff --git a/sources/dataengine/netctl.cpp b/sources/dataengine/netctl.cpp new file mode 100644 index 0000000..45722e7 --- /dev/null +++ b/sources/dataengine/netctl.cpp @@ -0,0 +1,221 @@ +/*************************************************************************** + * This file is part of netctl-plasmoid * + * * + * netctl-plasmoid 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-plasmoid 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 Foobar. If not, see . * + ***************************************************************************/ + +#include "netctl.h" + +#include +#include +#include +#include + + +Netctl::Netctl(QObject *parent, const QVariantList &args) + : Plasma::DataEngine(parent, args) +{ + Q_UNUSED(args) + + setMinimumPollingInterval(333); + readConfiguration(); +} + + +QStringList Netctl::sources() const +{ + QStringList sources; + + sources.append(QString("currentProfile")); + sources.append(QString("extIp")); + sources.append(QString("interfaces")); + sources.append(QString("intIp")); + sources.append(QString("profiles")); + sources.append(QString("statusBool")); + sources.append(QString("statusString")); + + return sources; +} + + +bool Netctl::readConfiguration() +{ + // default configuration + checkExtIP = QString("false"); + cmd = QString("/usr/bin/netctl"); + extIpCmd = QString("wget -qO- http://ifconfig.me/ip"); + ipCmd = QString("/usr/bin/ip"); + netDir = QString("/sys/class/net/"); + + QString fileStr; + // FIXME: define configuration file + QFile confFile(QString(getenv("HOME")) + QString("/.kde4/share/config/netctl.conf")); + bool exists = confFile.open(QIODevice::ReadOnly); + if (!exists) { + confFile.setFileName("/usr/share/config/netctl.conf"); + exists = confFile.open(QIODevice::ReadOnly); + if (!exists) + return false; + } + + while (true) { + fileStr = QString(confFile.readLine()); + if (confFile.atEnd()) + break; + else if (fileStr[0] != '#') { + if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2) { + if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("EXTIP")) + checkExtIP = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]; + else if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("CMD")) + cmd = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]; + else if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("EXTIPCMD")) + extIpCmd = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]; + else if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("IPCMD")) + ipCmd = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]; + else if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("NETDIR")) + netDir = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]; + } + } + } + + confFile.close(); + return true; +} + + +bool Netctl::sourceRequestEvent(const QString &name) +{ + return updateSourceEvent(name); +} + + +bool Netctl::updateSourceEvent(const QString &source) +{ + QProcess command; + QString cmdOutput = QString(""); + QString value = QString(""); + QStringList valueList; + + if (source == QString("currentProfile")) { + command.start(cmd + QString(" list")); + command.waitForFinished(-1); + cmdOutput = command.readAllStandardOutput(); + if (cmdOutput != QString("")) { + QStringList profileList = cmdOutput.split(QString("\n"), QString::SkipEmptyParts); + for (int i=0; i -1) { + value = QString("enabled"); + break; + } + } + setData(source, QString("value"), value); + } + + return true; +} + + +K_EXPORT_PLASMA_DATAENGINE(netctl, Netctl) + +#include "netctl.moc" diff --git a/sources/dataengine/netctl.h b/sources/dataengine/netctl.h new file mode 100644 index 0000000..b176514 --- /dev/null +++ b/sources/dataengine/netctl.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * This file is part of netctl-plasmoid * + * * + * netctl-plasmoid 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-plasmoid 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 Foobar. If not, see . * + ***************************************************************************/ + +#ifndef NETCTL_DE_H +#define NETCTL_DE_H + +#include + +class Netctl : public Plasma::DataEngine +{ + Q_OBJECT + +public: + Netctl(QObject *parent, const QVariantList &args); + +protected: + bool readConfiguration(); + bool sourceRequestEvent(const QString &name); + bool updateSourceEvent(const QString &source); + QStringList sources() const; + + // configuration + // enable check external IP + QString checkExtIP; + // path to netctl command + QString cmd; + // command to check external IP + QString extIpCmd; + // path to ip command + QString ipCmd; + // path to directory with network device configuration + QString netDir; +}; + +#endif /* NETCTL_DE_H */ diff --git a/sources/dataengine/plasma-engine-netctl.desktop b/sources/dataengine/plasma-engine-netctl.desktop new file mode 100644 index 0000000..6423956 --- /dev/null +++ b/sources/dataengine/plasma-engine-netctl.desktop @@ -0,0 +1,20 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Netctl DataEngine +Comment=data engine for netctl +ServiceTypes=Plasma/DataEngine +Type=Service +Icon=netctl-gui + +X-KDE-ServiceTypes=Plasma/DataEngine +X-KDE-Library=plasma_engine_netctl +X-Plasma-EngineName=netctl + +X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis +X-KDE-PluginInfo-Email=esalexeev@gmail.com +X-KDE-PluginInfo-Name=netctl +X-KDE-PluginInfo-Version=1.0 +X-KDE-PluginInfo-Category=Network +X-KDE-PluginInfo-Depends= +X-KDE-PluginInfo-License=GPLv3 +X-KDE-PluginInfo-EnabledByDefault=true diff --git a/sources/icons/network-idle-128-128.png b/sources/icons/network-idle-128-128.png new file mode 100644 index 0000000000000000000000000000000000000000..9112b1b2419433716433c09ec27012e8b6818d27 GIT binary patch literal 11867 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 M+`5Y*AZ?@n2UA(C8UO$Q literal 0 HcmV?d00001 diff --git a/sources/icons/network-offline-64x64.png b/sources/icons/network-offline-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..46c4e0415a89afa36df1998fb5e1b193ec929ae8 GIT binary patch literal 5352 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 literal 0 HcmV?d00001 diff --git a/sources/netctl-gui.png b/sources/netctl-gui.png new file mode 100644 index 0000000000000000000000000000000000000000..9112b1b2419433716433c09ec27012e8b6818d27 GIT binary patch literal 11867 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 N*Dy8t@3JPL{{yli*