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 */