From 25ca2ef1d938556f3973f5e5a411aed9f8e40bb1 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Mon, 2 Mar 2015 06:00:42 +0300 Subject: [PATCH] rewrite private slots TODO: add more methods to dbusinteraction, check dbus calls --- sources/gui/src/dbusoperation.cpp | 4 +- sources/gui/src/mainprivateslots.cpp | 205 ++++++++++++++------------- sources/gui/src/mainpublicslots.cpp | 17 +-- sources/gui/src/mainwindow.cpp | 3 + sources/gui/src/passwdwidget.cpp | 4 +- 5 files changed, 116 insertions(+), 117 deletions(-) diff --git a/sources/gui/src/dbusoperation.cpp b/sources/gui/src/dbusoperation.cpp index a7ef689..c548bcf 100644 --- a/sources/gui/src/dbusoperation.cpp +++ b/sources/gui/src/dbusoperation.cpp @@ -30,7 +30,7 @@ QList parseOutputNetctl(const QList raw, if (debug) qDebug() << PDEBUG; QList profileInfo; - if (raw.count() == 0) return profileInfo; + if (raw.isEmpty()) return profileInfo; QStringList list = raw[0].toStringList(); for (int i=0; i parseOutputWifi(const QList raw, if (debug) qDebug() << PDEBUG; QList wifiInfo; - if (raw.count() == 0) return wifiInfo; + if (raw.isEmpty()) return wifiInfo; QStringList list = raw[0].toStringList(); for (int i=0; isetVisible(true); toolBarActions[QString("mainRefresh")]->setVisible(true); - if (ui->tableWidget_main->currentItem() == 0) return; + if (ui->tableWidget_main->currentItem() == nullptr) return; if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { toolBarActions[QString("mainRestart")]->setVisible(true); toolBarActions[QString("mainStart")]->setText(QApplication::translate("MainWindow", "Stop")); @@ -100,8 +100,7 @@ void MainWindow::updateMenuMain() toolBarActions[QString("mainStart")]->setIcon(QIcon::fromTheme("system-run")); } if (!mainTabGetActiveProfiles().isEmpty()) { - if (!mainTabGetActiveProfiles() - .contains(ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text())) + if (!mainTabGetActiveProfiles().contains(ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text())) toolBarActions[QString("mainSwitch")]->setVisible(true); toolBarActions[QString("mainStopAll")]->setVisible(true); } @@ -126,15 +125,9 @@ void MainWindow::updateMenuProfile() actionMenu->setDefaultAction(toolBarActions[QString("profileSave")]); toolBarActions[QString("profileClear")]->setVisible(true); - if (ui->comboBox_profile->currentText().isEmpty()) { - toolBarActions[QString("profileLoad")]->setVisible(false); - toolBarActions[QString("profileRemove")]->setVisible(false); - toolBarActions[QString("profileSave")]->setVisible(false); - } else { - toolBarActions[QString("profileLoad")]->setVisible(true); - toolBarActions[QString("profileRemove")]->setVisible(true); - toolBarActions[QString("profileSave")]->setVisible(true); - } + toolBarActions[QString("profileLoad")]->setVisible(!ui->comboBox_profile->currentText().isEmpty()); + toolBarActions[QString("profileRemove")]->setVisible(!ui->comboBox_profile->currentText().isEmpty()); + toolBarActions[QString("profileSave")]->setVisible(!ui->comboBox_profile->currentText().isEmpty()); } @@ -145,7 +138,7 @@ void MainWindow::updateMenuWifi() actionMenu->setDefaultAction(toolBarActions[QString("wifiStart")]); toolBarActions[QString("wifiRefresh")]->setVisible(true); - if (ui->tableWidget_wifi->currentItem() == 0) return; + if (ui->tableWidget_wifi->currentItem() == nullptr) 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()) { toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Stop")); @@ -176,9 +169,15 @@ void MainWindow::updateMainTab() QList profiles; bool netctlAutoStatus = false; if (useHelper) { - netctlAutoStatus = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, - DBUS_HELPER_INTERFACE, QString("isNetctlAutoActive"), - QList(), true, debug)[0].toBool(); + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, + DBUS_HELPER_INTERFACE, QString("isNetctlAutoActive"), + QList(), true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return updateMainTab(); + } + netctlAutoStatus = responce[0].toBool(); profiles = parseOutputNetctl(sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, DBUS_HELPER_INTERFACE, QString("ProfileList"), QList(), true, debug), debug); @@ -214,7 +213,7 @@ void MainWindow::updateMainTab() toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Enabled")).arg(checkStatus(profiles[i].enabled)); // name ui->tableWidget_main->setItem(i, 0, new QTableWidgetItem(profiles[i].name)); - ui->tableWidget_main->item(i, 0)->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); + ui->tableWidget_main->item(i, 0)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->tableWidget_main->item(i, 0)->setToolTip(toolTip); ui->tableWidget_main->item(i, 0)->setFont(font); // description @@ -306,7 +305,7 @@ void MainWindow::updateWifiTab() toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Exists")).arg(checkStatus(scanResults[i].exists)); // name ui->tableWidget_wifi->setItem(i, 0, new QTableWidgetItem(scanResults[i].name)); - ui->tableWidget_wifi->item(i, 0)->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); + ui->tableWidget_wifi->item(i, 0)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->tableWidget_wifi->item(i, 0)->setToolTip(toolTip); ui->tableWidget_wifi->item(i, 0)->setFont(font); // signal @@ -347,8 +346,7 @@ void MainWindow::updateWifiTab() void MainWindow::mainTabContextualMenu(const QPoint &pos) { if (debug) qDebug() << PDEBUG; - if (ui->tableWidget_main->currentItem() == 0) - return; + if (ui->tableWidget_main->currentItem() == nullptr) return; // create menu QMenu menu(this); @@ -410,12 +408,13 @@ void MainWindow::mainTabContextualMenu(const QPoint &pos) void MainWindow::mainTabEditProfile() { if (debug) qDebug() << PDEBUG; + if (ui->tableWidget_main->currentItem() == nullptr) return; 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); + ui->comboBox_profile->setCurrentIndex(ui->comboBox_profile->count() - 1); } @@ -427,13 +426,11 @@ void MainWindow::mainTabEnableProfile() emit(needToBeConfigured()); return; } - if (ui->tableWidget_main->currentItem() == 0) return; + if (ui->tableWidget_main->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - bool previous = !ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty(); - bool current = enableProfileSlot(profile); - if (current != previous) + if (enableProfileSlot(profile)) ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); else ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); @@ -447,9 +444,10 @@ QStringList MainWindow::mainTabGetActiveProfiles() if (debug) qDebug() << PDEBUG; QStringList profiles; - for (int i=0; itableWidget_main->rowCount(); i++) - if (!ui->tableWidget_main->item(i, 2)->text().isEmpty()) - profiles.append(ui->tableWidget_main->item(i, 0)->text()); + for (int i=0; itableWidget_main->rowCount(); i++) { + if (ui->tableWidget_main->item(i, 2)->text().isEmpty()) continue; + profiles.append(ui->tableWidget_main->item(i, 0)->text()); + } return profiles; } @@ -458,16 +456,23 @@ QStringList MainWindow::mainTabGetActiveProfiles() void MainWindow::mainTabRemoveProfile() { if (debug) qDebug() << PDEBUG; + if (ui->tableWidget_main->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - bool status; + bool status = false; if (useHelper) { QList args; args.append(profile); - status = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("Remove"), - args, true, debug)[0].toBool(); + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, + DBUS_HELPER_INTERFACE, QString("Remove"), + args, true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return mainTabRemoveProfile(); + } + status = responce[0].toBool(); } else status = netctlProfile->removeProfile(profile); if (status) @@ -487,12 +492,11 @@ void MainWindow::mainTabRestartProfile() emit(needToBeConfigured()); return; } - if (ui->tableWidget_main->currentItem() == 0) return; + if (ui->tableWidget_main->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - bool status = restartProfileSlot(profile); - if (status) + if (restartProfileSlot(profile)) ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); else ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); @@ -509,13 +513,11 @@ void MainWindow::mainTabStartProfile() emit(needToBeConfigured()); return; } - if (ui->tableWidget_main->currentItem() == 0) return; + if (ui->tableWidget_main->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - bool previous = !ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty(); - bool current = startProfileSlot(profile); - if (current != previous) + if (startProfileSlot(profile)) ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); else ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); @@ -534,12 +536,18 @@ void MainWindow::mainTabStopAllProfiles() } ui->tabWidget->setDisabled(true); - bool status; - if (useHelper) - status = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("StopAll"), - QList(), true, debug)[0].toBool(); - else + bool status = false; + if (useHelper) { + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, + DBUS_HELPER_INTERFACE, QString("StopAll"), + QList(), true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return mainTabStopAllProfiles(); + } + status = responce[0].toBool(); + } else status = netctlCommand->stopAllProfiles(); if (status) ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); @@ -558,13 +566,11 @@ void MainWindow::mainTabSwitchToProfile() emit(needToBeConfigured()); return; } - if (ui->tableWidget_main->currentItem() == 0) return; + if (ui->tableWidget_main->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); - bool previous = !ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty(); - bool current = switchToProfileSlot(profile); - if (current != previous) + if (switchToProfileSlot(profile)) ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); else ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error")); @@ -783,13 +789,20 @@ void MainWindow::profileTabCreateProfile() if (useHelper) { QStringList settingsList; for (int i=0; i args; args.append(profile); args.append(settingsList); - status = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("Create"), - args, true, debug)[0].toBool(); + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, + DBUS_HELPER_INTERFACE, QString("Create"), + args, true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return profileTabCreateProfile(); + } + status = responce[0].toBool(); + } else { QString profileTempName = netctlProfile->createProfile(profile, settings); status = netctlProfile->copyProfile(profileTempName); @@ -808,15 +821,20 @@ void MainWindow::profileTabLoadProfile() if (debug) qDebug() << PDEBUG; QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); - if (profile.isEmpty()) - return; + if (profile.isEmpty()) return; QMap settings; if (useHelper) { QList args; args.append(profile); - QStringList settingsList = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, DBUS_HELPER_INTERFACE, QString("Profile"), - args, true, debug)[0].toStringList(); + args, true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return profileTabLoadProfile(); + } + QStringList settingsList = responce[0].toStringList(); for (int i=0; igetSettingsFromProfile(profile); - if (settings.isEmpty()) - return ErrorWindow::showWindow(17, QString(PDEBUG), debug); + if (settings.isEmpty()) return ErrorWindow::showWindow(17, QString(PDEBUG), debug); generalWid->setSettings(settings); if (generalWid->connectionType->currentText() == QString("ethernet")) { @@ -870,15 +887,21 @@ void MainWindow::profileTabRemoveProfile() if (debug) qDebug() << PDEBUG; ui->tabWidget->setDisabled(true); - // call netctlprofile QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); + if (profile.isEmpty()) return ErrorWindow::showWindow(17, QString(PDEBUG), debug); bool status = false; if (useHelper) { QList args; args.append(profile); - status = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("Remove"), - args, true, debug)[0].toBool(); + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, + DBUS_HELPER_INTERFACE, QString("Remove"), + args, true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return profileTabLoadProfile(); + } + status = responce[0].toBool(); } else status = netctlProfile->removeProfile(profile); if (status) @@ -894,7 +917,7 @@ void MainWindow::profileTabRemoveProfile() void MainWindow::wifiTabContextualMenu(const QPoint &pos) { if (debug) qDebug() << PDEBUG; - if (ui->tableWidget_wifi->currentItem() == 0) return; + if (ui->tableWidget_wifi->currentItem() == nullptr) return; // create menu QMenu menu(this); @@ -934,13 +957,8 @@ void MainWindow::wifiTabSetEnabled(const bool state) if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "State" << state; - if (state) { - ui->tableWidget_wifi->show(); - ui->label_wifi->hide(); - } else { - ui->tableWidget_wifi->hide(); - ui->label_wifi->show(); - } + ui->tableWidget_wifi->setHidden(!state); + ui->label_wifi->setHidden(state); } @@ -952,7 +970,7 @@ void MainWindow::wifiTabStart() emit(needToBeConfigured()); return; } - if (ui->tableWidget_wifi->currentItem() == 0) return; + if (ui->tableWidget_wifi->currentItem() == nullptr) return; ui->tabWidget->setDisabled(true); // name is hidden @@ -960,8 +978,8 @@ void MainWindow::wifiTabStart() hiddenNetwork = true; passwdWid = new PasswdWidget(this); passwdWid->setPassword(false); - int widgetWidth = 270; - int widgetHeight = 86; + int widgetWidth = 2 * width() / 3; + int widgetHeight = 110; int x = (width() - widgetWidth) / 2; int y = (height() - widgetHeight) / 2; passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); @@ -973,41 +991,34 @@ void MainWindow::wifiTabStart() // name isn't hidden hiddenNetwork = false; QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text(); + QString profileName = QString(""); if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { - bool previous = !ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty(); - bool current; if (useHelper) { QList args; args.append(profile); - QString profileName = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, - DBUS_HELPER_INTERFACE, QString("ProfileByEssid"), - args, true, debug)[0].toString(); - args.clear(); - args.append(profileName); - sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("Start"), - args, true, debug); - current = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, - DBUS_HELPER_INTERFACE, QString("isProfileActive"), - args, true, debug)[0].toBool(); - } else { - QString profileName = wpaCommand->existentProfile(profile); - netctlCommand->startProfile(profileName); - current = netctlCommand->isProfileActive(profileName); - } - if (current != previous) + QList responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, + DBUS_HELPER_INTERFACE, QString("ProfileByEssid"), + args, true, debug); + if (responce.isEmpty()) { + if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; + useHelper = false; + return wifiTabStart(); + } + profileName = responce[0].toString(); + } else + profileName = wpaCommand->existentProfile(profile); + if (startProfileSlot(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("")); + if (security == QString("none")) return connectToUnknownEssid(QString("")); else { passwdWid = new PasswdWidget(this); passwdWid->setPassword(true); - int widgetWidth = 270; - int widgetHeight = 86; + int widgetWidth = 2 * width() / 3; + int widgetHeight = 110; int x = (width() - widgetWidth) / 2; int y = (height() - widgetHeight) / 2; passwdWid->setGeometry(x, y, widgetWidth, widgetHeight); diff --git a/sources/gui/src/mainpublicslots.cpp b/sources/gui/src/mainpublicslots.cpp index 689f850..9424e2e 100644 --- a/sources/gui/src/mainpublicslots.cpp +++ b/sources/gui/src/mainpublicslots.cpp @@ -467,7 +467,6 @@ void MainWindow::connectToUnknownEssid(const QString passwd) QString profile = QString("netctl-gui-") + settings[QString("ESSID")]; profile.remove(QChar('"')).remove(QChar('\'')); - bool status = false; if (useHelper) { QStringList settingsList; for (int i=0; i responce = sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_LIB_PATH, - DBUS_HELPER_INTERFACE, QString("isProfileActive"), - args, true, debug); - if (responce.isEmpty()) - status = netctlCommand->isProfileActive(profile); - else - status = responce[0].toBool(); } else { QString profileTempName = netctlProfile->createProfile(profile, settings); netctlProfile->copyProfile(profileTempName); - netctlCommand->startProfile(profile); - status = netctlCommand->isProfileActive(profile); } QString message; - if (status) { + if (startProfileSlot(profile)) { message = QApplication::translate("MainWindow", "Connection is successfully."); ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done")); } else { diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index d753503..fc2e7f6 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -268,10 +268,13 @@ void MainWindow::closeEvent(QCloseEvent *event) bool MainWindow::checkExternalApps(const QString apps = QString("all")) { if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Applications" << apps; if (configuration[QString("SKIPCOMPONENTS")] == QString("true")) return true; QStringList cmd; cmd.append("which"); + // avoid null-lines arguments + cmd.append("true"); if ((apps == QString("helper")) || (apps == QString("all"))) { cmd.append(configuration[QString("HELPER_PATH")]); } diff --git a/sources/gui/src/passwdwidget.cpp b/sources/gui/src/passwdwidget.cpp index c989b40..991a03d 100644 --- a/sources/gui/src/passwdwidget.cpp +++ b/sources/gui/src/passwdwidget.cpp @@ -97,7 +97,7 @@ void PasswdWidget::passwdApply() void PasswdWidget::setEchoMode(const int mode) { if (mode == 0) - ui->lineEdit->setEchoMode(QLineEdit::Normal); - else ui->lineEdit->setEchoMode(QLineEdit::Password); + else + ui->lineEdit->setEchoMode(QLineEdit::Normal); }