From 23df40960ca873a7e8f12eeb7126e5cd42e54e6c Mon Sep 17 00:00:00 2001 From: arcan1s Date: Sat, 22 Feb 2014 02:35:07 +0400 Subject: [PATCH] intermediate commit --- sources/gui/src/ethernetwidget.cpp | 4 +- sources/gui/src/ethernetwidget.ui | 3 + sources/gui/src/generalwidget.cpp | 4 +- sources/gui/src/generalwidget.ui | 3 + sources/gui/src/ipwidget.cpp | 4 +- sources/gui/src/ipwidget.ui | 5 +- sources/gui/src/mainwindow.cpp | 6 +- sources/gui/src/mainwindow.h | 5 +- sources/gui/src/mobilewidget.cpp | 4 +- sources/gui/src/mobilewidget.ui | 5 +- sources/gui/src/pppoewidget.cpp | 4 +- sources/gui/src/pppoewidget.ui | 5 +- sources/gui/src/wirelesswidget.cpp | 177 ++++++++++++++++++++++++++++- sources/gui/src/wirelesswidget.h | 20 +++- sources/gui/src/wirelesswidget.ui | 21 +++- 15 files changed, 246 insertions(+), 24 deletions(-) diff --git a/sources/gui/src/ethernetwidget.cpp b/sources/gui/src/ethernetwidget.cpp index 265ce5f..3d0260a 100644 --- a/sources/gui/src/ethernetwidget.cpp +++ b/sources/gui/src/ethernetwidget.cpp @@ -48,7 +48,7 @@ void EthernetWidget::clear() ui->spinBox_timeoutCarrier->setValue(5); ui->spinBox_timeoutWpa->setValue(15); - ui->pushButton_ethernetAdvanced->setText(QApplication::translate("EthernetWidget", "Hide advanced")); + ui->pushButton_ethernetAdvanced->setChecked(false); showAdvanced(); } @@ -75,7 +75,7 @@ void EthernetWidget::selectWpaConfig() void EthernetWidget::showAdvanced() { - if (ui->pushButton_ethernetAdvanced->text().indexOf(QString("Show")) > -1) { + if (ui->pushButton_ethernetAdvanced->isChecked()) { ui->widget_ethernetAdvanced->setShown(true); ui->pushButton_ethernetAdvanced->setText(QApplication::translate("EthernetWidget", "Hide advanced")); } diff --git a/sources/gui/src/ethernetwidget.ui b/sources/gui/src/ethernetwidget.ui index 6c6fc90..4fa5f08 100644 --- a/sources/gui/src/ethernetwidget.ui +++ b/sources/gui/src/ethernetwidget.ui @@ -44,6 +44,9 @@ Hide advanced + + true + diff --git a/sources/gui/src/generalwidget.cpp b/sources/gui/src/generalwidget.cpp index c1f831e..6254691 100644 --- a/sources/gui/src/generalwidget.cpp +++ b/sources/gui/src/generalwidget.cpp @@ -57,7 +57,7 @@ void GeneralWidget::clear() ui->lineEdit_execDownPre->clear(); ui->checkBox_forceConnect->setCheckState(Qt::Unchecked); - ui->pushButton_generalAdvanced->setText(QApplication::translate("GeneralWidget", "Hide advanced")); + ui->pushButton_generalAdvanced->setChecked(false); showAdvanced(); } @@ -97,7 +97,7 @@ void GeneralWidget::keyPressEvent(QKeyEvent *pressedKey) void GeneralWidget::showAdvanced() { - if (ui->pushButton_generalAdvanced->text().indexOf(QString("Show")) > -1) { + if (ui->pushButton_generalAdvanced->isChecked()) { ui->widget_generalAdvanced->setShown(true); ui->pushButton_generalAdvanced->setText(QApplication::translate("GeneralWidget", "Hide advanced")); } diff --git a/sources/gui/src/generalwidget.ui b/sources/gui/src/generalwidget.ui index e2473ba..485ea6c 100644 --- a/sources/gui/src/generalwidget.ui +++ b/sources/gui/src/generalwidget.ui @@ -217,6 +217,9 @@ Hide advanced + + true + diff --git a/sources/gui/src/ipwidget.cpp b/sources/gui/src/ipwidget.cpp index 7b9028b..5ddd141 100644 --- a/sources/gui/src/ipwidget.cpp +++ b/sources/gui/src/ipwidget.cpp @@ -76,7 +76,7 @@ void IpWidget::clear() ui->lineEdit_dnsOptions->clear(); ui->listWidget_dnsOptions->clear(); - ui->pushButton_ipAdvanced->setText(QApplication::translate("IpWidget", "Hide advanced")); + ui->pushButton_ipAdvanced->setChecked(false);; showAdvanced(); } @@ -360,7 +360,7 @@ void IpWidget::changeDhcpClient(int index) void IpWidget::showAdvanced() { - if (ui->pushButton_ipAdvanced->text().indexOf(QString("Show")) > -1) { + if (ui->pushButton_ipAdvanced->isChecked()) { ui->widget_ipAdvanced->setShown(true); ui->pushButton_ipAdvanced->setText(QApplication::translate("IpWidget", "Hide advanced")); } diff --git a/sources/gui/src/ipwidget.ui b/sources/gui/src/ipwidget.ui index 44a6bf0..f0e009a 100644 --- a/sources/gui/src/ipwidget.ui +++ b/sources/gui/src/ipwidget.ui @@ -7,7 +7,7 @@ 0 0 430 - 1287 + 1353 @@ -270,6 +270,9 @@ Hide advanced + + true + diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index b7b30e7..58b3062 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -59,14 +59,16 @@ MainWindow::MainWindow(QWidget *parent, bool defaultSettings, int tabNum) sudoPath = QString("/usr/bin/kdesu"); wpaConfig.append(QString("/usr/bin/wpa_cli")); wpaConfig.append(QString("/usr/bin/wpa_supplicant")); - ifaceDir = QString("/sys/class/net/"); preferedInterface = QString(""); //// additional settings + ifaceDir = QString("/sys/class/net/"); + rfkillDir = QString("/sys/class/rfkill/"); wpaConfig.append(QString("/run/wpa_supplicant_netctl-gui.pid")); wpaConfig.append(QString("nl80211,wext")); wpaConfig.append(QString("/run/wpa_supplicant_netctl-gui")); wpaConfig.append(QString("users")); + // gui generalWid = new GeneralWidget(this, ifaceDir, profileDir); ui->scrollAreaWidgetContents->layout()->addWidget(generalWid); @@ -86,7 +88,7 @@ MainWindow::MainWindow(QWidget *parent, bool defaultSettings, int tabNum) ui->scrollAreaWidgetContents->layout()->addWidget(tuntapWid); vlanWid = new VlanWidget(this); ui->scrollAreaWidgetContents->layout()->addWidget(vlanWid); - wirelessWid = new WirelessWidget(this); + wirelessWid = new WirelessWidget(this, rfkillDir); ui->scrollAreaWidgetContents->layout()->addWidget(wirelessWid); // backend netctlCommand = new Netctl(this, netctlPath, profileDir, sudoPath); diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index 45cf13a..b8bfaea 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -104,12 +104,13 @@ private: bool checkState(QString state, QString item); void createActions(); // configuration + QString ifaceDir; QString netctlPath; + QString preferedInterface; QString profileDir; + QString rfkillDir; QString sudoPath; QStringList wpaConfig; - QString ifaceDir; - QString preferedInterface; }; diff --git a/sources/gui/src/mobilewidget.cpp b/sources/gui/src/mobilewidget.cpp index bf2d34b..4701792 100644 --- a/sources/gui/src/mobilewidget.cpp +++ b/sources/gui/src/mobilewidget.cpp @@ -51,7 +51,7 @@ void MobileWidget::clear() ui->checkBox_dns->setCheckState(Qt::Checked); ui->lineEdit_options->clear(); - ui->pushButton_mobileAdvanced->setText(QApplication::translate("MobileWidget", "Hide advanced")); + ui->pushButton_mobileAdvanced->setChecked(false);; showAdvanced(); } @@ -77,7 +77,7 @@ void MobileWidget::selectOptionsFile() void MobileWidget::showAdvanced() { - if (ui->pushButton_mobileAdvanced->text().indexOf(QString("Show")) > -1) { + if (ui->pushButton_mobileAdvanced->isChecked()) { ui->widget_mobileAdvanced->setShown(true); ui->pushButton_mobileAdvanced->setText(QApplication::translate("MobileWidget", "Hide advanced")); } diff --git a/sources/gui/src/mobilewidget.ui b/sources/gui/src/mobilewidget.ui index 43e89c3..43cd14c 100644 --- a/sources/gui/src/mobilewidget.ui +++ b/sources/gui/src/mobilewidget.ui @@ -7,7 +7,7 @@ 0 0 445 - 367 + 370 @@ -189,6 +189,9 @@ Show advanced + + true + diff --git a/sources/gui/src/pppoewidget.cpp b/sources/gui/src/pppoewidget.cpp index 742bf07..ce192e5 100644 --- a/sources/gui/src/pppoewidget.cpp +++ b/sources/gui/src/pppoewidget.cpp @@ -60,7 +60,7 @@ void PppoeWidget::clear() ui->lineEdit_mac->clear(); ui->checkBox_ipv6->setCheckState(Qt::Unchecked); - ui->pushButton_pppoeAdvanced->setText(QApplication::translate("PppoeWidget", "Hide advanced")); + ui->pushButton_pppoeAdvanced->setChecked(false);; showAdvanced(); } @@ -105,7 +105,7 @@ void PppoeWidget::selectOptionsFile() void PppoeWidget::showAdvanced() { - if (ui->pushButton_pppoeAdvanced->text().indexOf(QString("Show")) > -1) { + if (ui->pushButton_pppoeAdvanced->isChecked()) { ui->widget_pppoeAdvanced->setShown(true); ui->pushButton_pppoeAdvanced->setText(QApplication::translate("PppoeWidget", "Hide advanced")); } diff --git a/sources/gui/src/pppoewidget.ui b/sources/gui/src/pppoewidget.ui index 3d58a15..11dc763 100644 --- a/sources/gui/src/pppoewidget.ui +++ b/sources/gui/src/pppoewidget.ui @@ -7,7 +7,7 @@ 0 0 431 - 573 + 602 @@ -161,6 +161,9 @@ Show advanced + + true + diff --git a/sources/gui/src/wirelesswidget.cpp b/sources/gui/src/wirelesswidget.cpp index 7655975..d097c91 100644 --- a/sources/gui/src/wirelesswidget.cpp +++ b/sources/gui/src/wirelesswidget.cpp @@ -18,16 +18,191 @@ #include "wirelesswidget.h" #include "ui_wirelesswidget.h" +#include +#include +#include -WirelessWidget::WirelessWidget(QWidget *parent) + +WirelessWidget::WirelessWidget(QWidget *parent, QString rfkillDir) : QWidget(parent), + rfkillDirectory(new QDir(rfkillDir)), ui(new Ui::WirelessWidget) { ui->setupUi(this); + createActions(); + clear(); } WirelessWidget::~WirelessWidget() { + delete rfkillDirectory; delete ui; } + + +void WirelessWidget::clear() +{ + ui->comboBox_security->setCurrentIndex(0); + changeSecurity(ui->comboBox_security->currentIndex()); + ui->lineEdit_essid->clear(); + ui->lineEdit_wpaConfigSection->clear(); + ui->listWidget_wpaConfigSection->clear(); + ui->lineEdit_wpaConfig->setText(QString("/etc/wpa_supplicant.conf")); + ui->lineEdit_key->clear(); + ui->checkBox_hidden->setCheckState(Qt::Unchecked); + ui->checkBox_adhoc->setCheckState(Qt::Unchecked); + ui->spinBox_freq->setValue(2412); + ui->listWidget_freq->clear(); + ui->spinBox_priority->setValue(0); + ui->lineEdit_country->clear(); + ui->lineEdit_wpaGroup->clear(); + ui->comboBox_drivers->setCurrentIndex(0); + ui->listWidget_drivers->clear(); + ui->comboBox_rfkill->addItem(QString("auto")); + if (rfkillDirectory->exists()) { + QStringList rfkillDevices = rfkillDirectory->entryList(QDir::Dirs | QDir::NoDotAndDotDot); + for (int i=0; iabsolutePath() + QDir::separator() + rfkillDevices[i] + + QDir::separator() + QString("name")); + QString deviceName; + if (device.open(QIODevice::ReadOnly)) + deviceName = QString(device.readLine()).remove(QString("\n")); + ui->comboBox_rfkill->addItem(deviceName); + } + } + ui->comboBox_rfkill->setCurrentIndex(0); + ui->spinBox_timeoutWpa->setValue(15); + ui->checkBox_exclude->setCheckState(Qt::Unchecked); + + ui->pushButton_wirelessAdvanced->setChecked(false); + showAdvanced(); +} + + +void WirelessWidget::createActions() +{ + connect(ui->pushButton_wirelessAdvanced, SIGNAL(clicked(bool)), this, SLOT(showAdvanced())); + connect(ui->pushButton_drivers, SIGNAL(clicked(bool)), this, SLOT(addDriver())); + connect(ui->pushButton_freq, SIGNAL(clicked(bool)), this, SLOT(addFreq())); + connect(ui->pushButton_wpaConfigSection, SIGNAL(clicked(bool)), this, SLOT(addOption())); + connect(ui->pushButton_wpaConfig, SIGNAL(clicked(bool)), this, SLOT(selectWpaConfig())); + connect(ui->comboBox_security, SIGNAL(currentIndexChanged(int)), this, SLOT(changeSecurity(int))); +} + + +void WirelessWidget::keyPressEvent(QKeyEvent *pressedKey) +{ + if (pressedKey->key() == Qt::Key_Delete) { + if (ui->listWidget_wpaConfigSection->hasFocus() && + (ui->listWidget_wpaConfigSection->currentItem() != 0)) + delete ui->listWidget_wpaConfigSection->currentItem(); + else if (ui->listWidget_freq->hasFocus() && + (ui->listWidget_freq->currentItem() != 0)) + delete ui->listWidget_freq->currentItem(); + else if (ui->listWidget_drivers->hasFocus() && + (ui->listWidget_drivers->currentItem() != 0)) + delete ui->listWidget_drivers->currentItem(); + } +} + + +void WirelessWidget::addDriver() +{ + QString driver = ui->comboBox_drivers->currentText(); + bool exists = false; + for (int i=0; ilistWidget_drivers->count(); i++) + if (ui->listWidget_drivers->item(i)->text() == driver) + exists = true; + if (!exists) + ui->listWidget_drivers->addItem(driver); +} + + +void WirelessWidget::addFreq() +{ + QString freq = QString(ui->spinBox_freq->value()); + bool exists = false; + for (int i=0; ilistWidget_freq->count(); i++) + if (ui->listWidget_freq->item(i)->text() == freq) + exists = true; + if (!exists) + ui->listWidget_freq->addItem(freq); +} + + +void WirelessWidget::addOption() +{ + if (!ui->lineEdit_wpaConfigSection->text().isEmpty()) + ui->listWidget_wpaConfigSection->addItem(ui->lineEdit_wpaConfigSection->text()); +} + + +void WirelessWidget::changeSecurity(int index) +{ + if (index == 0) { + ui->widget_wpaConfigSection->setHidden(true); + ui->widget_wpaConfig->setHidden(true); + ui->widget_key->setHidden(true); + } + else if ((index == 1) || (index == 2)) { + ui->widget_wpaConfigSection->setHidden(true); + ui->widget_wpaConfig->setHidden(true); + ui->widget_key->setShown(true); + } + else if (index == 3) { + ui->widget_wpaConfigSection->setShown(true); + ui->widget_wpaConfig->setHidden(true); + ui->widget_key->setHidden(true); + } + else if (index == 4) { + ui->widget_wpaConfigSection->setHidden(true); + ui->widget_wpaConfig->setShown(true); + ui->widget_key->setHidden(true); + } +} + + +void WirelessWidget::selectWpaConfig() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("EthernetWidget", "Select wpa configuration file"), + QDir::currentPath(), + QApplication::translate("EthernetWidget", "Configuration files (*.conf)")); + if (!filename.isEmpty()) + ui->lineEdit_wpaConfig->setText(filename); +} + + +void WirelessWidget::showAdvanced() +{ + if (ui->pushButton_wirelessAdvanced->isChecked()) { + ui->widget_wirelessAdvanced->setShown(true); + ui->pushButton_wirelessAdvanced->setText(QApplication::translate("WirelessWidget", "Hide advanced")); + } + else { + ui->widget_wirelessAdvanced->setHidden(true); + ui->pushButton_wirelessAdvanced->setText(QApplication::translate("WirelessWidget", "Show advanced")); + } +} + + +QHash WirelessWidget::getSettings() +{ + QHash wirelessSettings; + + if (isOk() == 0) { +// wirelessSettings[QString("VLANID")] = QString(ui->spinBox_vlan->value()); + clear(); + } + + return wirelessSettings; +} + + +int WirelessWidget::isOk() +{ + // all fine + return 0; +} diff --git a/sources/gui/src/wirelesswidget.h b/sources/gui/src/wirelesswidget.h index 18696c4..8c830bf 100644 --- a/sources/gui/src/wirelesswidget.h +++ b/sources/gui/src/wirelesswidget.h @@ -18,6 +18,7 @@ #ifndef WIRELESSWIDGET_H #define WIRELESSWIDGET_H +#include #include @@ -30,11 +31,28 @@ class WirelessWidget : public QWidget Q_OBJECT public: - explicit WirelessWidget(QWidget *parent = 0); + explicit WirelessWidget(QWidget *parent = 0, + QString rfkillDir = QString("")); ~WirelessWidget(); + QHash getSettings(); + int isOk(); + +public slots: + void clear(); + +private slots: + void addDriver(); + void addFreq(); + void addOption(); + void changeSecurity(int index); + void showAdvanced(); + void selectWpaConfig(); private: + QDir *rfkillDirectory; Ui::WirelessWidget *ui; + void createActions(); + void keyPressEvent(QKeyEvent *pressedKey); }; diff --git a/sources/gui/src/wirelesswidget.ui b/sources/gui/src/wirelesswidget.ui index 455ef91..9184d1a 100644 --- a/sources/gui/src/wirelesswidget.ui +++ b/sources/gui/src/wirelesswidget.ui @@ -7,7 +7,7 @@ 0 0 431 - 760 + 765 @@ -141,10 +141,10 @@ - + - + 150 @@ -157,12 +157,19 @@ - + Path to a wpa_supplicant configuration file + + + + Browse + + + @@ -232,6 +239,9 @@ Show advanced + + true + @@ -504,7 +514,8 @@ lineEdit_wpaConfigSection pushButton_wpaConfigSection listWidget_wpaConfigSection - lineEdit_wpaConfigFile + lineEdit_wpaConfig + pushButton_wpaConfig lineEdit_key checkBox_hidden checkBox_adhoc