diff --git a/sources/gui/src/mainactions.cpp b/sources/gui/src/mainactions.cpp new file mode 100644 index 0000000..8867751 --- /dev/null +++ b/sources/gui/src/mainactions.cpp @@ -0,0 +1,1020 @@ +/*************************************************************************** + * This file is part of netctl-gui * + * * + * netctl-gui is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * netctl-gui is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with netctl-gui. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + +#include "mainwindow.h" +#include "ui_mainwindow.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "aboutwindow.h" +#include "bridgewidget.h" +#include "errorwindow.h" +#include "ethernetwidget.h" +#include "generalwidget.h" +#include "ipwidget.h" +#include "language.h" +#include "macvlanwidget.h" +#include "mobilewidget.h" +#include "netctlautowindow.h" +#include "netctlguiadaptor.h" +#include "passwdwidget.h" +#include "pppoewidget.h" +#include "settingswindow.h" +#include "taskadds.h" +#include "trayicon.h" +#include "tunnelwidget.h" +#include "tuntapwidget.h" +#include "version.h" +#include "vlanwidget.h" +#include "wirelesswidget.h" + + +void MainWindow::keyPressEvent(QKeyEvent *pressedKey) +{ + if (debug) qDebug() << "[MainWindow]" << "[keyPressEvent]"; + + if (pressedKey->key() == Qt::Key_Return) + if (ui->comboBox_profile->hasFocus()) + profileTabLoadProfile(); +} + + +void MainWindow::closeEvent(QCloseEvent *event) +{ + if (debug) qDebug() << "[MainWindow]" << "[closeEvent]"; + + if ((QSystemTrayIcon::isSystemTrayAvailable()) && + (configuration[QString("SYSTRAY")] == QString("true"))) { + hide(); + event->ignore(); + } + else + closeMainWindow(); +} + + +void MainWindow::closeMainWindow() +{ + if (debug) qDebug() << "[MainWindow]" << "[closeMainWindow]"; + + qApp->quit(); +} + + +void MainWindow::showAboutWindow() +{ + if (debug) qDebug() << "[MainWindow]" << "[showAboutWindow]"; + + aboutWin->show(); +} + + +void MainWindow::showMainWindow() +{ + if (debug) qDebug() << "[MainWindow]" << "[showMainWindow]"; + + if (isHidden()) { + updateTabs(ui->tabWidget->currentIndex()); + show(); + } + else + hide(); +} + + +void MainWindow::showNetctlAutoWindow() +{ + if (debug) qDebug() << "[MainWindow]" << "[showNetctlAutoWindow]"; + + netctlAutoWin->showWindow(); +} + + +void MainWindow::showSettingsWindow() +{ + if (debug) qDebug() << "[MainWindow]" << "[showSettingsWindow]"; + + settingsWin->showWindow(); +} + + +bool MainWindow::forceStartHelper() +{ + if (debug) qDebug() << "[MainWindow]" << "[forceStartHelper]"; + if (!checkExternalApps(QString("helper"))) { + errorWin->showWindow(1, QString("[MainWindow] : [forceStartHelper]")); + return false; + } + + QString cmd = configuration[QString("HELPER_PATH")] + QString(" -c ") + configPath; + if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]" << ":" << "Run cmd" << cmd; + TaskResult process = runTask(cmd, false); + if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]" << ":" << "Cmd returns" << process.exitCode; + + return isHelperActive(); +} + + +bool MainWindow::forceStopHelper() +{ + if (debug) qDebug() << "[MainWindow]" << "[forceStartHelper]"; + + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CONTROL_PATH, + DBUS_HELPER_INTERFACE, QString("Close")); + + if (responce.size() == 1) + return true; + else + return false; +} + + +bool MainWindow::startHelper() +{ + if (debug) qDebug() << "[MainWindow]" << "[startHelper]"; + + if (isHelperActive()) + return forceStopHelper(); + else + return forceStartHelper(); +} + + +void MainWindow::setTab(int tab) +{ + if (debug) qDebug() << "[MainWindow]" << "[setTab]"; + if (debug) qDebug() << "[MainWindow]" << "[setTab]" << ":" << "Update tab" << tab; + + switch (tab) { + case 0: + case 1: + case 2: + break; + default: + tab = 0; + break; + } + ui->tabWidget->setCurrentIndex(tab); + + updateTabs(tab); +} + + +void MainWindow::connectToUnknownEssid(const QString passwd) +{ + if (debug) qDebug() << "[MainWindow]" << "[connectToUnknownEssid]"; + + if (passwdWid != 0) + delete passwdWid; + if (netctlCommand->getWirelessInterfaceList().isEmpty()) + return; + + QMap settings; + settings[QString("Description")] = QString("'Automatically generated profile by Netctl GUI'"); + settings[QString("Interface")] = netctlCommand->getWirelessInterfaceList()[0]; + settings[QString("Connection")] = QString("wireless"); + QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 2)->text(); + if (security.contains(QString("WPA"))) + settings[QString("Security")] = QString("wpa"); + else if (security.contains(QString("WEP"))) + settings[QString("Security")] = QString("wep"); + else + settings[QString("Security")] = QString("none"); + settings[QString("ESSID")] = QString("'") + + ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() + + QString("'"); + if (!passwd.isEmpty()) + settings[QString("Key")] = QString("'") + passwd + QString("'"); + settings[QString("IP")] = QString("dhcp"); + if (hiddenNetwork) + settings[QString("Hidden")] = QString("yes"); + + QString profile = QString("netctl-gui-") + settings[QString("ESSID")]; + profile.remove(QChar('"')).remove(QChar('\'')); + QString profileTempName = netctlProfile->createProfile(profile, settings); + if (netctlProfile->copyProfile(profileTempName)) + netctlCommand->startProfile(profile); + if (netctlCommand->isProfileActive(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + + updateWifiTab(); +} + + +void MainWindow::setHiddenName(const QString name) +{ + if (debug) qDebug() << "[MainWindow]" << "[setHiddenName]"; + if (debug) qDebug() << "[MainWindow]" << "[setHiddenName]" << ":" << "Set name" << name; + + ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->setText(name); + + wifiTabStart(); +} + + +void MainWindow::reportABug() +{ + if (debug) qDebug() << "[MainWindow]" << "[reportABug]"; + + if (QDesktopServices::openUrl(QUrl(QString(BUGTRACKER)))) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); +} + + +// main tab slots +void MainWindow::mainTabContextualMenu(const QPoint &pos) +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]"; + if (ui->tableWidget_main->currentItem() == 0) + return; + + // create menu + QMenu menu(this); + QAction *refreshTable = menu.addAction(QApplication::translate("MainWindow", "Refresh")); + refreshTable->setIcon(QIcon::fromTheme("stock-refresh")); + menu.addSeparator(); + QAction *startProfile = menu.addAction(QApplication::translate("MainWindow", "Start profile")); + QAction *restartProfile = menu.addAction(QApplication::translate("MainWindow", "Restart profile")); + restartProfile->setIcon(QIcon::fromTheme("stock-refresh")); + QAction *enableProfile = menu.addAction(QApplication::translate("MainWindow", "Enable profile")); + menu.addSeparator(); + QAction *editProfile = menu.addAction(QApplication::translate("MainWindow", "Edit profile")); + editProfile->setIcon(QIcon::fromTheme("edit")); + QAction *removeProfile = menu.addAction(QApplication::translate("MainWindow", "Remove profile")); + removeProfile->setIcon(QIcon::fromTheme("edit-delete")); + + // set text + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { + restartProfile->setVisible(true); + startProfile->setText(QApplication::translate("MainWindow", "Stop profile")); + startProfile->setIcon(QIcon::fromTheme("process-stop")); + } + else { + restartProfile->setVisible(false); + startProfile->setText(QApplication::translate("MainWindow", "Start profile")); + startProfile->setIcon(QIcon::fromTheme("system-run")); + } + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { + enableProfile->setText(QApplication::translate("MainWindow", "Disable profile")); + enableProfile->setIcon(QIcon::fromTheme("edit-remove")); + } + else { + enableProfile->setText(QApplication::translate("MainWindow", "Enable profile")); + enableProfile->setIcon(QIcon::fromTheme("edit-add")); + } + + // actions + QAction *action = menu.exec(ui->tableWidget_main->viewport()->mapToGlobal(pos)); + if (action == refreshTable) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Refresh table"; + updateMainTab(); + } + else if (action == startProfile) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Start profile"; + mainTabStartProfile(); + } + else if (action == restartProfile) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Restart profile"; + mainTabRestartProfile(); + } + else if (action == enableProfile) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Enable profile"; + mainTabEnableProfile(); + } + else if (action == editProfile) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Edit profile"; + mainTabEditProfile(); + } + else if (action == removeProfile) { + if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Remove profile"; + mainTabRemoveProfile(); + } +} + + +void MainWindow::mainTabEditProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabEditProfile]"; + + ui->tabWidget->setDisabled(true); + QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); + ui->tabWidget->setCurrentIndex(1); + ui->comboBox_profile->addItem(profile); + ui->comboBox_profile->setCurrentIndex(ui->comboBox_profile->count()-1); +} + + +void MainWindow::mainTabEnableProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabEnableProfile]"; + if (!checkExternalApps(QString("netctl"))) + return errorWin->showWindow(1, QString("[MainWindow] : [mainTabEnableProfile]")); + if (ui->tableWidget_main->currentItem() == 0) + return; + + ui->tabWidget->setDisabled(true); + QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); + netctlCommand->enableProfile(profile); + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { + if (netctlCommand->isProfileEnabled(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + } + else { + if (netctlCommand->isProfileEnabled(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + } + + updateMainTab(); +} + + +void MainWindow::mainTabRemoveProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabRemoveProfile]"; + + ui->tabWidget->setDisabled(true); + // call netctlprofile + QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); + if (netctlProfile->removeProfile(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + + updateMainTab(); +} + + +void MainWindow::mainTabRestartProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabRestartProfile]"; + if (!checkExternalApps(QString("netctl"))) + return errorWin->showWindow(1, QString("[MainWindow] : [mainTabRestartProfile]")); + if (ui->tableWidget_main->currentItem() == 0) + return; + + ui->tabWidget->setDisabled(true); + QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); + netctlCommand->restartProfile(profile); + if (netctlCommand->isProfileActive(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + + updateMainTab(); +} + + +void MainWindow::mainTabStartProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[mainTabStartProfile]"; + if (!checkExternalApps(QString("netctl"))) + return errorWin->showWindow(1, QString("[MainWindow] : [mainTabStartProfile]")); + if (ui->tableWidget_main->currentItem() == 0) + return; + + ui->tabWidget->setDisabled(true); + QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { + netctlCommand->startProfile(profile); + if (netctlCommand->isProfileActive(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + } + else { + if (netctlCommand->getActiveProfile().isEmpty()) + netctlCommand->startProfile(profile); + else + netctlCommand->switchToProfile(profile); + if (netctlCommand->isProfileActive(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + } + + updateMainTab(); +} + + +void MainWindow::mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) +{ + Q_UNUSED(previous); + if (debug) qDebug() << "[MainWindow]" << "[mainTabRefreshButtons]"; + if (!checkExternalApps(QString("netctl"))) + return errorWin->showWindow(1, QString("[MainWindow] : [mainTabRefreshButtons]")); + if (current == 0) { + ui->pushButton_mainRestart->setDisabled(true); + ui->pushButton_mainStart->setDisabled(true); + return; + } + + ui->pushButton_mainStart->setEnabled(true); + + if (!ui->tableWidget_main->item(current->row(), 2)->text().isEmpty()) { + ui->pushButton_mainRestart->setEnabled(true); + ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Stop")); + ui->pushButton_mainStart->setIcon(QIcon::fromTheme("process-stop")); + } + else { + ui->pushButton_mainRestart->setDisabled(true); + ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Start")); + ui->pushButton_mainStart->setIcon(QIcon::fromTheme("system-run")); + } +} + + +// profile tab slots +void MainWindow::profileTabChangeState(const QString current) +{ + if (debug) qDebug() << "[MainWindow]" << "[profileTabChangeState]"; + if (debug) qDebug() << "[MainWindow]" << "[profileTabChangeState]" << ":" << "Current type" << current; + + if (current == QString("ethernet")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(true); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("wireless")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(true); + } + else if ((current == QString("bond")) || + (current == QString("dummy"))) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("bridge")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(true); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("pppoe")) { + generalWid->setShown(true); + ipWid->setShown(false); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(true); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("mobile_ppp")) { + generalWid->setShown(true); + ipWid->setShown(false); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(true); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("tunnel")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(true); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("tuntap")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(false); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(true); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } + else if (current == QString("vlan")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(true); + macvlanWid->setShown(false); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(true); + wirelessWid->setShown(false); + } + else if (current == QString("macvlan")) { + generalWid->setShown(true); + ipWid->setShown(true); + bridgeWid->setShown(false); + ethernetWid->setShown(true); + macvlanWid->setShown(true); + mobileWid->setShown(false); + pppoeWid->setShown(false); + tunnelWid->setShown(false); + tuntapWid->setShown(false); + vlanWid->setShown(false); + wirelessWid->setShown(false); + } +} + + +void MainWindow::profileTabClear() +{ + if (debug) qDebug() << "[MainWindow]" << "[profileTabClear]"; + + ui->comboBox_profile->clear(); + QList profiles = netctlCommand->getProfileList(); + for (int i=0; icomboBox_profile->addItem(profiles[i].name); + ui->comboBox_profile->setCurrentIndex(-1); + + generalWid->clear(); + ipWid->clear(); + bridgeWid->clear(); + ethernetWid->clear(); + macvlanWid->clear(); + mobileWid->clear(); + pppoeWid->clear(); + tunnelWid->clear(); + tuntapWid->clear(); + vlanWid->clear(); + wirelessWid->clear(); + + profileTabChangeState(generalWid->connectionType->currentText()); +} + + +void MainWindow::profileTabCreateProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[profileTabCreateProfile]"; + + // error checking + if (ui->comboBox_profile->currentText().isEmpty()) + return errorWin->showWindow(3, QString("[MainWindow] : [profileTabCreateProfile]")); + if (generalWid->isOk() == 1) + return errorWin->showWindow(4, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (generalWid->isOk() == 2) + return errorWin->showWindow(5, QString("[MainWindow] : [profileTabCreateProfile]")); + if ((generalWid->connectionType->currentText() == QString("ethernet")) || + (generalWid->connectionType->currentText() == QString("wireless")) || + (generalWid->connectionType->currentText() == QString("bond")) || + (generalWid->connectionType->currentText() == QString("dummy")) || + (generalWid->connectionType->currentText() == QString("bridge")) || + (generalWid->connectionType->currentText() == QString("tunnel")) || + (generalWid->connectionType->currentText() == QString("tuntap")) || + (generalWid->connectionType->currentText() == QString("vlan")) || + (generalWid->connectionType->currentText() == QString("macvlan"))) { + if (ipWid->isOk() == 1) + return errorWin->showWindow(6, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (ipWid->isOk() == 2) + return errorWin->showWindow(6, QString("[MainWindow] : [profileTabCreateProfile]")); + } + if (generalWid->connectionType->currentText() == QString("ethernet")) { + if (ethernetWid->isOk() == 1) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("wireless")) { + if (wirelessWid->isOk() == 1) + return errorWin->showWindow(8, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (wirelessWid->isOk() == 2) + return errorWin->showWindow(9, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (wirelessWid->isOk() == 3) + return errorWin->showWindow(10, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (wirelessWid->isOk() == 4) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (wirelessWid->isOk() == 5) + return errorWin->showWindow(11, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("bridge")) { + } + else if (generalWid->connectionType->currentText() == QString("pppoe")) { + if (pppoeWid->isOk() == 1) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (pppoeWid->isOk() == 2) + return errorWin->showWindow(12, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (pppoeWid->isOk() == 3) + return errorWin->showWindow(13, QString("[MainWindow] : [profileTabCreateProfile]")); + else if (pppoeWid->isOk() == 4) + return errorWin->showWindow(12, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) { + if (mobileWid->isOk() == 1) + return errorWin->showWindow(14, QString("[MainWindow] : [profileTabCreateProfile]")); + if (mobileWid->isOk() == 2) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("tunnel")) { + } + else if (generalWid->connectionType->currentText() == QString("tuntap")) { + if (tuntapWid->isOk() == 1) + return errorWin->showWindow(15, QString("[MainWindow] : [profileTabCreateProfile]")); + if (tuntapWid->isOk() == 2) + return errorWin->showWindow(15, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("vlan")) { + if (ethernetWid->isOk() == 1) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + } + else if (generalWid->connectionType->currentText() == QString("macvlan")) { + if (ethernetWid->isOk() == 1) + return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); + } + + ui->tabWidget->setDisabled(true); + // read settings + QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); + QMap settings; + settings = generalWid->getSettings(); + if (generalWid->connectionType->currentText() == QString("ethernet")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("wireless")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("bond")) || + (generalWid->connectionType->currentText() == QString("dummy"))) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; iconnectionType->currentText() == QString("bridge")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("pppoe")) { + QMap addSettings = pppoeWid->getSettings(); + for (int i=0; iconnectionType->currentText() == QString("mobile_ppp")) { + QMap addSettings = mobileWid->getSettings(); + for (int i=0; iconnectionType->currentText() == QString("tunnel")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("tuntap")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("vlan")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; igetSettings(); + for (int i=0; iconnectionType->currentText() == QString("macvlan")) { + QMap addSettings = ipWid->getSettings(); + for (int i=0; igetSettings(); + for (int i=0; igetSettings(); + for (int i=0; icreateProfile(profile, settings); + if (netctlProfile->copyProfile(profileTempName)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + + updateProfileTab(); +} + + +void MainWindow::profileTabLoadProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[profileTabLoadProfile]"; + + QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); + if (profile.isEmpty()) + return; + QMap settings = netctlProfile->getSettingsFromProfile(profile); + if (settings.isEmpty()) + return errorWin->showWindow(17, QString("[MainWindow] : [profileTabLoadProfile]")); + + generalWid->setSettings(settings); + if (generalWid->connectionType->currentText() == QString("ethernet")) { + ipWid->setSettings(settings); + ethernetWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("wireless")) { + ipWid->setSettings(settings); + wirelessWid->setSettings(settings); + } + else if ((generalWid->connectionType->currentText() == QString("bond")) || + (generalWid->connectionType->currentText() == QString("dummy"))) { + ipWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("bridge")) { + ipWid->setSettings(settings); + bridgeWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("pppoe")) { + pppoeWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) { + mobileWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("tunnel")) { + ipWid->setSettings(settings); + tunnelWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("tuntap")) { + ipWid->setSettings(settings); + tuntapWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("vlan")) { + ipWid->setSettings(settings); + ethernetWid->setSettings(settings); + vlanWid->setSettings(settings); + } + else if (generalWid->connectionType->currentText() == QString("macvlan")) { + ipWid->setSettings(settings); + ethernetWid->setSettings(settings); + macvlanWid->setSettings(settings); + } +} + + +void MainWindow::profileTabRemoveProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[profileTabRemoveProfile]"; + + ui->tabWidget->setDisabled(true); + // call netctlprofile + QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); + if (netctlProfile->removeProfile(profile)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + + updateProfileTab(); +} + + +// wifi tab slots +void MainWindow::wifiTabContextualMenu(const QPoint &pos) +{ + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]"; + if (ui->tableWidget_wifi->currentItem() == 0) + return; + + // create menu + QMenu menu(this); + QAction *refreshTable = menu.addAction(QApplication::translate("MainWindow", "Refresh")); + refreshTable->setIcon(QIcon::fromTheme("stock-refresh")); + menu.addSeparator(); + QAction *startWifi = menu.addAction(QApplication::translate("MainWindow", "Start WiFi")); + + // set text + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { + startWifi->setText(QApplication::translate("MainWindow", "Stop WiFi")); + startWifi->setIcon(QIcon::fromTheme("process-stop")); + } + else { + startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); + startWifi->setIcon(QIcon::fromTheme("system-run")); + } + } + else { + startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); + startWifi->setIcon(QIcon::fromTheme("system-run")); + } + + // actions + QAction *action = menu.exec(ui->tableWidget_main->viewport()->mapToGlobal(pos)); + if (action == refreshTable) { + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Refresh WiFi"; + updateWifiTab(); + } + else if (action == startWifi) { + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Start WiFi"; + wifiTabStart(); + } +} + + +void MainWindow::wifiTabSetEnabled(const bool state) +{ + if (debug) qDebug() << "[MainWindow]" << "[wifiTabSetEnables]"; + if (debug) qDebug() << "[MainWindow]" << "[wifiTabSetEnables]" << ":" << "State" << state; + + if (state) { + ui->tableWidget_wifi->show(); + ui->pushButton_wifiRefresh->setEnabled(true); + ui->label_wifi->hide(); + } + else { + ui->tableWidget_wifi->hide(); + ui->pushButton_wifiRefresh->setDisabled(true); + ui->pushButton_wifiStart->setDisabled(true); + ui->label_wifi->show(); + } +} + + +void MainWindow::wifiTabStart() +{ + if (debug) qDebug() << "[MainWindow]" << "[wifiTabStart]"; + if (!checkExternalApps(QString("wpasup"))) + return errorWin->showWindow(1, QString("[MainWindow] : [wifiTabStart]")); + if (ui->tableWidget_wifi->currentItem() == 0) + return; + + ui->tabWidget->setDisabled(true); + // name is hidden + if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("")) { + hiddenNetwork = true; + passwdWid = new PasswdWidget(this); + passwdWid->setPassword(false); + int widgetWidth = 270; + int widgetHeight = 86; + int x = (width() - widgetWidth) / 2; + int y = (height() - widgetHeight) / 2; + passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); + passwdWid->show(); + passwdWid->setFocusToLineEdit(); + return; + } + + // name isn't hidden + hiddenNetwork = false; + QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text(); + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { + QString profileName = wpaCommand->existentProfile(profile); + netctlCommand->startProfile(profileName); + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { + if (netctlCommand->isProfileActive(profileName)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + } + else { + if (netctlCommand->isProfileActive(profileName)) + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); + else + ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); + } + } + else { + QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text(); + if (security.contains(QString("none"))) + return connectToUnknownEssid(QString("")); + else { + passwdWid = new PasswdWidget(this); + passwdWid->setPassword(true); + int widgetWidth = 270; + int widgetHeight = 86; + int x = (width() - widgetWidth) / 2; + int y = (height() - widgetHeight) / 2; + passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); + passwdWid->show(); + passwdWid->setFocusToLineEdit(); + return; + } + } + + updateWifiTab(); +} + + +void MainWindow::wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) +{ + Q_UNUSED(previous); + if (debug) qDebug() << "[MainWindow]" << "[wifiTabRefreshButtons]"; + if (!checkExternalApps(QString("wpasup"))) + return errorWin->showWindow(1, QString("[MainWindow] : [wifiTabRefreshButtons]")); + if (current == 0) { + ui->pushButton_wifiStart->setDisabled(true); + return; + } + if (ui->tableWidget_wifi->item(current->row(), 0)->text() == QString("")) { + ui->pushButton_wifiStart->setDisabled(true); + return; + } + + ui->pushButton_wifiStart->setEnabled(true); + if (!ui->tableWidget_wifi->item(current->row(), 4)->text().isEmpty()) { + if (!ui->tableWidget_wifi->item(current->row(), 3)->text().isEmpty()) { + ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Stop")); + ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("process-stop")); + } + else { + ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); + ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); + } + } + else { + ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); + ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); + } +} diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index a368511..40b4603 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -167,20 +167,6 @@ bool MainWindow::isHelperActive() } -void MainWindow::closeEvent(QCloseEvent *event) -{ - if (debug) qDebug() << "[MainWindow]" << "[closeEvent]"; - - if ((QSystemTrayIcon::isSystemTrayAvailable()) && - (configuration[QString("SYSTRAY")] == QString("true"))) { - hide(); - event->ignore(); - } - else - closeMainWindow(); -} - - bool MainWindow::checkExternalApps(const QString apps = QString("all")) { if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]"; @@ -384,16 +370,6 @@ void MainWindow::deleteObjects() } -void MainWindow::keyPressEvent(QKeyEvent *pressedKey) -{ - if (debug) qDebug() << "[MainWindow]" << "[keyPressEvent]"; - - if (pressedKey->key() == Qt::Key_Return) - if (ui->comboBox_profile->hasFocus()) - profileTabLoadProfile(); -} - - QList MainWindow::sendDBusRequest(const QString service, const QString path, const QString interface, const QString cmd, bool system) @@ -496,148 +472,7 @@ QList MainWindow::parseOutputWifi(const QList raw) } -void MainWindow::reportABug() -{ - if (debug) qDebug() << "[MainWindow]" << "[reportABug]"; - - if (QDesktopServices::openUrl(QUrl(QString(BUGTRACKER)))) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); -} - - // window slots -void MainWindow::setMenuActionsShown(const bool state) -{ - if (debug) qDebug() << "[MainWindow]" << "[setMenuActionsShown]"; - if (debug) qDebug() << "[MainWindow]" << "[setMenuActionsShown]" << ":" << "State" << state; - - // main - ui->actionMainEdit->setVisible(state); - ui->actionMainEnable->setVisible(state); - ui->actionMainRefresh->setVisible(state); - ui->actionMainRemove->setVisible(state); - ui->actionMainRestart->setVisible(state); - ui->actionMainStart->setVisible(state); - // profile - ui->actionProfileClear->setVisible(state); - ui->actionProfileLoad->setVisible(state); - ui->actionProfileRemove->setVisible(state); - ui->actionProfileSave->setVisible(state); - // wifi - ui->actionWifiRefresh->setVisible(state); - ui->actionWifiStart->setVisible(state); -} - - -void MainWindow::closeMainWindow() -{ - if (debug) qDebug() << "[MainWindow]" << "[closeMainWindow]"; - - qApp->quit(); -} - - -void MainWindow::showAboutWindow() -{ - if (debug) qDebug() << "[MainWindow]" << "[showAboutWindow]"; - - aboutWin->show(); -} - - -void MainWindow::showMainWindow() -{ - if (debug) qDebug() << "[MainWindow]" << "[showMainWindow]"; - - if (isHidden()) { - updateTabs(ui->tabWidget->currentIndex()); - show(); - } - else - hide(); -} - - -void MainWindow::showNetctlAutoWindow() -{ - if (debug) qDebug() << "[MainWindow]" << "[showNetctlAutoWindow]"; - - netctlAutoWin->showWindow(); -} - - -void MainWindow::showSettingsWindow() -{ - if (debug) qDebug() << "[MainWindow]" << "[showSettingsWindow]"; - - settingsWin->showWindow(); -} - - -bool MainWindow::forceStartHelper() -{ - if (debug) qDebug() << "[MainWindow]" << "[forceStartHelper]"; - if (!checkExternalApps(QString("helper"))) { - errorWin->showWindow(1, QString("[MainWindow] : [forceStartHelper]")); - return false; - } - - QString cmd = configuration[QString("HELPER_PATH")] + QString(" -c ") + configPath; - if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]" << ":" << "Run cmd" << cmd; - TaskResult process = runTask(cmd, false); - if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]" << ":" << "Cmd returns" << process.exitCode; - - return isHelperActive(); -} - - -bool MainWindow::forceStopHelper() -{ - if (debug) qDebug() << "[MainWindow]" << "[forceStartHelper]"; - - QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CONTROL_PATH, - DBUS_HELPER_INTERFACE, QString("Close")); - - if (responce.size() == 1) - return true; - else - return false; -} - - -bool MainWindow::startHelper() -{ - if (debug) qDebug() << "[MainWindow]" << "[startHelper]"; - - if (isHelperActive()) - return forceStopHelper(); - else - return forceStartHelper(); -} - - -void MainWindow::setTab(int tab) -{ - if (debug) qDebug() << "[MainWindow]" << "[setTab]"; - if (debug) qDebug() << "[MainWindow]" << "[setTab]" << ":" << "Update tab" << tab; - - switch (tab) { - case 0: - case 1: - case 2: - break; - default: - tab = 0; - break; - } - ui->tabWidget->setCurrentIndex(tab); - - updateTabs(tab); -} - - void MainWindow::updateConfiguration(const QMap args) { if (debug) qDebug() << "[MainWindow]" << "[updateConfiguration]"; @@ -725,6 +560,104 @@ void MainWindow::updateTabs(const int tab) } +void MainWindow::setMenuActionsShown(const bool state) +{ + if (debug) qDebug() << "[MainWindow]" << "[setMenuActionsShown]"; + if (debug) qDebug() << "[MainWindow]" << "[setMenuActionsShown]" << ":" << "State" << state; + + // main + ui->actionMainEdit->setVisible(state); + ui->actionMainEnable->setVisible(state); + ui->actionMainRefresh->setVisible(state); + ui->actionMainRemove->setVisible(state); + ui->actionMainRestart->setVisible(state); + ui->actionMainStart->setVisible(state); + // profile + ui->actionProfileClear->setVisible(state); + ui->actionProfileLoad->setVisible(state); + ui->actionProfileRemove->setVisible(state); + ui->actionProfileSave->setVisible(state); + // wifi + ui->actionWifiRefresh->setVisible(state); + ui->actionWifiStart->setVisible(state); +} + + +void MainWindow::updateMenuMain() +{ + if (debug) qDebug() << "[MainWindow]" << "[updateMenuMain]"; + + ui->actionMainRefresh->setVisible(true); + if (ui->tableWidget_main->currentItem() == 0) + return; + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { + ui->actionMainRestart->setVisible(true); + ui->actionMainStart->setText(QApplication::translate("MainWindow", "Stop profile")); + ui->actionMainStart->setIcon(QIcon::fromTheme("process-stop")); + } + else { + ui->actionMainRestart->setVisible(false); + ui->actionMainStart->setText(QApplication::translate("MainWindow", "Start profile")); + ui->actionMainStart->setIcon(QIcon::fromTheme("system-run")); + } + ui->actionMainStart->setVisible(true); + if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { + ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Disable profile")); + ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-remove")); + } + else { + ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Enable profile")); + ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-add")); + } + ui->actionMainEnable->setVisible(true); + ui->actionMainEdit->setVisible(true); + ui->actionMainRemove->setVisible(true); +} + + +void MainWindow::updateMenuProfile() +{ + if (debug) qDebug() << "[MainWindow]" << "[updateMenuProfile]"; + + ui->actionProfileClear->setVisible(true); + if (ui->comboBox_profile->currentText().isEmpty()) { + ui->actionProfileLoad->setVisible(false); + ui->actionProfileRemove->setVisible(false); + ui->actionProfileSave->setVisible(false); + } + else { + ui->actionProfileLoad->setVisible(true); + ui->actionProfileRemove->setVisible(true); + ui->actionProfileSave->setVisible(true); + } +} + + +void MainWindow::updateMenuWifi() +{ + if (debug) qDebug() << "[MainWindow]" << "[updateMenuWifi]"; + + ui->actionWifiRefresh->setVisible(true); + if (ui->tableWidget_wifi->currentItem() == 0) + return; + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { + if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { + ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Stop WiFi")); + ui->actionWifiStart->setIcon(QIcon::fromTheme("process-stop")); + } + else { + ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); + ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); + } + } + else { + ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); + ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); + } + ui->actionWifiStart->setVisible(true); +} + + void MainWindow::updateMainTab() { if (debug) qDebug() << "[MainWindow]" << "[updateMainTab]"; @@ -799,38 +732,6 @@ void MainWindow::updateMainTab() } -void MainWindow::updateMenuMain() -{ - if (debug) qDebug() << "[MainWindow]" << "[updateMenuMain]"; - - ui->actionMainRefresh->setVisible(true); - if (ui->tableWidget_main->currentItem() == 0) - return; - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { - ui->actionMainRestart->setVisible(true); - ui->actionMainStart->setText(QApplication::translate("MainWindow", "Stop profile")); - ui->actionMainStart->setIcon(QIcon::fromTheme("process-stop")); - } - else { - ui->actionMainRestart->setVisible(false); - ui->actionMainStart->setText(QApplication::translate("MainWindow", "Start profile")); - ui->actionMainStart->setIcon(QIcon::fromTheme("system-run")); - } - ui->actionMainStart->setVisible(true); - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { - ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Disable profile")); - ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-remove")); - } - else { - ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Enable profile")); - ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-add")); - } - ui->actionMainEnable->setVisible(true); - ui->actionMainEdit->setVisible(true); - ui->actionMainRemove->setVisible(true); -} - - void MainWindow::updateProfileTab() { if (debug) qDebug() << "[MainWindow]" << "[updateProfileTab]"; @@ -844,24 +745,6 @@ void MainWindow::updateProfileTab() } -void MainWindow::updateMenuProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[updateMenuProfile]"; - - ui->actionProfileClear->setVisible(true); - if (ui->comboBox_profile->currentText().isEmpty()) { - ui->actionProfileLoad->setVisible(false); - ui->actionProfileRemove->setVisible(false); - ui->actionProfileSave->setVisible(false); - } - else { - ui->actionProfileLoad->setVisible(true); - ui->actionProfileRemove->setVisible(true); - ui->actionProfileSave->setVisible(true); - } -} - - void MainWindow::updateWifiTab() { if (debug) qDebug() << "[MainWindow]" << "[updateWifiTab]"; @@ -934,856 +817,3 @@ void MainWindow::updateWifiTab() update(); } - - -void MainWindow::updateMenuWifi() -{ - if (debug) qDebug() << "[MainWindow]" << "[updateMenuWifi]"; - - ui->actionWifiRefresh->setVisible(true); - if (ui->tableWidget_wifi->currentItem() == 0) - return; - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Stop WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("process-stop")); - } - else { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); - } - } - else { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); - } - ui->actionWifiStart->setVisible(true); -} - - -// main tab slots -void MainWindow::mainTabContextualMenu(const QPoint &pos) -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]"; - if (ui->tableWidget_main->currentItem() == 0) - return; - - // create menu - QMenu menu(this); - QAction *refreshTable = menu.addAction(QApplication::translate("MainWindow", "Refresh")); - refreshTable->setIcon(QIcon::fromTheme("stock-refresh")); - menu.addSeparator(); - QAction *startProfile = menu.addAction(QApplication::translate("MainWindow", "Start profile")); - QAction *restartProfile = menu.addAction(QApplication::translate("MainWindow", "Restart profile")); - restartProfile->setIcon(QIcon::fromTheme("stock-refresh")); - QAction *enableProfile = menu.addAction(QApplication::translate("MainWindow", "Enable profile")); - menu.addSeparator(); - QAction *editProfile = menu.addAction(QApplication::translate("MainWindow", "Edit profile")); - editProfile->setIcon(QIcon::fromTheme("edit")); - QAction *removeProfile = menu.addAction(QApplication::translate("MainWindow", "Remove profile")); - removeProfile->setIcon(QIcon::fromTheme("edit-delete")); - - // set text - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { - restartProfile->setVisible(true); - startProfile->setText(QApplication::translate("MainWindow", "Stop profile")); - startProfile->setIcon(QIcon::fromTheme("process-stop")); - } - else { - restartProfile->setVisible(false); - startProfile->setText(QApplication::translate("MainWindow", "Start profile")); - startProfile->setIcon(QIcon::fromTheme("system-run")); - } - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { - enableProfile->setText(QApplication::translate("MainWindow", "Disable profile")); - enableProfile->setIcon(QIcon::fromTheme("edit-remove")); - } - else { - enableProfile->setText(QApplication::translate("MainWindow", "Enable profile")); - enableProfile->setIcon(QIcon::fromTheme("edit-add")); - } - - // actions - QAction *action = menu.exec(ui->tableWidget_main->viewport()->mapToGlobal(pos)); - if (action == refreshTable) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Refresh table"; - updateMainTab(); - } - else if (action == startProfile) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Start profile"; - mainTabStartProfile(); - } - else if (action == restartProfile) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Restart profile"; - mainTabRestartProfile(); - } - else if (action == enableProfile) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Enable profile"; - mainTabEnableProfile(); - } - else if (action == editProfile) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Edit profile"; - mainTabEditProfile(); - } - else if (action == removeProfile) { - if (debug) qDebug() << "[MainWindow]" << "[mainTabContextualMenu]" << "Remove profile"; - mainTabRemoveProfile(); - } -} - - -void MainWindow::mainTabEditProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabEditProfile]"; - - ui->tabWidget->setDisabled(true); - QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - ui->tabWidget->setCurrentIndex(1); - ui->comboBox_profile->addItem(profile); - ui->comboBox_profile->setCurrentIndex(ui->comboBox_profile->count()-1); -} - - -void MainWindow::mainTabRemoveProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabRemoveProfile]"; - - ui->tabWidget->setDisabled(true); - // call netctlprofile - QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - if (netctlProfile->removeProfile(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - - updateMainTab(); -} - - -void MainWindow::mainTabEnableProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabEnableProfile]"; - if (!checkExternalApps(QString("netctl"))) - return errorWin->showWindow(1, QString("[MainWindow] : [mainTabEnableProfile]")); - if (ui->tableWidget_main->currentItem() == 0) - return; - - ui->tabWidget->setDisabled(true); - QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - netctlCommand->enableProfile(profile); - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { - if (netctlCommand->isProfileEnabled(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - } - else { - if (netctlCommand->isProfileEnabled(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - } - - updateMainTab(); -} - - -void MainWindow::mainTabRestartProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabRestartProfile]"; - if (!checkExternalApps(QString("netctl"))) - return errorWin->showWindow(1, QString("[MainWindow] : [mainTabRestartProfile]")); - if (ui->tableWidget_main->currentItem() == 0) - return; - - ui->tabWidget->setDisabled(true); - QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - netctlCommand->restartProfile(profile); - if (netctlCommand->isProfileActive(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - - updateMainTab(); -} - - -void MainWindow::mainTabStartProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[mainTabStartProfile]"; - if (!checkExternalApps(QString("netctl"))) - return errorWin->showWindow(1, QString("[MainWindow] : [mainTabStartProfile]")); - if (ui->tableWidget_main->currentItem() == 0) - return; - - ui->tabWidget->setDisabled(true); - QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { - netctlCommand->startProfile(profile); - if (netctlCommand->isProfileActive(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - } - else { - if (netctlCommand->getActiveProfile().isEmpty()) - netctlCommand->startProfile(profile); - else - netctlCommand->switchToProfile(profile); - if (netctlCommand->isProfileActive(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - } - - updateMainTab(); -} - - -void MainWindow::mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) -{ - Q_UNUSED(previous); - if (debug) qDebug() << "[MainWindow]" << "[mainTabRefreshButtons]"; - if (!checkExternalApps(QString("netctl"))) - return errorWin->showWindow(1, QString("[MainWindow] : [mainTabRefreshButtons]")); - if (current == 0) { - ui->pushButton_mainRestart->setDisabled(true); - ui->pushButton_mainStart->setDisabled(true); - return; - } - - ui->pushButton_mainStart->setEnabled(true); - - if (!ui->tableWidget_main->item(current->row(), 2)->text().isEmpty()) { - ui->pushButton_mainRestart->setEnabled(true); - ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Stop")); - ui->pushButton_mainStart->setIcon(QIcon::fromTheme("process-stop")); - } - else { - ui->pushButton_mainRestart->setDisabled(true); - ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_mainStart->setIcon(QIcon::fromTheme("system-run")); - } -} - - -// profile tab slots -void MainWindow::profileTabChangeState(const QString current) -{ - if (debug) qDebug() << "[MainWindow]" << "[profileTabChangeState]"; - if (debug) qDebug() << "[MainWindow]" << "[profileTabChangeState]" << ":" << "Current type" << current; - - if (current == QString("ethernet")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(true); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("wireless")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(true); - } - else if ((current == QString("bond")) || - (current == QString("dummy"))) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("bridge")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(true); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("pppoe")) { - generalWid->setShown(true); - ipWid->setShown(false); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(true); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("mobile_ppp")) { - generalWid->setShown(true); - ipWid->setShown(false); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(true); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("tunnel")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(true); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("tuntap")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(false); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(true); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } - else if (current == QString("vlan")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(true); - macvlanWid->setShown(false); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(true); - wirelessWid->setShown(false); - } - else if (current == QString("macvlan")) { - generalWid->setShown(true); - ipWid->setShown(true); - bridgeWid->setShown(false); - ethernetWid->setShown(true); - macvlanWid->setShown(true); - mobileWid->setShown(false); - pppoeWid->setShown(false); - tunnelWid->setShown(false); - tuntapWid->setShown(false); - vlanWid->setShown(false); - wirelessWid->setShown(false); - } -} - - -void MainWindow::profileTabClear() -{ - if (debug) qDebug() << "[MainWindow]" << "[profileTabClear]"; - - ui->comboBox_profile->clear(); - QList profiles = netctlCommand->getProfileList(); - for (int i=0; icomboBox_profile->addItem(profiles[i].name); - ui->comboBox_profile->setCurrentIndex(-1); - - generalWid->clear(); - ipWid->clear(); - bridgeWid->clear(); - ethernetWid->clear(); - macvlanWid->clear(); - mobileWid->clear(); - pppoeWid->clear(); - tunnelWid->clear(); - tuntapWid->clear(); - vlanWid->clear(); - wirelessWid->clear(); - - profileTabChangeState(generalWid->connectionType->currentText()); -} - - -void MainWindow::profileTabCreateProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[profileTabCreateProfile]"; - - // error checking - if (ui->comboBox_profile->currentText().isEmpty()) - return errorWin->showWindow(3, QString("[MainWindow] : [profileTabCreateProfile]")); - if (generalWid->isOk() == 1) - return errorWin->showWindow(4, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (generalWid->isOk() == 2) - return errorWin->showWindow(5, QString("[MainWindow] : [profileTabCreateProfile]")); - if ((generalWid->connectionType->currentText() == QString("ethernet")) || - (generalWid->connectionType->currentText() == QString("wireless")) || - (generalWid->connectionType->currentText() == QString("bond")) || - (generalWid->connectionType->currentText() == QString("dummy")) || - (generalWid->connectionType->currentText() == QString("bridge")) || - (generalWid->connectionType->currentText() == QString("tunnel")) || - (generalWid->connectionType->currentText() == QString("tuntap")) || - (generalWid->connectionType->currentText() == QString("vlan")) || - (generalWid->connectionType->currentText() == QString("macvlan"))) { - if (ipWid->isOk() == 1) - return errorWin->showWindow(6, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (ipWid->isOk() == 2) - return errorWin->showWindow(6, QString("[MainWindow] : [profileTabCreateProfile]")); - } - if (generalWid->connectionType->currentText() == QString("ethernet")) { - if (ethernetWid->isOk() == 1) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("wireless")) { - if (wirelessWid->isOk() == 1) - return errorWin->showWindow(8, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (wirelessWid->isOk() == 2) - return errorWin->showWindow(9, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (wirelessWid->isOk() == 3) - return errorWin->showWindow(10, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (wirelessWid->isOk() == 4) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (wirelessWid->isOk() == 5) - return errorWin->showWindow(11, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("bridge")) { - } - else if (generalWid->connectionType->currentText() == QString("pppoe")) { - if (pppoeWid->isOk() == 1) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (pppoeWid->isOk() == 2) - return errorWin->showWindow(12, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (pppoeWid->isOk() == 3) - return errorWin->showWindow(13, QString("[MainWindow] : [profileTabCreateProfile]")); - else if (pppoeWid->isOk() == 4) - return errorWin->showWindow(12, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) { - if (mobileWid->isOk() == 1) - return errorWin->showWindow(14, QString("[MainWindow] : [profileTabCreateProfile]")); - if (mobileWid->isOk() == 2) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("tunnel")) { - } - else if (generalWid->connectionType->currentText() == QString("tuntap")) { - if (tuntapWid->isOk() == 1) - return errorWin->showWindow(15, QString("[MainWindow] : [profileTabCreateProfile]")); - if (tuntapWid->isOk() == 2) - return errorWin->showWindow(15, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("vlan")) { - if (ethernetWid->isOk() == 1) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - } - else if (generalWid->connectionType->currentText() == QString("macvlan")) { - if (ethernetWid->isOk() == 1) - return errorWin->showWindow(7, QString("[MainWindow] : [profileTabCreateProfile]")); - } - - ui->tabWidget->setDisabled(true); - // read settings - QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); - QMap settings; - settings = generalWid->getSettings(); - if (generalWid->connectionType->currentText() == QString("ethernet")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("wireless")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("bond")) || - (generalWid->connectionType->currentText() == QString("dummy"))) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; iconnectionType->currentText() == QString("bridge")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("pppoe")) { - QMap addSettings = pppoeWid->getSettings(); - for (int i=0; iconnectionType->currentText() == QString("mobile_ppp")) { - QMap addSettings = mobileWid->getSettings(); - for (int i=0; iconnectionType->currentText() == QString("tunnel")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("tuntap")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("vlan")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; igetSettings(); - for (int i=0; iconnectionType->currentText() == QString("macvlan")) { - QMap addSettings = ipWid->getSettings(); - for (int i=0; igetSettings(); - for (int i=0; igetSettings(); - for (int i=0; icreateProfile(profile, settings); - if (netctlProfile->copyProfile(profileTempName)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - - updateProfileTab(); -} - - -void MainWindow::profileTabLoadProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[profileTabLoadProfile]"; - - QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); - if (profile.isEmpty()) - return; - QMap settings = netctlProfile->getSettingsFromProfile(profile); - if (settings.isEmpty()) - return errorWin->showWindow(17, QString("[MainWindow] : [profileTabLoadProfile]")); - - generalWid->setSettings(settings); - if (generalWid->connectionType->currentText() == QString("ethernet")) { - ipWid->setSettings(settings); - ethernetWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("wireless")) { - ipWid->setSettings(settings); - wirelessWid->setSettings(settings); - } - else if ((generalWid->connectionType->currentText() == QString("bond")) || - (generalWid->connectionType->currentText() == QString("dummy"))) { - ipWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("bridge")) { - ipWid->setSettings(settings); - bridgeWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("pppoe")) { - pppoeWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) { - mobileWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("tunnel")) { - ipWid->setSettings(settings); - tunnelWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("tuntap")) { - ipWid->setSettings(settings); - tuntapWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("vlan")) { - ipWid->setSettings(settings); - ethernetWid->setSettings(settings); - vlanWid->setSettings(settings); - } - else if (generalWid->connectionType->currentText() == QString("macvlan")) { - ipWid->setSettings(settings); - ethernetWid->setSettings(settings); - macvlanWid->setSettings(settings); - } -} - - -void MainWindow::profileTabRemoveProfile() -{ - if (debug) qDebug() << "[MainWindow]" << "[profileTabRemoveProfile]"; - - ui->tabWidget->setDisabled(true); - // call netctlprofile - QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); - if (netctlProfile->removeProfile(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - - updateProfileTab(); -} - - -// wifi tab slots -void MainWindow::wifiTabContextualMenu(const QPoint &pos) -{ - if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]"; - if (ui->tableWidget_wifi->currentItem() == 0) - return; - - // create menu - QMenu menu(this); - QAction *refreshTable = menu.addAction(QApplication::translate("MainWindow", "Refresh")); - refreshTable->setIcon(QIcon::fromTheme("stock-refresh")); - menu.addSeparator(); - QAction *startWifi = menu.addAction(QApplication::translate("MainWindow", "Start WiFi")); - - // set text - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { - startWifi->setText(QApplication::translate("MainWindow", "Stop WiFi")); - startWifi->setIcon(QIcon::fromTheme("process-stop")); - } - else { - startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); - startWifi->setIcon(QIcon::fromTheme("system-run")); - } - } - else { - startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); - startWifi->setIcon(QIcon::fromTheme("system-run")); - } - - // actions - QAction *action = menu.exec(ui->tableWidget_main->viewport()->mapToGlobal(pos)); - if (action == refreshTable) { - if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Refresh WiFi"; - updateWifiTab(); - } - else if (action == startWifi) { - if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Start WiFi"; - wifiTabStart(); - } -} - - -void MainWindow::wifiTabSetEnabled(const bool state) -{ - if (debug) qDebug() << "[MainWindow]" << "[wifiTabSetEnables]"; - if (debug) qDebug() << "[MainWindow]" << "[wifiTabSetEnables]" << ":" << "State" << state; - - if (state) { - ui->tableWidget_wifi->show(); - ui->pushButton_wifiRefresh->setEnabled(true); - ui->label_wifi->hide(); - } - else { - ui->tableWidget_wifi->hide(); - ui->pushButton_wifiRefresh->setDisabled(true); - ui->pushButton_wifiStart->setDisabled(true); - ui->label_wifi->show(); - } -} - - -void MainWindow::connectToUnknownEssid(const QString passwd) -{ - if (debug) qDebug() << "[MainWindow]" << "[connectToUnknownEssid]"; - - if (passwdWid != 0) - delete passwdWid; - if (netctlCommand->getWirelessInterfaceList().isEmpty()) - return; - - QMap settings; - settings[QString("Description")] = QString("'Automatically generated profile by Netctl GUI'"); - settings[QString("Interface")] = netctlCommand->getWirelessInterfaceList()[0]; - settings[QString("Connection")] = QString("wireless"); - QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 2)->text(); - if (security.contains(QString("WPA"))) - settings[QString("Security")] = QString("wpa"); - else if (security.contains(QString("WEP"))) - settings[QString("Security")] = QString("wep"); - else - settings[QString("Security")] = QString("none"); - settings[QString("ESSID")] = QString("'") + - ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() + - QString("'"); - if (!passwd.isEmpty()) - settings[QString("Key")] = QString("'") + passwd + QString("'"); - settings[QString("IP")] = QString("dhcp"); - if (hiddenNetwork) - settings[QString("Hidden")] = QString("yes"); - - QString profile = QString("netctl-gui-") + settings[QString("ESSID")]; - profile.remove(QChar('"')).remove(QChar('\'')); - QString profileTempName = netctlProfile->createProfile(profile, settings); - if (netctlProfile->copyProfile(profileTempName)) - netctlCommand->startProfile(profile); - if (netctlCommand->isProfileActive(profile)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - - updateWifiTab(); -} - - -void MainWindow::setHiddenName(const QString name) -{ - if (debug) qDebug() << "[MainWindow]" << "[setHiddenName]"; - if (debug) qDebug() << "[MainWindow]" << "[setHiddenName]" << ":" << "Set name" << name; - - ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->setText(name); - - wifiTabStart(); -} - - -void MainWindow::wifiTabStart() -{ - if (debug) qDebug() << "[MainWindow]" << "[wifiTabStart]"; - if (!checkExternalApps(QString("wpasup"))) - return errorWin->showWindow(1, QString("[MainWindow] : [wifiTabStart]")); - if (ui->tableWidget_wifi->currentItem() == 0) - return; - - ui->tabWidget->setDisabled(true); - // name is hidden - if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("")) { - hiddenNetwork = true; - passwdWid = new PasswdWidget(this); - passwdWid->setPassword(false); - int widgetWidth = 270; - int widgetHeight = 86; - int x = (width() - widgetWidth) / 2; - int y = (height() - widgetHeight) / 2; - passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); - passwdWid->show(); - passwdWid->setFocusToLineEdit(); - return; - } - - // name isn't hidden - hiddenNetwork = false; - QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text(); - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { - QString profileName = wpaCommand->existentProfile(profile); - netctlCommand->startProfile(profileName); - if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { - if (netctlCommand->isProfileActive(profileName)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - } - else { - if (netctlCommand->isProfileActive(profileName)) - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); - else - ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); - } - } - else { - QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text(); - if (security.contains(QString("none"))) - return connectToUnknownEssid(QString("")); - else { - passwdWid = new PasswdWidget(this); - passwdWid->setPassword(true); - int widgetWidth = 270; - int widgetHeight = 86; - int x = (width() - widgetWidth) / 2; - int y = (height() - widgetHeight) / 2; - passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); - passwdWid->show(); - passwdWid->setFocusToLineEdit(); - return; - } - } - - updateWifiTab(); -} - - -void MainWindow::wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) -{ - Q_UNUSED(previous); - if (debug) qDebug() << "[MainWindow]" << "[wifiTabRefreshButtons]"; - if (!checkExternalApps(QString("wpasup"))) - return errorWin->showWindow(1, QString("[MainWindow] : [wifiTabRefreshButtons]")); - if (current == 0) { - ui->pushButton_wifiStart->setDisabled(true); - return; - } - if (ui->tableWidget_wifi->item(current->row(), 0)->text() == QString("")) { - ui->pushButton_wifiStart->setDisabled(true); - return; - } - - ui->pushButton_wifiStart->setEnabled(true); - if (!ui->tableWidget_wifi->item(current->row(), 4)->text().isEmpty()) { - if (!ui->tableWidget_wifi->item(current->row(), 3)->text().isEmpty()) { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Stop")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("process-stop")); - } - else { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); - } - } - else { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); - } -} diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index 25a7be2..8256899 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -97,8 +97,8 @@ private slots: // main tab slots void mainTabContextualMenu(const QPoint &pos); void mainTabEditProfile(); - void mainTabRemoveProfile(); void mainTabEnableProfile(); + void mainTabRemoveProfile(); void mainTabRestartProfile(); void mainTabStartProfile(); void mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous);