diff --git a/sources/plasmoid/CMakeLists.txt b/sources/plasmoid/CMakeLists.txt
index ecd9402..55b5edb 100644
--- a/sources/plasmoid/CMakeLists.txt
+++ b/sources/plasmoid/CMakeLists.txt
@@ -27,7 +27,7 @@ configure_file (${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJEC
# make
kde4_add_ui_files (SUBPROJECT_SOURCE ${SUBPROJECT_UI})
kde4_add_plugin (${PLUGIN_NAME} ${SUBPROJECT_SOURCE})
-target_link_libraries (${PLUGIN_NAME} ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})
+target_link_libraries (${PLUGIN_NAME} ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS})
# install
install (TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR})
diff --git a/sources/plasmoid/configwindow.ui b/sources/plasmoid/configwindow.ui
index 0b3fd85..91dc9cb 100644
--- a/sources/plasmoid/configwindow.ui
+++ b/sources/plasmoid/configwindow.ui
@@ -30,6 +30,16 @@
Configuration
+ -
+
+
+
+
+
+ Qt::AlignCenter
+
+
+
-
-
@@ -124,6 +134,42 @@
+ -
+
+
-
+
+
+
+ 80
+ 23
+
+
+
+ Path to netctl
+
+
+
+ -
+
+
+ -
+
+
+
+ 100
+ 23
+
+
+
+ Browse
+
+
+ true
+
+
+
+
+
-
@@ -576,6 +622,8 @@
spinBox_autoUpdate
lineEdit_gui
pushButton_gui
+ lineEdit_netctl
+ pushButton_netctl
checkBox_showBigInterface
checkBox_showNetDev
checkBox_showExtIp
diff --git a/sources/plasmoid/netctl.cpp b/sources/plasmoid/netctl.cpp
index b27d373..4f10a19 100644
--- a/sources/plasmoid/netctl.cpp
+++ b/sources/plasmoid/netctl.cpp
@@ -17,9 +17,12 @@
#include "netctl.h"
#include "ui_configwindow.h"
+#include
#include
+#include
#include
+#include
#include
#include
@@ -51,6 +54,7 @@ Netctl::~Netctl()
void Netctl::init()
{
+ createActions();
// generate ui
// main layout
fullSpaceLayout = new QGraphicsLinearLayout();
@@ -82,6 +86,21 @@ void Netctl::init()
}
+void Netctl::createActions()
+{
+ // helpAction = new QAction( KIcon( "help-about" ), i18n( "Help" ), this );
+ // helpAction->setMenu( ( QMenu* ) (new KHelpMenu( NULL, about, false ) )->menu() );
+}
+
+
+QList Netctl::contextualActions()
+{
+ QList menuActions;
+
+ return menuActions;
+}
+
+
int Netctl::showGui()
{
QProcess command;
@@ -150,7 +169,7 @@ void Netctl::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Da
QString value = data[QString("value")].toString();;
if (sourceName == QString("currentProfile")) {
- if (value == QString(""))
+ if (value.isEmpty())
value = QString("N\\A");
profileName = value;
@@ -166,17 +185,17 @@ void Netctl::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Da
textLabel->setText(formatLine[0] + text.join(QString("
")) + formatLine[1]);
}
else if (sourceName == QString("extIp")) {
- if (value == QString(""))
+ if (value.isEmpty())
value = QString("N\\A");
extIp = value;
}
else if (sourceName == QString("intIp")) {
- if (value == QString(""))
+ if (value.isEmpty())
value = QString("N\\A");
intIp = value;
}
else if (sourceName == QString("interfaces")) {
- if (value == QString(""))
+ if (value.isEmpty())
value = QString("N\\A");
interfaces = value;
}
@@ -198,13 +217,48 @@ void Netctl::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Da
// configuration interface
+void Netctl::selectGuiExe()
+{
+ KUrl guiUrl = KFileDialog::getOpenUrl(KUrl(), "*");
+ if (!guiUrl.isEmpty())
+ uiConfig.lineEdit_gui->setText(guiUrl.path());
+}
+
+
+void Netctl::selectNetctlExe()
+{
+ KUrl netctlUrl = KFileDialog::getOpenUrl(KUrl(), "*");
+ if (!netctlUrl.isEmpty())
+ uiConfig.lineEdit_netctl->setText(netctlUrl.path());
+}
+
+
+void Netctl::selectActiveIcon()
+{
+ KUrl activeIconUrl = KFileDialog::getOpenUrl(KUrl(), "*");
+ if (!activeIconUrl.isEmpty())
+ uiConfig.lineEdit_activeIcon->setText(activeIconUrl.path());
+}
+
+
+void Netctl::selectInactiveIcon()
+{
+ KUrl inactiveIconUrl = KFileDialog::getOpenUrl(KUrl(), "*");
+ if (!inactiveIconUrl.isEmpty())
+ uiConfig.lineEdit_inactiveIcon->setText(inactiveIconUrl.path());
+}
+
+
void Netctl::createConfigurationInterface(KConfigDialog *parent)
{
QWidget *configwin = new QWidget;
uiConfig.setupUi(configwin);
+ QString text = QString(NAME) + " - " + QString(VERSION) + "\n" + "(c) " + QString(DATE) + " " + QString(AUTHOR);
+ uiConfig.label_info->setText(text);
uiConfig.spinBox_autoUpdate->setValue(autoUpdateInterval);
uiConfig.lineEdit_gui->setText(guiPath);
+ uiConfig.lineEdit_netctl->setText(netctlPath);
if (showBigInterface)
uiConfig.checkBox_showBigInterface->setCheckState(Qt::Checked);
else
@@ -236,8 +290,16 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
uiConfig.lineEdit_inactiveIcon->setText(inactiveIconPath);
parent->addPage(configwin, i18n("Netctl plasmoid"), Applet::icon());
- connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted()));
+
connect(uiConfig.checkBox_showBigInterface, SIGNAL(stateChanged(int)), this, SLOT(setBigInterface()));
+
+ connect(uiConfig.pushButton_gui, SIGNAL(clicked()), this, SLOT(selectGuiExe()));
+ connect(uiConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectNetctlExe()));
+ connect(uiConfig.pushButton_activeIcon, SIGNAL(clicked()), this, SLOT(selectActiveIcon()));
+ connect(uiConfig.pushButton_inactiveIcon, SIGNAL(clicked()), this, SLOT(selectInactiveIcon()));
+
+ connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted()));
+ connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted()));
}
@@ -248,6 +310,7 @@ void Netctl::configAccepted()
cg.writeEntry("autoUpdateInterval", uiConfig.spinBox_autoUpdate->value());
cg.writeEntry("guiPath", uiConfig.lineEdit_gui->text());
+ cg.writeEntry("netctlPath", uiConfig.lineEdit_netctl->text());
if (uiConfig.checkBox_showBigInterface->checkState() == 0)
cg.writeEntry("showBigInterface", false);
else
@@ -281,6 +344,7 @@ void Netctl::configChanged()
autoUpdateInterval = cg.readEntry("autoUpdateInterval", 1000);
guiPath = cg.readEntry("guiPath", "/usr/bin/netctl-gui");
+ netctlPath = cg.readEntry("netctlPath", "/usr/bin/netctl");
showBigInterface = cg.readEntry("showBigInterface", true);
showNetDev = cg.readEntry("showNetDev", true);
showExtIp = cg.readEntry("showExtIp", true);
diff --git a/sources/plasmoid/netctl.h b/sources/plasmoid/netctl.h
index 8a35538..985f8a4 100644
--- a/sources/plasmoid/netctl.h
+++ b/sources/plasmoid/netctl.h
@@ -47,8 +47,15 @@ public slots:
void configChanged();
int setBigInterface();
+private slots:
+ void selectGuiExe();
+ void selectNetctlExe();
+ void selectActiveIcon();
+ void selectInactiveIcon();
+
protected:
void createConfigurationInterface(KConfigDialog *parent);
+ QList contextualActions();
private:
// ui
@@ -65,6 +72,11 @@ private:
QString extIp;
QString interfaces;
QStringList formatLine;
+ // context menu
+ void createActions();
+ QAction *startProfile;
+ QAction *restartProfile;
+ QAction *enableProfileAutoload;
// data engine
void connectToEngine();
void disconnectFromEngine();
@@ -73,6 +85,7 @@ private:
// configuration
int autoUpdateInterval;
QString guiPath;
+ QString netctlPath;
bool showBigInterface;
bool showNetDev;
bool showExtIp;
diff --git a/sources/version.h.in b/sources/version.h.in
index 5cf6876..8003264 100644
--- a/sources/version.h.in
+++ b/sources/version.h.in
@@ -1,8 +1,9 @@
#ifndef VERSION_H
#define VERSION_H
-#ifndef PROJ_VERSION
-#define PROJ_VERSION "@PROJECT_VERSION@"
-#endif /* PROJ_VERSION */
+#define AUTHOR "Evgeniy Alekseev"
+#define DATE "2014-2014"
+#define NAME "Netctl plasmoid"
+#define VERSION "@PROJECT_VERSION@"
#endif /* VERSION_H */