refactoring of the configuration interface

This commit is contained in:
arcan1s 2014-07-12 22:15:39 +04:00
parent 021a870220
commit 9b01fcd4e1
12 changed files with 1087 additions and 579 deletions

View File

@ -10,9 +10,11 @@ Ver.1.2.0:
+ [gui] added support of netctl-auto + [gui] added support of netctl-auto
+ [lib] detached backend from frontend + [lib] detached backend from frontend
+ [plasmoid] added support of netctl-auto + [plasmoid] added support of netctl-auto
+ [plasmoid] added dataengine configuration
* [all] small changes in the project architecture * [all] small changes in the project architecture
* [gui] more debug information * [gui] more debug information
* [gui] changed lineEdit_profile to comboBox * [gui] changed lineEdit_profile to comboBox
* [gui] refactoring of configuration interface
* [plasmoid] edited configuration interface * [plasmoid] edited configuration interface
Ver.1.1.0 (netctl-1.7 update): Ver.1.1.0 (netctl-1.7 update):

View File

@ -71,7 +71,6 @@ Additional information
TODO (wish list) TODO (wish list)
---------------- ----------------
* split configuration interface
* man pages * man pages
* code review * code review

View File

@ -17,9 +17,9 @@
#include "netctl.h" #include "netctl.h"
#include <KGlobal>
#include <KStandardDirs>
#include <Plasma/DataContainer> #include <Plasma/DataContainer>
#include <KDE/KGlobal>
#include <KDE/KStandardDirs>
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
#include <QProcess> #include <QProcess>
@ -65,8 +65,7 @@ void Netctl::readConfiguration()
QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf"); QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf");
QFile confFile(fileName); QFile confFile(fileName);
bool ok = confFile.open(QIODevice::ReadOnly); if (!confFile.open(QIODevice::ReadOnly)) {
if (!ok) {
configuration = updateConfiguration(rawConfig); configuration = updateConfiguration(rawConfig);
return; return;
} }

View File

@ -49,17 +49,19 @@ int main(int argc, char *argv[])
helpMessage += QApplication::translate("MainWindow", " Evgeniy Alekseev aka arcanis\n"); helpMessage += QApplication::translate("MainWindow", " Evgeniy Alekseev aka arcanis\n");
helpMessage += QApplication::translate("MainWindow", " E-mail : esalexeev@gmail.com\n\n"); helpMessage += QApplication::translate("MainWindow", " E-mail : esalexeev@gmail.com\n\n");
helpMessage += QApplication::translate("MainWindow", "Usage:\n"); helpMessage += QApplication::translate("MainWindow", "Usage:\n");
helpMessage += QApplication::translate("MainWindow", "netctl-gui [ -d | --debug ] [ --default ] [ --netctl-auto ] [ -t NUM | --tab NUM ]\n"); helpMessage += QApplication::translate("MainWindow", "netctl-gui [ -d | --debug ] [ --default ] [ --netctl-auto ] [ --settings ]\n");
helpMessage += QApplication::translate("MainWindow", " [ -h | --help]\n\n"); helpMessage += QApplication::translate("MainWindow", " [ -t NUM | --tab NUM ] [ -h | --help]\n\n");
helpMessage += QApplication::translate("MainWindow", "Parametrs:\n"); helpMessage += QApplication::translate("MainWindow", "Parametrs:\n");
helpMessage += QApplication::translate("MainWindow", " -d --debug - print debug information\n"); helpMessage += QApplication::translate("MainWindow", " -d --debug - print debug information\n");
helpMessage += QApplication::translate("MainWindow", " --default - start with default settings\n"); helpMessage += QApplication::translate("MainWindow", " --default - start with default settings\n");
helpMessage += QApplication::translate("MainWindow", " --netctl-auto - show netctl-auto window\n"); helpMessage += QApplication::translate("MainWindow", " --netctl-auto - show netctl-auto window\n");
helpMessage += QApplication::translate("MainWindow", " --settings - show settings window\n");
helpMessage += QApplication::translate("MainWindow", " -t NUM --tab NUM - open a tab with number NUM\n"); helpMessage += QApplication::translate("MainWindow", " -t NUM --tab NUM - open a tab with number NUM\n");
helpMessage += QApplication::translate("MainWindow", " -h --help - show this help and exit\n"); helpMessage += QApplication::translate("MainWindow", " -h --help - show this help and exit\n");
bool defaultSettings = false; bool defaultSettings = false;
bool debug = false; bool debug = false;
bool netctlAuto = false; bool showNetctlAuto = false;
bool showSettings = false;
int tabNumber = 1; int tabNumber = 1;
for (int i=1; i<argc; i++) { for (int i=1; i<argc; i++) {
@ -88,7 +90,13 @@ int main(int argc, char *argv[])
(argv[i][4] == 't') && (argv[i][5] == 'c') && (argv[i][6] == 't') && (argv[i][7] == 'l') && (argv[i][4] == 't') && (argv[i][5] == 'c') && (argv[i][6] == 't') && (argv[i][7] == 'l') &&
(argv[i][8] == '-') && (argv[i][9] == 'a') && (argv[i][10] == 'u') && (argv[i][11] == 't') && (argv[i][8] == '-') && (argv[i][9] == 'a') && (argv[i][10] == 'u') && (argv[i][11] == 't') &&
(argv[i][12] == 'o') && (argv[i][13] == '\0')) { (argv[i][12] == 'o') && (argv[i][13] == '\0')) {
netctlAuto = true; showNetctlAuto = true;
}
// settings
else if ((argv[i][0] == '-') && (argv[i][1] == '-') && (argv[i][2] == 's') && (argv[i][3] == 'e') &&
(argv[i][4] == 't') && (argv[i][5] == 't') && (argv[i][6] == 'i') && (argv[i][7] == 'n') &&
(argv[i][8] == 'g') && (argv[i][9] == 's') && (argv[i][10] == '\0')) {
showSettings = true;
} }
// tab number // tab number
else if (((argv[i][0] == '-') && (argv[i][1] == 't') && (argv[i][2] == '\0')) || else if (((argv[i][0] == '-') && (argv[i][1] == 't') && (argv[i][2] == '\0')) ||
@ -104,7 +112,7 @@ int main(int argc, char *argv[])
} }
} }
MainWindow w(0, defaultSettings, debug, netctlAuto, tabNumber); MainWindow w(0, defaultSettings, debug, showNetctlAuto, showSettings, tabNumber);
w.show(); w.show();
return a.exec(); return a.exec();
} }

View File

@ -44,7 +44,12 @@
#include "wirelesswidget.h" #include "wirelesswidget.h"
MainWindow::MainWindow(QWidget *parent, const bool defaultSettings, const bool debugCmd, const bool netctlAuto, const int tabNum) MainWindow::MainWindow(QWidget *parent,
const bool defaultSettings,
const bool debugCmd,
const bool showNetctlAuto,
const bool showSettings,
const int tabNum)
: QMainWindow(parent), : QMainWindow(parent),
ui(new Ui::MainWindow), ui(new Ui::MainWindow),
debug(debugCmd) debug(debugCmd)
@ -97,8 +102,10 @@ MainWindow::MainWindow(QWidget *parent, const bool defaultSettings, const bool d
updateTabs(ui->tabWidget->currentIndex()); updateTabs(ui->tabWidget->currentIndex());
ui->statusBar->showMessage(QApplication::translate("MainWindow", "Ready")); ui->statusBar->showMessage(QApplication::translate("MainWindow", "Ready"));
if (netctlAuto) if (showNetctlAuto)
netctlAutoWin->showWindow(); netctlAutoWin->showWindow();
if (showSettings)
settingsWin->showWindow();
} }
@ -1287,6 +1294,8 @@ void MainWindow::connectToUnknownEssid(const QString passwd)
if (!passwd.isEmpty()) if (!passwd.isEmpty())
settings[QString("Key")] = QString("'") + passwd + QString("'"); settings[QString("Key")] = QString("'") + passwd + QString("'");
settings[QString("IP")] = QString("dhcp"); settings[QString("IP")] = QString("dhcp");
if (hiddenNetwork)
settings[QString("Hidden")] = QString("yes");
QString profile = QString("netctl-gui-") + settings[QString("ESSID")]; QString profile = QString("netctl-gui-") + settings[QString("ESSID")];
profile.remove(QString("'")); profile.remove(QString("'"));
@ -1325,6 +1334,7 @@ void MainWindow::wifiTabStart()
if (ui->tableWidget_wifi->currentItem() == 0) if (ui->tableWidget_wifi->currentItem() == 0)
return; return;
if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("<hidden>")) { if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("<hidden>")) {
hiddenNetwork = true;
passwdWid = new PasswdWidget(this); passwdWid = new PasswdWidget(this);
passwdWid->setPassword(false); passwdWid->setPassword(false);
int widgetWidth = 270; int widgetWidth = 270;
@ -1338,6 +1348,7 @@ void MainWindow::wifiTabStart()
} }
ui->tabWidget->setDisabled(true); ui->tabWidget->setDisabled(true);
hiddenNetwork = false;
QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text();
QString item = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text(); QString item = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text();
if (checkState(QString("exists"), item)) { if (checkState(QString("exists"), item)) {

View File

@ -54,7 +54,8 @@ public:
explicit MainWindow(QWidget *parent = 0, explicit MainWindow(QWidget *parent = 0,
const bool defaultSettings = false, const bool defaultSettings = false,
const bool debugCmd = false, const bool debugCmd = false,
const bool netctlAuto = false, const bool showNetctlAuto = false,
const bool showSettings = false,
const int tabNum = 1); const int tabNum = 1);
~MainWindow(); ~MainWindow();
@ -123,6 +124,7 @@ private:
void keyPressEvent(QKeyEvent *pressedKey); void keyPressEvent(QKeyEvent *pressedKey);
void setIconsToButtons(); void setIconsToButtons();
bool debug; bool debug;
bool hiddenNetwork;
// configuration // configuration
QMap<QString, QString> configuration; QMap<QString, QString> configuration;
}; };

View File

@ -52,6 +52,7 @@ void SettingsWindow::createActions()
{ {
if (debug) qDebug() << "[SettingsWindow]" << "[createActions]"; if (debug) qDebug() << "[SettingsWindow]" << "[createActions]";
connect(ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(changePage(QTreeWidgetItem *, QTreeWidgetItem *)));
connect(ui->comboBox_language, SIGNAL(currentIndexChanged(int)), ui->label_info, SLOT(show())); connect(ui->comboBox_language, SIGNAL(currentIndexChanged(int)), ui->label_info, SLOT(show()));
connect(ui->buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked(bool)), this, SLOT(close())); connect(ui->buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked(bool)), this, SLOT(close()));
connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked(bool)), this, SLOT(setDefault())); connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked(bool)), this, SLOT(setDefault()));
@ -90,6 +91,19 @@ void SettingsWindow::addLanguages()
} }
void SettingsWindow::changePage(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
Q_UNUSED(previous)
if (debug) qDebug() << "[SettingsWindow]" << "[changePage]";
for (int i=0; i<ui->treeWidget->topLevelItemCount(); i++)
if (current == ui->treeWidget->topLevelItem(i)) {
ui->stackedWidget->setCurrentIndex(i);
break;
}
}
void SettingsWindow::saveSettings() void SettingsWindow::saveSettings()
{ {
if (debug) qDebug() << "[SettingsWindow]" << "[saveSettings]"; if (debug) qDebug() << "[SettingsWindow]" << "[saveSettings]";

View File

@ -20,6 +20,7 @@
#include <QKeyEvent> #include <QKeyEvent>
#include <QMainWindow> #include <QMainWindow>
#include <QTreeWidgetItem>
class MainWindow; class MainWindow;
@ -46,6 +47,7 @@ public slots:
private slots: private slots:
void addLanguages(); void addLanguages();
void changePage(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void saveSettings(); void saveSettings();
// buttons // buttons
void selectIfaceDir(); void selectIfaceDir();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DataEngineWindow</class>
<widget class="QWidget" name="DataEngineWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>337</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>480</width>
<height>320</height>
</size>
</property>
<property name="windowTitle">
<string notr="true">Configuration Window</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="layout_netctl">
<item>
<widget class="QLabel" name="label_netctl">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to netctl</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_netctl"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_netctl">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_netctlAuto">
<item>
<widget class="QLabel" name="label_netctlAuto">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to netctl-auto</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_netctlAuto"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_netctlAuto">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_ip">
<item>
<widget class="QLabel" name="label_ip">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to ip</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_ip"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_ip">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_interface">
<item>
<widget class="QLabel" name="label_interface">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to interface list</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_interface"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_interface">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_extIp">
<item>
<widget class="QCheckBox" name="checkBox_extIp">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Check external IP</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_extIp"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_extIp">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_dataengine">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEdit_ip</tabstop>
<tabstop>lineEdit_netctl</tabstop>
<tabstop>pushButton_netctl</tabstop>
<tabstop>checkBox_extIp</tabstop>
<tabstop>lineEdit_extIp</tabstop>
<tabstop>pushButton_extIp</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -21,7 +21,9 @@
#include <KConfigDialog> #include <KConfigDialog>
#include <KFileDialog> #include <KFileDialog>
#include <KGlobal>
#include <KNotification> #include <KNotification>
#include <KStandardDirs>
#include <KUrl> #include <KUrl>
#include <plasma/theme.h> #include <plasma/theme.h>
@ -89,6 +91,75 @@ void Netctl::init()
} }
QMap<QString, QString> Netctl::readDataEngineConfiguration()
{
QMap<QString, QString> rawConfig;
rawConfig[QString("CMD")] = QString("/usr/bin/netctl");
rawConfig[QString("EXTIP")] = QString("false");
rawConfig[QString("EXTIPCMD")] = QString("wget -qO- http://ifconfig.me/ip");
rawConfig[QString("IPCMD")] = QString("/usr/bin/ip");
rawConfig[QString("NETDIR")] = QString("/sys/class/net/");
rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto");
QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf");
QFile confFile(fileName);
if (!confFile.open(QIODevice::ReadOnly))
return updateConfiguration(rawConfig);
QString fileStr;
QStringList value;
while (true) {
fileStr = QString(confFile.readLine()).trimmed();
if (fileStr[0] == QChar('#')) continue;
if (fileStr[0] == QChar(';')) continue;
if (fileStr.contains(QChar('='))) {
value.clear();
for (int i=1; i<fileStr.split(QChar('=')).count(); i++)
value.append(fileStr.split(QChar('='))[i]);
rawConfig[fileStr.split(QChar('='))[0]] = value.join(QChar('='));
}
if (confFile.atEnd())
break;
}
confFile.close();
return updateConfiguration(rawConfig);
}
void Netctl::writeDataEngineConfiguration(const QMap<QString, QString> settings)
{
QMap<QString, QString> config = updateConfiguration(settings);
QString fileName = KGlobal::dirs()->locateLocal("config", "netctl.conf");
QFile confFile(fileName);
if (!confFile.open(QIODevice::WriteOnly))
return;
for (int i=0; i<config.keys().count(); i++) {
QByteArray string = (config.keys()[i] + QString("=") + config[config.keys()[i]] + QString("\n")).toUtf8();
confFile.write(string);
}
confFile.close();
}
QMap<QString, QString> Netctl::updateConfiguration(const QMap<QString, QString> rawConfig)
{
QMap<QString, QString> config;
QString key, value;
// remove spaces and copy source map
for (int i=0; i<rawConfig.keys().count(); i++) {
key = rawConfig.keys()[i];
value = rawConfig[key];
key.remove(QChar(' '));
if ((key != QString("CMD")) &&
(key != QString("EXTIPCMD")) &&
(key != QString("IPCMD")) &&
(key != QString("NETCTLAUTOCMD")))
value.remove(QChar(' '));
config[key] = value;
}
return config;
}
void Netctl::updateInterface(bool setShown) void Netctl::updateInterface(bool setShown)
{ {
if (setShown) { if (setShown) {
@ -425,7 +496,7 @@ void Netctl::disconnectFromEngine()
// configuration interface // configuration interface
void Netctl::selectActiveIcon() void Netctl::selectActiveIcon()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiAppConfig.lineEdit_activeIcon->setText(url.path()); uiAppConfig.lineEdit_activeIcon->setText(url.path());
} }
@ -433,7 +504,7 @@ void Netctl::selectActiveIcon()
void Netctl::selectGuiExe() void Netctl::selectGuiExe()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiWidConfig.lineEdit_gui->setText(url.path()); uiWidConfig.lineEdit_gui->setText(url.path());
} }
@ -441,7 +512,7 @@ void Netctl::selectGuiExe()
void Netctl::selectInactiveIcon() void Netctl::selectInactiveIcon()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiAppConfig.lineEdit_inactiveIcon->setText(url.path()); uiAppConfig.lineEdit_inactiveIcon->setText(url.path());
} }
@ -449,7 +520,7 @@ void Netctl::selectInactiveIcon()
void Netctl::selectNetctlExe() void Netctl::selectNetctlExe()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiWidConfig.lineEdit_netctl->setText(url.path()); uiWidConfig.lineEdit_netctl->setText(url.path());
} }
@ -457,7 +528,7 @@ void Netctl::selectNetctlExe()
void Netctl::selectNetctlAutoExe() void Netctl::selectNetctlAutoExe()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiWidConfig.lineEdit_netctlAuto->setText(url.path()); uiWidConfig.lineEdit_netctlAuto->setText(url.path());
} }
@ -465,7 +536,7 @@ void Netctl::selectNetctlAutoExe()
void Netctl::selectSudoExe() void Netctl::selectSudoExe()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiWidConfig.lineEdit_sudo->setText(url.path()); uiWidConfig.lineEdit_sudo->setText(url.path());
} }
@ -473,18 +544,61 @@ void Netctl::selectSudoExe()
void Netctl::selectWifiExe() void Netctl::selectWifiExe()
{ {
KUrl url = KFileDialog::getOpenUrl(KUrl(), "*"); KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty()) if (!url.isEmpty())
uiWidConfig.lineEdit_wifi->setText(url.path()); uiWidConfig.lineEdit_wifi->setText(url.path());
} }
void Netctl::selectDataEngineExternalIpExe()
{
KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty())
uiDEConfig.lineEdit_extIp->setText(url.path());
}
void Netctl::selectDataEngineInterfacesDirectory()
{
KUrl url = KFileDialog::getExistingDirectoryUrl(KUrl("/"));
if (!url.isEmpty())
uiDEConfig.lineEdit_interface->setText(url.path());
}
void Netctl::selectDataEngineIpExe()
{
KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty())
uiDEConfig.lineEdit_ip->setText(url.path());
}
void Netctl::selectDataEngineNetctlExe()
{
KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty())
uiDEConfig.lineEdit_netctl->setText(url.path());
}
void Netctl::selectDataEngineNetctlAutoExe()
{
KUrl url = KFileDialog::getOpenUrl(KUrl("/usr/bin"), "*");
if (!url.isEmpty())
uiDEConfig.lineEdit_netctlAuto->setText(url.path());
}
void Netctl::createConfigurationInterface(KConfigDialog *parent) void Netctl::createConfigurationInterface(KConfigDialog *parent)
{ {
QWidget *configWidget = new QWidget; QWidget *configWidget = new QWidget;
uiWidConfig.setupUi(configWidget); uiWidConfig.setupUi(configWidget);
QWidget *appWidget = new QWidget; QWidget *appWidget = new QWidget;
uiAppConfig.setupUi(appWidget); uiAppConfig.setupUi(appWidget);
QWidget *deWidget = new QWidget;
uiDEConfig.setupUi(deWidget);
QString text = QString(NAME) + " - " + QString(VERSION) + "\n" + "(c) " + QString text = QString(NAME) + " - " + QString(VERSION) + "\n" + "(c) " +
QString(DATE) + " " + QString(AUTHOR); QString(DATE) + " " + QString(AUTHOR);
uiWidConfig.label_info->setText(text); uiWidConfig.label_info->setText(text);
@ -498,11 +612,13 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
else else
uiWidConfig.checkBox_sudo->setCheckState(Qt::Unchecked); uiWidConfig.checkBox_sudo->setCheckState(Qt::Unchecked);
uiWidConfig.lineEdit_sudo->setText(paths[QString("sudo")]); uiWidConfig.lineEdit_sudo->setText(paths[QString("sudo")]);
setSudo();
if (useWifi) if (useWifi)
uiWidConfig.checkBox_wifi->setCheckState(Qt::Checked); uiWidConfig.checkBox_wifi->setCheckState(Qt::Checked);
else else
uiWidConfig.checkBox_wifi->setCheckState(Qt::Unchecked); uiWidConfig.checkBox_wifi->setCheckState(Qt::Unchecked);
uiWidConfig.lineEdit_wifi->setText(paths[QString("wifi")]); uiWidConfig.lineEdit_wifi->setText(paths[QString("wifi")]);
setWifi();
if (bigInterface[QString("main")]) if (bigInterface[QString("main")])
uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Checked); uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Checked);
else else
@ -539,13 +655,27 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
uiAppConfig.lineEdit_activeIcon->setText(paths[QString("active")]); uiAppConfig.lineEdit_activeIcon->setText(paths[QString("active")]);
uiAppConfig.lineEdit_inactiveIcon->setText(paths[QString("inactive")]); uiAppConfig.lineEdit_inactiveIcon->setText(paths[QString("inactive")]);
QMap<QString, QString> deSettings = readDataEngineConfiguration();
uiDEConfig.lineEdit_netctl->setText(deSettings[QString("CMD")]);
uiDEConfig.lineEdit_netctlAuto->setText(deSettings[QString("NETCTLAUTOCMD")]);
uiDEConfig.lineEdit_ip->setText(deSettings[QString("IPCMD")]);
uiDEConfig.lineEdit_interface->setText(deSettings[QString("NETDIR")]);
if (deSettings[QString("EXTIP")] == QString("true"))
uiDEConfig.checkBox_extIp->setCheckState(Qt::Checked);
else
uiDEConfig.checkBox_extIp->setCheckState(Qt::Unchecked);
uiDEConfig.lineEdit_extIp->setText(deSettings[QString("EXTIPCMD")]);
setDataEngineExternalIp();
parent->addPage(configWidget, i18n("Netctl plasmoid"), Applet::icon()); parent->addPage(configWidget, i18n("Netctl plasmoid"), Applet::icon());
parent->addPage(appWidget, i18n("Appearance"), QString("preferences-desktop-theme")); parent->addPage(appWidget, i18n("Appearance"), QString("preferences-desktop-theme"));
parent->addPage(deWidget, i18n("DataEngine"), Applet::icon());
connect(uiWidConfig.checkBox_showBigInterface, SIGNAL(stateChanged(int)), this, connect(uiWidConfig.checkBox_showBigInterface, SIGNAL(stateChanged(int)), this,
SLOT(setBigInterface())); SLOT(setBigInterface()));
connect(uiWidConfig.checkBox_sudo, SIGNAL(stateChanged(int)), this, SLOT(setSudo())); connect(uiWidConfig.checkBox_sudo, SIGNAL(stateChanged(int)), this, SLOT(setSudo()));
connect(uiWidConfig.checkBox_wifi, SIGNAL(stateChanged(int)), this, SLOT(setWifi())); connect(uiWidConfig.checkBox_wifi, SIGNAL(stateChanged(int)), this, SLOT(setWifi()));
connect(uiDEConfig.checkBox_extIp, SIGNAL(stateChanged(int)), this, SLOT(setDataEngineExternalIp()));
connect(uiWidConfig.pushButton_gui, SIGNAL(clicked()), this, SLOT(selectGuiExe())); connect(uiWidConfig.pushButton_gui, SIGNAL(clicked()), this, SLOT(selectGuiExe()));
connect(uiWidConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectNetctlExe())); connect(uiWidConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectNetctlExe()));
@ -554,6 +684,11 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
connect(uiWidConfig.pushButton_wifi, SIGNAL(clicked()), this, SLOT(selecWifiExe())); connect(uiWidConfig.pushButton_wifi, SIGNAL(clicked()), this, SLOT(selecWifiExe()));
connect(uiAppConfig.pushButton_activeIcon, SIGNAL(clicked()), this, SLOT(selectActiveIcon())); connect(uiAppConfig.pushButton_activeIcon, SIGNAL(clicked()), this, SLOT(selectActiveIcon()));
connect(uiAppConfig.pushButton_inactiveIcon, SIGNAL(clicked()), this, SLOT(selectInactiveIcon())); connect(uiAppConfig.pushButton_inactiveIcon, SIGNAL(clicked()), this, SLOT(selectInactiveIcon()));
connect(uiDEConfig.pushButton_extIp, SIGNAL(clicked()), this, SLOT(selectDataEngineExternalIpExe()));
connect(uiDEConfig.pushButton_interface, SIGNAL(clicked()), this, SLOT(selectDataEngineInterfacesDirectory()));
connect(uiDEConfig.pushButton_ip, SIGNAL(clicked()), this, SLOT(selectDataEngineIpExe()));
connect(uiDEConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectDataEngineNetctlExe()));
connect(uiDEConfig.pushButton_netctlAuto, SIGNAL(clicked()), this, SLOT(selectDataEngineNetctlAutoExe()));
connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted()));
connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted())); connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted()));
@ -603,6 +738,18 @@ void Netctl::configAccepted()
cg.writeEntry("fontStyle", uiAppConfig.comboBox_fontStyle->currentText()); cg.writeEntry("fontStyle", uiAppConfig.comboBox_fontStyle->currentText());
cg.writeEntry("activeIconPath", uiAppConfig.lineEdit_activeIcon->text()); cg.writeEntry("activeIconPath", uiAppConfig.lineEdit_activeIcon->text());
cg.writeEntry("inactiveIconPath", uiAppConfig.lineEdit_inactiveIcon->text()); cg.writeEntry("inactiveIconPath", uiAppConfig.lineEdit_inactiveIcon->text());
QMap<QString, QString> deSettings;
deSettings[QString("CMD")] = uiDEConfig.lineEdit_netctl->text();
deSettings[QString("NETCTLAUTOCMD")] = uiDEConfig.lineEdit_netctlAuto->text();
deSettings[QString("IPCMD")] = uiDEConfig.lineEdit_ip->text();
deSettings[QString("NETDIR")] = uiDEConfig.lineEdit_interface->text();
if (uiDEConfig.checkBox_extIp->checkState() == 0)
deSettings[QString("EXTIP")] = QString("false");
else
deSettings[QString("EXTIP")] = QString("true");
deSettings[QString("EXTIPCMD")] = uiDEConfig.lineEdit_extIp->text();
writeDataEngineConfiguration(deSettings);
} }
@ -661,19 +808,40 @@ void Netctl::setBigInterface()
void Netctl::setSudo() void Netctl::setSudo()
{ {
if (uiWidConfig.checkBox_sudo->checkState() == 0) if (uiWidConfig.checkBox_sudo->checkState() == 0) {
uiWidConfig.lineEdit_sudo->setDisabled(true); uiWidConfig.lineEdit_sudo->setDisabled(true);
else if (uiWidConfig.checkBox_sudo->checkState() == 2) uiWidConfig.pushButton_sudo->setDisabled(true);
}
else if (uiWidConfig.checkBox_sudo->checkState() == 2) {
uiWidConfig.lineEdit_sudo->setEnabled(true); uiWidConfig.lineEdit_sudo->setEnabled(true);
uiWidConfig.pushButton_sudo->setEnabled(true);
}
} }
void Netctl::setWifi() void Netctl::setWifi()
{ {
if (uiWidConfig.checkBox_wifi->checkState() == 0) if (uiWidConfig.checkBox_wifi->checkState() == 0) {
uiWidConfig.lineEdit_wifi->setDisabled(true); uiWidConfig.lineEdit_wifi->setDisabled(true);
else if (uiWidConfig.checkBox_wifi->checkState() == 2) uiWidConfig.pushButton_wifi->setDisabled(true);
uiWidConfig.checkBox_wifi->setEnabled(true); }
else if (uiWidConfig.checkBox_wifi->checkState() == 2) {
uiWidConfig.lineEdit_wifi->setEnabled(true);
uiWidConfig.pushButton_wifi->setEnabled(true);
}
}
void Netctl::setDataEngineExternalIp()
{
if (uiDEConfig.checkBox_extIp->checkState() == 0) {
uiDEConfig.lineEdit_extIp->setDisabled(true);
uiDEConfig.pushButton_extIp->setDisabled(true);
}
else if (uiDEConfig.checkBox_extIp->checkState() == 2) {
uiDEConfig.lineEdit_extIp->setEnabled(true);
uiDEConfig.pushButton_extIp->setEnabled(true);
}
} }

View File

@ -26,6 +26,7 @@
#include <QProcess> #include <QProcess>
#include <ui_appearance.h> #include <ui_appearance.h>
#include <ui_dataengine.h>
#include <ui_widget.h> #include <ui_widget.h>
@ -39,6 +40,9 @@ public:
Netctl(QObject *parent, const QVariantList &args); Netctl(QObject *parent, const QVariantList &args);
~Netctl(); ~Netctl();
void init(); void init();
QMap<QString, QString> readDataEngineConfiguration();
void writeDataEngineConfiguration(const QMap<QString, QString> settings);
QMap<QString, QString> updateConfiguration(const QMap<QString, QString> rawConfig);
public slots: public slots:
// events // events
@ -53,6 +57,7 @@ public slots:
void setBigInterface(); void setBigInterface();
void setSudo(); void setSudo();
void setWifi(); void setWifi();
void setDataEngineExternalIp();
private slots: private slots:
// ui // ui
@ -65,6 +70,12 @@ private slots:
void selectNetctlAutoExe(); void selectNetctlAutoExe();
void selectSudoExe(); void selectSudoExe();
void selectWifiExe(); void selectWifiExe();
// dataengine
void selectDataEngineExternalIpExe();
void selectDataEngineInterfacesDirectory();
void selectDataEngineIpExe();
void selectDataEngineNetctlExe();
void selectDataEngineNetctlAutoExe();
// context menu // context menu
void enableProfileSlot(); void enableProfileSlot();
void startProfileSlot(QAction *profile); void startProfileSlot(QAction *profile);
@ -98,6 +109,7 @@ private:
void disconnectFromEngine(); void disconnectFromEngine();
// configuration interface // configuration interface
Ui::AppearanceWindow uiAppConfig; Ui::AppearanceWindow uiAppConfig;
Ui::DataEngineWindow uiDEConfig;
Ui::ConfigWindow uiWidConfig; Ui::ConfigWindow uiWidConfig;
// configuration // configuration
int autoUpdateInterval; int autoUpdateInterval;