diff --git a/sources/gui/src/bridgewidget.cpp b/sources/gui/src/bridgewidget.cpp index 3484989..00bce4c 100644 --- a/sources/gui/src/bridgewidget.cpp +++ b/sources/gui/src/bridgewidget.cpp @@ -40,7 +40,7 @@ void BridgeWidget::clear() } -void BridgeWidget::setShown(bool state) +void BridgeWidget::setShown(const bool state) { if (state) show(); diff --git a/sources/gui/src/bridgewidget.h b/sources/gui/src/bridgewidget.h index d25bd7a..c09d254 100644 --- a/sources/gui/src/bridgewidget.h +++ b/sources/gui/src/bridgewidget.h @@ -38,7 +38,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private: Ui::BridgeWidget *ui; diff --git a/sources/gui/src/errorwindow.cpp b/sources/gui/src/errorwindow.cpp index 68871a1..e40425f 100644 --- a/sources/gui/src/errorwindow.cpp +++ b/sources/gui/src/errorwindow.cpp @@ -32,7 +32,7 @@ ErrorWindow::~ErrorWindow() delete ui; } -void ErrorWindow::setMessage(int mess) +void ErrorWindow::setMessage(const int mess) { QString message; switch(mess) { diff --git a/sources/gui/src/errorwindow.h b/sources/gui/src/errorwindow.h index 3d26ed3..883a041 100644 --- a/sources/gui/src/errorwindow.h +++ b/sources/gui/src/errorwindow.h @@ -30,12 +30,13 @@ class ErrorWindow : public QMainWindow Q_OBJECT public: - explicit ErrorWindow(QWidget *parent = 0, int messageNumber = 0); + explicit ErrorWindow(QWidget *parent = 0, + int messageNumber = 0); ~ErrorWindow(); private: Ui::ErrorWindow *ui; - void setMessage(int mess); + void setMessage(const int mess); }; #endif /* ERRORWINDOW_H */ diff --git a/sources/gui/src/ethernetwidget.cpp b/sources/gui/src/ethernetwidget.cpp index cc70978..b3407eb 100644 --- a/sources/gui/src/ethernetwidget.cpp +++ b/sources/gui/src/ethernetwidget.cpp @@ -54,7 +54,7 @@ void EthernetWidget::clear() } -void EthernetWidget::setShown(bool state) +void EthernetWidget::setShown(const bool state) { if (state) show(); @@ -96,7 +96,7 @@ void EthernetWidget::showAdvanced() } -void EthernetWidget::showWpa(int state) +void EthernetWidget::showWpa(const int state) { if (state == 0) ui->widget_wpa->setHidden(true); diff --git a/sources/gui/src/ethernetwidget.h b/sources/gui/src/ethernetwidget.h index a32f0d4..62f3a5f 100644 --- a/sources/gui/src/ethernetwidget.h +++ b/sources/gui/src/ethernetwidget.h @@ -39,12 +39,12 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: void selectWpaConfig(); void showAdvanced(); - void showWpa(int state); + void showWpa(const int state); private: Ui::EthernetWidget *ui; diff --git a/sources/gui/src/generalwidget.cpp b/sources/gui/src/generalwidget.cpp index 2bd7f94..ee04221 100644 --- a/sources/gui/src/generalwidget.cpp +++ b/sources/gui/src/generalwidget.cpp @@ -21,14 +21,14 @@ #include -GeneralWidget::GeneralWidget(QWidget *parent, QString ifaceDir, QString profileDir) +GeneralWidget::GeneralWidget(QWidget *parent, QMap settings) : QWidget(parent), - ifaceDirectory(new QDir(ifaceDir)), - profileDirectory(new QDir(profileDir)), ui(new Ui::GeneralWidget) { ui->setupUi(this); connectionType = ui->comboBox_connection; + ifaceDirectory = new QDir(settings[QString("IFACE_DIR")]); + profileDirectory = new QDir(settings[QString("PROFILE_DIR")]); createActions(); clear(); } @@ -66,7 +66,7 @@ void GeneralWidget::clear() } -void GeneralWidget::setShown(bool state) +void GeneralWidget::setShown(const bool state) { if (state) show(); diff --git a/sources/gui/src/generalwidget.h b/sources/gui/src/generalwidget.h index 3b4182c..de79cc0 100644 --- a/sources/gui/src/generalwidget.h +++ b/sources/gui/src/generalwidget.h @@ -34,8 +34,7 @@ class GeneralWidget : public QWidget public: explicit GeneralWidget(QWidget *parent = 0, - QString ifaceDir = QString(""), - QString profileDir = QString("")); + QMap settings = QMap()); ~GeneralWidget(); QComboBox *connectionType; QMap getSettings(); @@ -44,7 +43,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: void addAfter(); diff --git a/sources/gui/src/ipwidget.cpp b/sources/gui/src/ipwidget.cpp index 96a47e3..da07923 100644 --- a/sources/gui/src/ipwidget.cpp +++ b/sources/gui/src/ipwidget.cpp @@ -89,7 +89,7 @@ void IpWidget::clear() } -void IpWidget::setShown(bool state) +void IpWidget::setShown(const bool state) { if (state) show(); @@ -168,7 +168,7 @@ void IpWidget::keyPressEvent(QKeyEvent *pressedKey) } -QString IpWidget::getIp(QString rawIp) +QString IpWidget::getIp(const QString rawIp) { QStringList ip = rawIp.split(QString(".")); @@ -190,7 +190,7 @@ QString IpWidget::getIp(QString rawIp) } -QString IpWidget::getPrefix(QString rawPrefix) +QString IpWidget::getPrefix(const QString rawPrefix) { QString prefix; @@ -205,7 +205,7 @@ QString IpWidget::getPrefix(QString rawPrefix) } -QString IpWidget::getIp6(QString rawIp) +QString IpWidget::getIp6(const QString rawIp) { QString ip = rawIp; @@ -216,7 +216,7 @@ QString IpWidget::getIp6(QString rawIp) } -QString IpWidget::getPrefix6(QString rawPrefix) +QString IpWidget::getPrefix6(const QString rawPrefix) { QString prefix; @@ -300,7 +300,7 @@ void IpWidget::addDnsOpt() } -void IpWidget::changeIpMode(QString currentText) +void IpWidget::changeIpMode(const QString currentText) { if (currentText == QString("dhcp")) ui->widget_ip->setHidden(true); @@ -309,7 +309,7 @@ void IpWidget::changeIpMode(QString currentText) } -void IpWidget::ipEnable(int state) +void IpWidget::ipEnable(const int state) { if (state == 0) { ui->comboBox_ip->setDisabled(true); @@ -324,7 +324,7 @@ void IpWidget::ipEnable(int state) } -void IpWidget::changeIp6Mode(QString currentText) +void IpWidget::changeIp6Mode(const QString currentText) { if ((currentText == QString("dhcp")) || (currentText == QString("dhcp-noaddr"))) @@ -335,7 +335,7 @@ void IpWidget::changeIp6Mode(QString currentText) } -void IpWidget::ip6Enable(int state) +void IpWidget::ip6Enable(const int state) { if (state == 0) { ui->comboBox_ip6->setDisabled(true); @@ -350,7 +350,7 @@ void IpWidget::ip6Enable(int state) } -void IpWidget::changeDhcpClient(QString currentText) +void IpWidget::changeDhcpClient(const QString currentText) { if (currentText == QString("dhcpcd")) { ui->widget_dhcpcdOpt->setShown(true); diff --git a/sources/gui/src/ipwidget.h b/sources/gui/src/ipwidget.h index ae23776..58c8f56 100644 --- a/sources/gui/src/ipwidget.h +++ b/sources/gui/src/ipwidget.h @@ -38,7 +38,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: // buttons @@ -50,13 +50,13 @@ private slots: void addDns(); void addDnsOpt(); // ip mode - void changeIpMode(QString currentText); - void ipEnable(int state); + void changeIpMode(const QString currentText); + void ipEnable(const int state); // ipv6 mode - void changeIp6Mode(QString currentText); + void changeIp6Mode(const QString currentText); void ip6Enable(int state); // dhcp client - void changeDhcpClient(QString currentText); + void changeDhcpClient(const QString currentText); void showAdvanced(); private: @@ -64,10 +64,10 @@ private: void createActions(); void createFilter(); void keyPressEvent(QKeyEvent *pressedKey); - QString getIp(QString rawIp); - QString getPrefix(QString rawPrefix); - QString getIp6(QString rawIp); - QString getPrefix6(QString rawPrefix); + QString getIp(const QString rawIp); + QString getPrefix(const QString rawPrefix); + QString getIp6(const QString rawIp); + QString getPrefix6(const QString rawPrefix); }; diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index 849a76a..900c090 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -19,6 +19,7 @@ #include "ui_mainwindow.h" #include +#include #include #include "bridgewidget.h" @@ -31,6 +32,7 @@ #include "netctlprofile.h" #include "passwdwidget.h" #include "pppoewidget.h" +#include "settingswindow.h" #include "tunnelwidget.h" #include "tuntapwidget.h" #include "vlanwidget.h" @@ -39,36 +41,22 @@ #include -MainWindow::MainWindow(QWidget *parent, bool defaultSettings, int tabNum) +MainWindow::MainWindow(QWidget *parent, const bool defaultSettings, const int tabNum) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->tabWidget->setCurrentIndex(tabNum-1); - // SettingsWindow *settingsWindow; - // settingsWindow = new SettingsWindow(this); - // if (defaultSettings) - // стандартные настройки - // delete settingsWindow; - - // temporary block - netctlPath = QString("/usr/bin/netctl"); - profileDir = QString("/etc/netctl"); - sudoPath = QString("/usr/bin/kdesu"); - wpaConfig.append(QString("/usr/bin/wpa_cli")); - wpaConfig.append(QString("/usr/bin/wpa_supplicant")); - 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")); + QString configPath = QDir::homePath() + QDir::separator() + QString(".config") + + QDir::separator() + QString("netctl-gui.conf"); + settingsWin = new SettingsWindow(this, configPath); + if (defaultSettings) + settingsWin->setDefault(); + configuration = settingsWin->getSettings(); // gui - generalWid = new GeneralWidget(this, ifaceDir, profileDir); + generalWid = new GeneralWidget(this, configuration); ui->scrollAreaWidgetContents->layout()->addWidget(generalWid); ipWid = new IpWidget(this); ui->scrollAreaWidgetContents->layout()->addWidget(ipWid); @@ -86,12 +74,12 @@ 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, rfkillDir); + wirelessWid = new WirelessWidget(this, configuration); ui->scrollAreaWidgetContents->layout()->addWidget(wirelessWid); // backend - netctlCommand = new Netctl(this, netctlPath, profileDir, sudoPath); - netctlProfile = new NetctlProfile(this, profileDir, sudoPath); - wpaCommand = new WpaSup(this, wpaConfig, sudoPath, ifaceDir, preferedInterface); + netctlCommand = new Netctl(this, configuration); + netctlProfile = new NetctlProfile(this, configuration); + wpaCommand = new WpaSup(this, configuration); createActions(); updateTabs(ui->tabWidget->currentIndex()); @@ -115,21 +103,23 @@ MainWindow::~MainWindow() delete tuntapWid; delete vlanWid; delete wirelessWid; + + delete settingsWin; delete ui; } -bool MainWindow::checkExternalApps(QString apps = QString("all")) +bool MainWindow::checkExternalApps(const QString apps = QString("all")) { QStringList commandLine; commandLine.append("which"); - commandLine.append(sudoPath); + commandLine.append(configuration[QString("SUDO_PATH")]); if ((apps == QString("netctl")) || (apps == QString("all"))) { - commandLine.append(netctlPath); + commandLine.append(configuration[QString("NETCTL_PATH")]); } if ((apps == QString("wpasup")) || (apps == QString("all"))) { - commandLine.append(wpaConfig[0]); - commandLine.append(wpaConfig[1]); + commandLine.append(configuration[QString("WPACLI_PATH")]); + commandLine.append(configuration[QString("WPASUP_PATH")]); } QProcess command; command.start(commandLine.join(QString(" "))); @@ -141,7 +131,7 @@ bool MainWindow::checkExternalApps(QString apps = QString("all")) } -bool MainWindow::checkState(QString state, QString item) +bool MainWindow::checkState(const QString state, const QString item) { if (item.indexOf(state) > -1) return true; @@ -154,6 +144,7 @@ bool MainWindow::checkState(QString state, QString item) void MainWindow::createActions() { connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int))); + connect(ui->actionSettings, SIGNAL(triggered(bool)), settingsWin, SLOT(showWindow())); connect(ui->actionQuit, SIGNAL(triggered(bool)), this, SLOT(close())); // main page events @@ -415,7 +406,7 @@ void MainWindow::profileTabBrowseProfile() } -void MainWindow::profileTabChangeState(QString current) +void MainWindow::profileTabChangeState(const QString current) { if (current == QString("ethernet")) { generalWid->setShown(true); @@ -806,7 +797,7 @@ void MainWindow::profileTabLoadProfile() // wifi tab slots -void MainWindow::wifiTabSetEnabled(bool state) +void MainWindow::wifiTabSetEnabled(const bool state) { if (state) { ui->tableWidget_wifi->show(); @@ -822,7 +813,7 @@ void MainWindow::wifiTabSetEnabled(bool state) } -void MainWindow::connectToUnknownEssid(QString passwd) +void MainWindow::connectToUnknownEssid(const QString passwd) { if (!passwd.isEmpty()) delete passwdWid; diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index 6ea7867..556836d 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -33,6 +33,7 @@ class Netctl; class NetctlProfile; class PasswdWidget; class PppoeWidget; +class SettingsWindow; class TunnelWidget; class TuntapWidget; class VlanWidget; @@ -49,25 +50,17 @@ class MainWindow : public QMainWindow public: explicit MainWindow(QWidget *parent = 0, - bool defaultSettings = false, - int tabNum = 0); + const bool defaultSettings = false, + const int tabNum = 0); ~MainWindow(); Netctl *netctlCommand; NetctlProfile *netctlProfile; WpaSup *wpaCommand; - enum wpaConfigIndex { - wpaCliPath = 0, - wpaSupplicantPath = 1, - wpaPidPath = 2, - wpadSupDrivers = 3, - wpaConfDir = 4, - wpaConfGroup = 5 - }; public slots: void updateTabs(const int tab); // wifi tab slots - void connectToUnknownEssid(QString passwd); + void connectToUnknownEssid(const QString passwd); private slots: void updateMainTab(); @@ -80,12 +73,12 @@ private slots: void mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous); // profile tab slots void profileTabBrowseProfile(); - void profileTabChangeState(QString current); + void profileTabChangeState(const QString current); void profileTabClear(); void profileTabCreateProfile(); void profileTabLoadProfile(); // wifi tab slots - void wifiTabSetEnabled(bool state); + void wifiTabSetEnabled(const bool state); void wifiTabStart(); void wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous); @@ -105,17 +98,12 @@ private: // backend ErrorWindow *errorWin; PasswdWidget *passwdWid; - bool checkExternalApps(QString apps); - bool checkState(QString state, QString item); + SettingsWindow *settingsWin; + bool checkExternalApps(const QString apps); + bool checkState(const QString state, const QString item); void createActions(); // configuration - QString ifaceDir; - QString netctlPath; - QString preferedInterface; - QString profileDir; - QString rfkillDir; - QString sudoPath; - QStringList wpaConfig; + QMap configuration; }; diff --git a/sources/gui/src/mobilewidget.cpp b/sources/gui/src/mobilewidget.cpp index 9be26a3..5b52b21 100644 --- a/sources/gui/src/mobilewidget.cpp +++ b/sources/gui/src/mobilewidget.cpp @@ -56,7 +56,7 @@ void MobileWidget::clear() } -void MobileWidget::setShown(bool state) +void MobileWidget::setShown(const bool state) { if (state) show(); diff --git a/sources/gui/src/mobilewidget.h b/sources/gui/src/mobilewidget.h index cbeb60e..0d5298b 100644 --- a/sources/gui/src/mobilewidget.h +++ b/sources/gui/src/mobilewidget.h @@ -38,7 +38,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: void selectOptionsFile(); diff --git a/sources/gui/src/netctlinteract.cpp b/sources/gui/src/netctlinteract.cpp index 77d0904..297a016 100644 --- a/sources/gui/src/netctlinteract.cpp +++ b/sources/gui/src/netctlinteract.cpp @@ -23,13 +23,12 @@ #include "mainwindow.h" -Netctl::Netctl(MainWindow *wid, QString netctlPath, QString profileDir, QString sudoPath) - : parent(wid), - netctlCommand(netctlPath), - profileDirectory(new QDir(profileDir)), - sudoCommand(sudoPath) +Netctl::Netctl(MainWindow *wid, QMap settings) + : parent(wid) { - + netctlCommand = settings[QString("NETCTL_PATH")]; + profileDirectory = new QDir(settings[QString("PROFILE_DIR")]); + sudoCommand = settings[QString("SUDO_PATH")]; } @@ -58,7 +57,7 @@ QList Netctl::getProfileList() } -QStringList Netctl::getProfileDescriptions(QStringList profileList) +QStringList Netctl::getProfileDescriptions(const QStringList profileList) { QStringList descriptions; @@ -88,7 +87,7 @@ QStringList Netctl::getProfileDescriptions(QStringList profileList) } -QStringList Netctl::getProfileStatuses(QStringList profileList) +QStringList Netctl::getProfileStatuses(const QStringList profileList) { QStringList statuses; @@ -109,7 +108,7 @@ QStringList Netctl::getProfileStatuses(QStringList profileList) } -QString Netctl::getSsidFromProfile(QString profile) +QString Netctl::getSsidFromProfile(const QString profile) { QString ssidName = QString(""); QFile profileFile(profileDirectory->absolutePath() + QDir::separator() + profile); @@ -136,7 +135,7 @@ QString Netctl::getSsidFromProfile(QString profile) } -bool Netctl::isProfileActive(QString profile) +bool Netctl::isProfileActive(const QString profile) { bool status = false; QProcess command; @@ -153,7 +152,7 @@ bool Netctl::isProfileActive(QString profile) } -bool Netctl::isProfileEnabled(QString profile) +bool Netctl::isProfileEnabled(const QString profile) { bool status = false; QProcess command; @@ -175,7 +174,7 @@ bool Netctl::isProfileEnabled(QString profile) // functions -bool Netctl::enableProfile(QString profile) +bool Netctl::enableProfile(const QString profile) { QProcess command; if (isProfileEnabled(profile)) @@ -190,7 +189,7 @@ bool Netctl::enableProfile(QString profile) } -bool Netctl::restartProfile(QString profile) +bool Netctl::restartProfile(const QString profile) { QProcess command; if (isProfileActive(profile)) @@ -203,7 +202,7 @@ bool Netctl::restartProfile(QString profile) } -bool Netctl::startProfile(QString profile) +bool Netctl::startProfile(const QString profile) { QProcess command; if (isProfileActive(profile)) diff --git a/sources/gui/src/netctlinteract.h b/sources/gui/src/netctlinteract.h index a8b826b..8b2c1cd 100644 --- a/sources/gui/src/netctlinteract.h +++ b/sources/gui/src/netctlinteract.h @@ -19,6 +19,7 @@ #define NETCTLINTERACT_H #include +#include #include @@ -30,23 +31,21 @@ class Netctl : public QObject public: explicit Netctl(MainWindow *wid = 0, - QString netctlPath = QString(""), - QString profileDir = QString(""), - QString sudoPath = QString("")); + QMap settings = QMap()); ~Netctl(); // general information QList getProfileList(); - QStringList getProfileDescriptions(QStringList profileList); - QStringList getProfileStatuses(QStringList profileList); - QString getSsidFromProfile(QString profile); - bool isProfileActive(QString profile); - bool isProfileEnabled(QString profile); + QStringList getProfileDescriptions(const QStringList profileList); + QStringList getProfileStatuses(const QStringList profileList); + QString getSsidFromProfile(const QString profile); + bool isProfileActive(const QString profile); + bool isProfileEnabled(const QString profile); public slots: // functions - bool enableProfile(QString profile); - bool restartProfile(QString profile); - bool startProfile(QString profile); + bool enableProfile(const QString profile); + bool restartProfile(const QString profile); + bool startProfile(const QString profile); private: MainWindow *parent; diff --git a/sources/gui/src/netctlprofile.cpp b/sources/gui/src/netctlprofile.cpp index ac331c6..388df81 100644 --- a/sources/gui/src/netctlprofile.cpp +++ b/sources/gui/src/netctlprofile.cpp @@ -26,12 +26,11 @@ #include -NetctlProfile::NetctlProfile(MainWindow *wid, QString profileDir, QString sudoPath) - : parent(wid), - profileDirectory(new QDir(profileDir)), - sudoCommand(sudoPath) +NetctlProfile::NetctlProfile(MainWindow *wid, QMap settings) + : parent(wid) { - + profileDirectory = new QDir(settings[QString("PROFILE_DIR")]); + sudoCommand = settings[QString("SUDO_PATH")]; } @@ -41,7 +40,7 @@ NetctlProfile::~NetctlProfile() } -bool NetctlProfile::copyProfile(QString oldPath) +bool NetctlProfile::copyProfile(const QString oldPath) { QString newPath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(oldPath).fileName(); QProcess command; @@ -54,7 +53,7 @@ bool NetctlProfile::copyProfile(QString oldPath) } -QString NetctlProfile::createProfile(QString profile, QMap settings) +QString NetctlProfile::createProfile(const QString profile, const QMap settings) { QString profileTempName = QDir::homePath() + QDir::separator() + @@ -88,7 +87,7 @@ QString NetctlProfile::createProfile(QString profile, QMap set } -QMap NetctlProfile::getSettingsFromProfile(QString profile) +QMap NetctlProfile::getSettingsFromProfile(const QString profile) { QMap settings; QFile profileFile; diff --git a/sources/gui/src/netctlprofile.h b/sources/gui/src/netctlprofile.h index 187699c..af057a2 100644 --- a/sources/gui/src/netctlprofile.h +++ b/sources/gui/src/netctlprofile.h @@ -19,6 +19,7 @@ #define NETCTLPROFILE_H #include +#include #include @@ -30,12 +31,11 @@ class NetctlProfile : public QObject public: explicit NetctlProfile(MainWindow *wid = 0, - QString profileDir = QString(""), - QString sudoPath = QString("")); + QMap settings = QMap()); ~NetctlProfile(); - bool copyProfile(QString oldPath); - QString createProfile(QString profile, QMap settings); - QMap getSettingsFromProfile(QString profile); + bool copyProfile(const QString oldPath); + QString createProfile(const QString profile, const QMap settings); + QMap getSettingsFromProfile(const QString profile); private: MainWindow *parent; diff --git a/sources/gui/src/passwdwidget.cpp b/sources/gui/src/passwdwidget.cpp index dd8623c..43f431d 100644 --- a/sources/gui/src/passwdwidget.cpp +++ b/sources/gui/src/passwdwidget.cpp @@ -27,8 +27,8 @@ PasswdWidget::PasswdWidget(MainWindow *wid) ui(new Ui::PasswdWidget) { ui->setupUi(this); - okButton = ui->buttonBox->button(QDialogButtonBox::Ok); cancelButton = ui->buttonBox->button(QDialogButtonBox::Cancel); + okButton = ui->buttonBox->button(QDialogButtonBox::Ok); createActions(); } diff --git a/sources/gui/src/pppoewidget.cpp b/sources/gui/src/pppoewidget.cpp index e84ee7f..7089c5a 100644 --- a/sources/gui/src/pppoewidget.cpp +++ b/sources/gui/src/pppoewidget.cpp @@ -65,7 +65,7 @@ void PppoeWidget::clear() } -void PppoeWidget::setShown(bool state) +void PppoeWidget::setShown(const bool state) { if (state) show(); @@ -91,7 +91,7 @@ void PppoeWidget::createActions() } -void PppoeWidget::changeMode(QString currentText) +void PppoeWidget::changeMode(const QString currentText) { if (currentText == QString("persist")) ui->widget_timeout->setHidden(true); diff --git a/sources/gui/src/pppoewidget.h b/sources/gui/src/pppoewidget.h index df0ecf4..e17805a 100644 --- a/sources/gui/src/pppoewidget.h +++ b/sources/gui/src/pppoewidget.h @@ -38,10 +38,10 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: - void changeMode(QString currentText); + void changeMode(const QString currentText); void selectOptionsFile(); void showAdvanced(); diff --git a/sources/gui/src/settingswindow.cpp b/sources/gui/src/settingswindow.cpp index c614407..6aa98fb 100644 --- a/sources/gui/src/settingswindow.cpp +++ b/sources/gui/src/settingswindow.cpp @@ -18,16 +18,261 @@ #include "settingswindow.h" #include "ui_settingswindow.h" +#include +#include +#include -SettingsWindow::SettingsWindow(QWidget *parent) - : QMainWindow(parent), +#include "mainwindow.h" +#include + + +SettingsWindow::SettingsWindow(MainWindow *wid, QString configFile) + : QMainWindow(wid), + parent(wid), + file(configFile), ui(new Ui::SettingsWindow) { ui->setupUi(this); + cancelButton = ui->buttonBox->button(QDialogButtonBox::Cancel); + defaultButton = ui->buttonBox->button(QDialogButtonBox::Reset); + okButton = ui->buttonBox->button(QDialogButtonBox::Ok); + ui->comboBox_language->addItem(QString("english")); + ui->comboBox_language->addItem(QString("russian")); + createActions(); } SettingsWindow::~SettingsWindow() { + delete cancelButton; + delete defaultButton; + delete okButton; delete ui; } + + +void SettingsWindow::createActions() +{ + connect(ui->comboBox_language, SIGNAL(currentIndexChanged(int)), ui->label_info, SLOT(show())); + connect(cancelButton, SIGNAL(clicked(bool)), this, SLOT(close())); + connect(defaultButton, SIGNAL(clicked(bool)), this, SLOT(setDefault())); + connect(okButton, SIGNAL(clicked(bool)), this, SLOT(saveSettings())); + connect(okButton, SIGNAL(clicked(bool)), this, SLOT(close())); + // buttons + connect(ui->pushButton_interfaceDir, SIGNAL(clicked(bool)), SLOT(selectIfaceDir())); + connect(ui->pushButton_netctlPath, SIGNAL(clicked(bool)), SLOT(selectNetctlPath())); + connect(ui->pushButton_profilePath, SIGNAL(clicked(bool)), SLOT(selectProfileDir())); + connect(ui->pushButton_rfkill, SIGNAL(clicked(bool)), SLOT(selectRfkillDir())); + connect(ui->pushButton_sudo, SIGNAL(clicked(bool)), SLOT(selectSudoPath())); + connect(ui->pushButton_wpaCliPath, SIGNAL(clicked(bool)), SLOT(selectWpaCliPath())); + connect(ui->pushButton_wpaSupPath, SIGNAL(clicked(bool)), SLOT(selectWpaSupPath())); +} + + +// ESC press event +void SettingsWindow::keyPressEvent(QKeyEvent *pressedKey) +{ + if (pressedKey->key() == Qt::Key_Escape) + close(); +} + + +void SettingsWindow::saveSettings() +{ + QMap settings = readSettings(); + QFile configFile(file); + + if (!configFile.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + QTextStream out(&configFile); + for (int i=0; ilineEdit_interfacesDir->setText(directory); +} + + +void SettingsWindow::selectNetctlPath() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("SettingsWindow", "Select netctl command"), + QString("/usr/bin/"), + QApplication::translate("SettingsWindow", "All files (*)")); + if (!filename.isEmpty()) + ui->lineEdit_netctlPath->setText(filename); +} + + +void SettingsWindow::selectProfileDir() +{ + QString directory = QFileDialog::getExistingDirectory( + this, + QApplication::translate("SettingsWindow", "Select path to profile directory"), + QString("/etc/")); + if (!directory.isEmpty()) + ui->lineEdit_profilePath->setText(directory); +} + + +void SettingsWindow::selectRfkillDir() +{ + QString directory = QFileDialog::getExistingDirectory( + this, + QApplication::translate("SettingsWindow", "Select path to directory with rfkill devices"), + QString("/sys/")); + if (!directory.isEmpty()) + ui->lineEdit_rfkill->setText(directory); +} + + +void SettingsWindow::selectSudoPath() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("SettingsWindow", "Select sudo command"), + QString("/usr/bin/"), + QApplication::translate("SettingsWindow", "All files (*)")); + if (!filename.isEmpty()) + ui->lineEdit_sudo->setText(filename); +} + + +void SettingsWindow::selectWpaCliPath() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("SettingsWindow", "Select wpa_cli command"), + QString("/usr/bin/"), + QApplication::translate("SettingsWindow", "All files (*)")); + if (!filename.isEmpty()) + ui->lineEdit_wpaCliPath->setText(filename); +} + + +void SettingsWindow::selectWpaSupPath() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("SettingsWindow", "Select wpa_supplicant command"), + QString("/usr/bin/"), + QApplication::translate("SettingsWindow", "All files (*)")); + if (!filename.isEmpty()) + ui->lineEdit_wpaSupPath->setText(filename); +} + + +void SettingsWindow::showWindow() +{ + setSettings(getSettings()); + ui->label_info->hide(); + show(); +} + + +QMap SettingsWindow::readSettings() +{ + QMap settings; + + settings[QString("CTRL_DIR")] = ui->lineEdit_wpaDir->text(); + settings[QString("CTRL_GROUP")] = ui->lineEdit_wpaGroup->text(); + settings[QString("IFACE_DIR")] = ui->lineEdit_interfacesDir->text(); + settings[QString("LANGUAGE")] = ui->comboBox_language->currentText(); + settings[QString("NETCTL_PATH")] = ui->lineEdit_netctlPath->text(); + settings[QString("PID_FILE")] = ui->lineEdit_pid->text(); + settings[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text(); + settings[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text(); + settings[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text(); + settings[QString("SUDO_PATH")] = ui->lineEdit_sudo->text(); + settings[QString("WPA_DRIVERS")] = ui->lineEdit_wpaSupDrivers->text(); + settings[QString("WPACLI_PATH")] = ui->lineEdit_wpaCliPath->text(); + settings[QString("WPASUP_PATH")] = ui->lineEdit_wpaSupPath->text(); + + return settings; +} + + +void SettingsWindow::setSettings(QMap settings) +{ + ui->lineEdit_wpaDir->setText(settings[QString("CTRL_DIR")]); + ui->lineEdit_wpaGroup->setText(settings[QString("CTRL_GROUP")]); + ui->lineEdit_interfacesDir->setText(settings[QString("IFACE_DIR")]); + ui->comboBox_language->setCurrentIndex(0); + for (int i=0; icomboBox_language->count(); i++) + if (ui->comboBox_language->itemText(i) == settings[QString("LANGUAGE")]) + ui->comboBox_language->setCurrentIndex(i); + ui->lineEdit_netctlPath->setText(settings[QString("NETCTL_PATH")]); + ui->lineEdit_pid->setText(settings[QString("PID_FILE")]); + ui->lineEdit_interface->setText(settings[QString("PREFERED_IFACE")]); + ui->lineEdit_profilePath->setText(settings[QString("PROFILE_DIR")]); + ui->lineEdit_rfkill->setText(settings[QString("RFKILL_DIR")]); + ui->lineEdit_sudo->setText(settings[QString("SUDO_PATH")]); + ui->lineEdit_wpaSupDrivers->setText(settings[QString("WPA_DRIVERS")]); + ui->lineEdit_wpaCliPath->setText(settings[QString("WPACLI_PATH")]); + ui->lineEdit_wpaSupPath->setText(settings[QString("WPASUP_PATH")]); +} + + +QMap SettingsWindow::getDefault() +{ + QMap settings; + + settings[QString("CTRL_DIR")] = QString("/run/wpa_supplicant_netctl-gui"); + settings[QString("CTRL_GROUP")] = QString("users"); + settings[QString("IFACE_DIR")] = QString("/sys/class/net/"); + settings[QString("LANGUAGE")] = QString("english"); + settings[QString("NETCTL_PATH")] = QString("/usr/bin/netctl"); + settings[QString("PID_FILE")] = QString("/run/wpa_supplicant_netctl-gui.pid"); + settings[QString("PREFERED_IFACE")] = QString(""); + settings[QString("PROFILE_DIR")] = QString("/etc/netctl/"); + settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/"); + settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu"); + settings[QString("WPA_DRIVERS")] = QString("nl80211,wext"); + settings[QString("WPACLI_PATH")] = QString("/usr/bin/wpa_cli"); + settings[QString("WPASUP_PATH")] = QString("/usr/bin/wpa_supplicant"); + + return settings; +} + + +QMap SettingsWindow::getSettings() +{ + QMap settings; + QFile configFile(file); + QString fileStr; + + if (!configFile.open(QIODevice::ReadOnly)) + return getDefault(); + while (true) { + fileStr = QString(configFile.readLine()); + if (configFile.atEnd()) + break; + else if (fileStr[0] != '#') { + if (fileStr.indexOf(QString("=")) > -1) + settings[fileStr.split(QString("="))[0]] = fileStr.split(QString("="))[1] + .remove(QString(" ")) + .trimmed(); + } + } + + configFile.close(); + + return settings; +} diff --git a/sources/gui/src/settingswindow.h b/sources/gui/src/settingswindow.h index a18accf..fc3d26b 100644 --- a/sources/gui/src/settingswindow.h +++ b/sources/gui/src/settingswindow.h @@ -18,9 +18,13 @@ #ifndef SETTINGSWINDOW_H #define SETTINGSWINDOW_H +#include #include +#include +class MainWindow; + namespace Ui { class SettingsWindow; } @@ -30,11 +34,39 @@ class SettingsWindow : public QMainWindow Q_OBJECT public: - explicit SettingsWindow(QWidget *parent = 0); + explicit SettingsWindow(MainWindow *wid = 0, + QString configFile = QString("")); ~SettingsWindow(); + QMap getDefault(); + QMap getSettings(); + +public slots: + void setDefault(); + void showWindow(); + +private slots: + void saveSettings(); + // buttons + void selectIfaceDir(); + void selectNetctlPath(); + void selectProfileDir(); + void selectRfkillDir(); + void selectSudoPath(); + void selectWpaCliPath(); + void selectWpaSupPath(); private: + MainWindow *parent; + QString file; Ui::SettingsWindow *ui; + QPushButton *cancelButton; + QPushButton *defaultButton; + QPushButton *okButton; + void createActions(); + // ESC pressed event + void keyPressEvent(QKeyEvent *pressedKey); + QMap readSettings(); + void setSettings(QMap settings); }; diff --git a/sources/gui/src/settingswindow.ui b/sources/gui/src/settingswindow.ui index 6396893..367234c 100644 --- a/sources/gui/src/settingswindow.ui +++ b/sources/gui/src/settingswindow.ui @@ -490,7 +490,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset diff --git a/sources/gui/src/tunnelwidget.cpp b/sources/gui/src/tunnelwidget.cpp index 8177abd..5eaba93 100644 --- a/sources/gui/src/tunnelwidget.cpp +++ b/sources/gui/src/tunnelwidget.cpp @@ -43,7 +43,7 @@ void TunnelWidget::clear() } -void TunnelWidget::setShown(bool state) +void TunnelWidget::setShown(const bool state) { if (state) show(); @@ -61,7 +61,7 @@ void TunnelWidget::createFilter() } -QString TunnelWidget::getIp(QString rawIp) +QString TunnelWidget::getIp(const QString rawIp) { QStringList ip = rawIp.split(QString(".")); diff --git a/sources/gui/src/tunnelwidget.h b/sources/gui/src/tunnelwidget.h index d4f6c82..69bc1f8 100644 --- a/sources/gui/src/tunnelwidget.h +++ b/sources/gui/src/tunnelwidget.h @@ -38,12 +38,12 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private: Ui::TunnelWidget *ui; void createFilter(); - QString getIp(QString rawIp); + QString getIp(const QString rawIp); }; diff --git a/sources/gui/src/tuntapwidget.cpp b/sources/gui/src/tuntapwidget.cpp index 5d79dec..4c4f52e 100644 --- a/sources/gui/src/tuntapwidget.cpp +++ b/sources/gui/src/tuntapwidget.cpp @@ -42,7 +42,7 @@ void TuntapWidget::clear() } -void TuntapWidget::setShown(bool state) +void TuntapWidget::setShown(const bool state) { if (state) show(); diff --git a/sources/gui/src/tuntapwidget.h b/sources/gui/src/tuntapwidget.h index e837566..2e1f000 100644 --- a/sources/gui/src/tuntapwidget.h +++ b/sources/gui/src/tuntapwidget.h @@ -38,7 +38,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private: Ui::TuntapWidget *ui; diff --git a/sources/gui/src/vlanwidget.cpp b/sources/gui/src/vlanwidget.cpp index 9c7dc63..bc1b10d 100644 --- a/sources/gui/src/vlanwidget.cpp +++ b/sources/gui/src/vlanwidget.cpp @@ -40,7 +40,7 @@ void VlanWidget::clear() } -void VlanWidget::setShown(bool state) +void VlanWidget::setShown(const bool state) { if (state) show(); diff --git a/sources/gui/src/vlanwidget.h b/sources/gui/src/vlanwidget.h index 540938b..87f12a6 100644 --- a/sources/gui/src/vlanwidget.h +++ b/sources/gui/src/vlanwidget.h @@ -38,7 +38,7 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private: Ui::VlanWidget *ui; diff --git a/sources/gui/src/wirelesswidget.cpp b/sources/gui/src/wirelesswidget.cpp index d765707..3a7ff0d 100644 --- a/sources/gui/src/wirelesswidget.cpp +++ b/sources/gui/src/wirelesswidget.cpp @@ -23,12 +23,12 @@ #include -WirelessWidget::WirelessWidget(QWidget *parent, QString rfkillDir) +WirelessWidget::WirelessWidget(QWidget *parent, QMap settings) : QWidget(parent), - rfkillDirectory(new QDir(rfkillDir)), ui(new Ui::WirelessWidget) { ui->setupUi(this); + rfkillDirectory = new QDir(settings[QString("RFKILL_DIR")]); createActions(); clear(); } @@ -83,7 +83,7 @@ void WirelessWidget::clear() } -void WirelessWidget::setShown(bool state) +void WirelessWidget::setShown(const bool state) { if (state) show(); @@ -150,7 +150,7 @@ void WirelessWidget::addOption() } -void WirelessWidget::changeSecurity(QString currentText) +void WirelessWidget::changeSecurity(const QString currentText) { if (currentText == QString("none")) { ui->widget_essid->setShown(true); diff --git a/sources/gui/src/wirelesswidget.h b/sources/gui/src/wirelesswidget.h index 69a6c20..d935f0f 100644 --- a/sources/gui/src/wirelesswidget.h +++ b/sources/gui/src/wirelesswidget.h @@ -19,6 +19,7 @@ #define WIRELESSWIDGET_H #include +#include #include @@ -32,7 +33,7 @@ class WirelessWidget : public QWidget public: explicit WirelessWidget(QWidget *parent = 0, - QString rfkillDir = QString("")); + QMap settings = QMap()); ~WirelessWidget(); QMap getSettings(); int isOk(); @@ -40,13 +41,13 @@ public: public slots: void clear(); - void setShown(bool state); + void setShown(const bool state); private slots: void addDriver(); void addFreq(); void addOption(); - void changeSecurity(QString currentText); + void changeSecurity(const QString currentText); void showAdvanced(); void selectWpaConfig(); diff --git a/sources/gui/src/wpasupinteract.cpp b/sources/gui/src/wpasupinteract.cpp index 7be512c..4fa1e66 100644 --- a/sources/gui/src/wpasupinteract.cpp +++ b/sources/gui/src/wpasupinteract.cpp @@ -24,15 +24,21 @@ #include "sleepthread.h" -WpaSup::WpaSup(MainWindow *wid, QStringList wpaConfig, QString sudoPath, QString ifaceDir, QString preferedInterface) - : parent(wid), - wpaConf(wpaConfig), - sudoCommand(sudoPath), - ifaceDirectory(new QDir(ifaceDir)), - mainInterface(preferedInterface) +WpaSup::WpaSup(MainWindow *wid, QMap settings) + : parent(wid) { + ctrlDir = settings[QString("CTRL_DIR")]; + ctrlGroup = settings[QString("CTRL_GROUP")]; + ifaceDirectory = new QDir(settings[QString("IFACE_DIR")]); + mainInterface = settings[QString("PREFERED_IFACE")]; + pidFile = settings[QString("PID_FILE")]; + sudoCommand = settings[QString("SUDO_PATH")]; + wpaCliPath = settings[QString("WPACLI_PATH")]; + wpaDrivers = settings[QString("WPA_DRIVERS")]; + wpaSupPath = settings[QString("WPASUP_PATH")]; + // terminate old loaded profile - if (QFile(wpaConf[2]).exists() || QDir(wpaConf[4]).exists()) + if (QFile(pidFile).exists() || QDir(ctrlDir).exists()) stopWpaSupplicant(); } @@ -62,12 +68,12 @@ QStringList WpaSup::getInterfaceList() // functions -bool WpaSup::wpaCliCall(QString commandLine) +bool WpaSup::wpaCliCall(const QString commandLine) { QString interface = getInterfaceList()[0]; QProcess command; - command.start(wpaConf[0] + QString(" -i ") + interface + QString(" -p ") + wpaConf[4] + - QString(" -P ") + wpaConf[2] + QString(" ") + commandLine); + command.start(wpaCliPath + QString(" -i ") + interface + QString(" -p ") + ctrlDir + + QString(" -P ") + pidFile + QString(" ") + commandLine); command.waitForFinished(-1); SleepThread::sleep(1); if (command.exitCode() == 0) @@ -77,18 +83,18 @@ bool WpaSup::wpaCliCall(QString commandLine) } -QString WpaSup::getWpaCliOutput(QString commandLine) +QString WpaSup::getWpaCliOutput(const QString commandLine) { QString interface = getInterfaceList()[0]; QProcess command; - command.start(wpaConf[0] + QString(" -i ") + interface + QString(" -p ") + wpaConf[4] + - QString(" -P ") + wpaConf[2] + QString(" ") + commandLine); + command.start(wpaCliPath + QString(" -i ") + interface + QString(" -p ") + ctrlDir + + QString(" -P ") + pidFile + QString(" ") + commandLine); command.waitForFinished(-1); return command.readAllStandardOutput(); } -bool WpaSup::isProfileActive(QString profile) +bool WpaSup::isProfileActive(const QString profile) { QString profileFile; QList profileList = parent->netctlCommand->getProfileList(); @@ -99,7 +105,7 @@ bool WpaSup::isProfileActive(QString profile) } -bool WpaSup::isProfileExists(QString profile) +bool WpaSup::isProfileExists(const QString profile) { bool exists = false; QList profileList = parent->netctlCommand->getProfileList(); @@ -110,7 +116,7 @@ bool WpaSup::isProfileExists(QString profile) } -QString WpaSup::existentProfile(QString profile) +QString WpaSup::existentProfile(const QString profile) { QString profileFile = QString(""); QList profileList = parent->netctlCommand->getProfileList(); @@ -123,12 +129,12 @@ QString WpaSup::existentProfile(QString profile) bool WpaSup::startWpaSupplicant() { - if (!QFile(wpaConf[2]).exists()) { + if (!QFile(pidFile).exists()) { QString interface = getInterfaceList()[0]; QProcess command; - command.start(sudoCommand + QString(" ") + wpaConf[1] + QString(" -B -P ") + wpaConf[2] + - QString(" -i ") + interface + QString(" -D ") + wpaConf[3] + - QString(" -C \"DIR=") + wpaConf[4] + QString(" GROUP=") + wpaConf[5]); + command.start(sudoCommand + QString(" ") + wpaSupPath + QString(" -B -P ") + pidFile + + QString(" -i ") + interface + QString(" -D ") + wpaDrivers + + QString(" -C \"DIR=") + ctrlDir + QString(" GROUP=") + ctrlGroup); command.waitForFinished(-1); SleepThread::sleep(1); if (command.exitCode() != 0) diff --git a/sources/gui/src/wpasupinteract.h b/sources/gui/src/wpasupinteract.h index 00aeac9..e281a9c 100644 --- a/sources/gui/src/wpasupinteract.h +++ b/sources/gui/src/wpasupinteract.h @@ -19,6 +19,7 @@ #define WPASUPINTERACT_H #include +#include #include @@ -30,19 +31,16 @@ class WpaSup : public QObject public: explicit WpaSup(MainWindow *wid = 0, - QStringList wpaConfig = QStringList(), - QString sudoPath = QString(""), - QString ifaceDir = QString(""), - QString preferedInterface = QString("")); + QMap settings = QMap()); ~WpaSup(); // general information QStringList getInterfaceList(); // functions - bool wpaCliCall(QString commandLine); - QString getWpaCliOutput(QString commandLine); - bool isProfileExists(QString profile); - QString existentProfile(QString profile); - bool isProfileActive(QString profile); + bool wpaCliCall(const QString commandLine); + QString getWpaCliOutput(const QString commandLine); + bool isProfileExists(const QString profile); + QString existentProfile(const QString profile); + bool isProfileActive(const QString profile); public slots: // functions @@ -52,10 +50,15 @@ public slots: private: MainWindow *parent; - QStringList wpaConf; - QString sudoCommand; + QString ctrlDir; + QString ctrlGroup; QDir *ifaceDirectory; QString mainInterface; + QString pidFile; + QString sudoCommand; + QString wpaCliPath; + QString wpaDrivers; + QString wpaSupPath; };