diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt index 5db99cd..b6d359d 100644 --- a/sources/CMakeLists.txt +++ b/sources/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.8.12) +wcmake_minimum_required (VERSION 2.8.12) cmake_policy (SET CMP0003 OLD) cmake_policy (SET CMP0002 OLD) @@ -11,7 +11,7 @@ set (PROJECT_CONTACT "esalexeev@gmail.com") set (PROJECT_LICENSE "GPLv3") set (PROJECT_VERSION_MAJOR 1) set (PROJECT_VERSION_MINOR 4) -set (PROJECT_VERSION_PATCH 0) +set (PROJECT_VERSION_PATCH 1) set (PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) string (TIMESTAMP CURRENT_DATE "%Y-%m-%d %H:%M" UTC) string (TIMESTAMP CURRENT_YEAR "%Y") diff --git a/sources/gui/docs/.directory b/sources/gui/docs/.directory new file mode 100644 index 0000000..82ed1a1 --- /dev/null +++ b/sources/gui/docs/.directory @@ -0,0 +1,3 @@ +[Dolphin] +Timestamp=2015,3,7,17,10,22 +Version=3 diff --git a/sources/gui/docs/netctl-gui-dbus-api.html b/sources/gui/docs/netctl-gui-dbus-api.html index 38daeaa..00c8fda 100644 --- a/sources/gui/docs/netctl-gui-dbus-api.html +++ b/sources/gui/docs/netctl-gui-dbus-api.html @@ -198,7 +198,7 @@ small { QStringList WiFi() - returns available WiFi points in format NAME|SECURITY|SIGNAL|ACTIVE|EXISTS + returns available WiFi points in format NAME|SECURITY|FREQS|MACS|SIGNAL|ACTIVE|EXISTS yes @@ -223,7 +223,7 @@ small { QStringList ProfileList() - returns available profiles in format NAME|DESCRIPTION|ACTIVE|ENABLED + returns available profiles in format NAME|DESCRIPTION|ESSID|ACTIVE|ENABLED no @@ -279,6 +279,11 @@ small { returns value of the key by the given profile or empty line no + + QStringList ProfileValues(QString profile, QStringList keys) + returns values of the keys by the given profile or empty lines + no + org.netctlgui.netctlgui service (session bus) @@ -378,4 +383,4 @@ small { - \ No newline at end of file + diff --git a/sources/gui/src/dbusoperation.cpp b/sources/gui/src/dbusoperation.cpp index ef15f1d..e228aea 100644 --- a/sources/gui/src/dbusoperation.cpp +++ b/sources/gui/src/dbusoperation.cpp @@ -33,12 +33,13 @@ QList parseOutputNetctl(const QList raw) QStringList list = raw[0].toStringList(); for (int i=0; i parseOutputWifi(const QList raw) QStringList list = raw[0].toStringList(); for (int i=0; ilineEdit_wpaConfig->text().isEmpty()) - if (!QFile(ui->lineEdit_wpaConfig->text()).exists()) - return 1; + if (!QFile(ui->lineEdit_wpaConfig->text()).exists()) return 1; // all fine return 0; } diff --git a/sources/gui/src/generalwidget.cpp b/sources/gui/src/generalwidget.cpp index 5254a66..b8fba35 100644 --- a/sources/gui/src/generalwidget.cpp +++ b/sources/gui/src/generalwidget.cpp @@ -156,11 +156,9 @@ int GeneralWidget::isOk() (ui->comboBox_connection->currentText() == QString("vlan")) || (ui->comboBox_connection->currentText() == QString("macvlan")) || (ui->comboBox_connection->currentText() == QString("openvswitch"))) - if (ui->listWidget_bindto->count() == 0) - return 1; + if (ui->listWidget_bindto->count() == 0) return 1; // empty description - if (ui->lineEdit_description->text().isEmpty()) - return 2; + if (ui->lineEdit_description->text().isEmpty()) return 2; // all fine return 0; } diff --git a/sources/gui/src/ipwidget.cpp b/sources/gui/src/ipwidget.cpp index ac3a0e8..144b4a7 100644 --- a/sources/gui/src/ipwidget.cpp +++ b/sources/gui/src/ipwidget.cpp @@ -375,15 +375,13 @@ int IpWidget::isOk() if ((ui->checkBox_ip->checkState() == Qt::Checked) && (ui->comboBox_ip->currentText() == QString("static"))) if ((ui->listWidget_ipAddress->count() == 0) || - (ui->lineEdit_gateway->text().isEmpty())) - return 1; + (ui->lineEdit_gateway->text().isEmpty())) return 1; // ipv6 settings is not set if ((ui->checkBox_ip6->checkState() == Qt::Checked) && ((ui->comboBox_ip6->currentText() == QString("static")) || (ui->comboBox_ip6->currentText() == QString("stateless")))) if ((ui->listWidget_ipAddress6->count() == 0) || - (ui->lineEdit_gateway6->text().isEmpty())) - return 2; + (ui->lineEdit_gateway6->text().isEmpty())) return 2; // all fine return 0; } diff --git a/sources/gui/src/mainprivateslots.cpp b/sources/gui/src/mainprivateslots.cpp index 3815124..0a536b0 100644 --- a/sources/gui/src/mainprivateslots.cpp +++ b/sources/gui/src/mainprivateslots.cpp @@ -85,7 +85,6 @@ void MainWindow::setMenuActionsShown(const bool state) void MainWindow::updateMenuMain() { if (debug) qDebug() << PDEBUG; - setMenuActionsShown(false); actionMenu->setDefaultAction(toolBarActions[QString("mainStart")]); toolBarActions[QString("netctlAuto")]->setVisible(true); @@ -110,7 +109,7 @@ void MainWindow::updateMenuMain() toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-remove")); } else { toolBarActions[QString("mainEnable")]->setText(QApplication::translate("MainWindow", "Enable")); - toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-add")); + toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("list-add")); } toolBarActions[QString("mainEnable")]->setVisible(true); toolBarActions[QString("mainEdit")]->setVisible(true); @@ -121,7 +120,6 @@ void MainWindow::updateMenuMain() void MainWindow::updateMenuProfile() { if (debug) qDebug() << PDEBUG; - setMenuActionsShown(false); actionMenu->setDefaultAction(toolBarActions[QString("profileSave")]); toolBarActions[QString("profileClear")]->setVisible(true); @@ -134,7 +132,6 @@ void MainWindow::updateMenuProfile() void MainWindow::updateMenuWifi() { if (debug) qDebug() << PDEBUG; - setMenuActionsShown(false); actionMenu->setDefaultAction(toolBarActions[QString("wifiStart")]); toolBarActions[QString("wifiRefresh")]->setVisible(true); @@ -204,9 +201,9 @@ void MainWindow::updateMainTab() font.setItalic(profiles[i].enabled); // tooltip QString toolTip = QString(""); - toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Profile")).arg(profiles[i].name); toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Active")).arg(checkStatus(profiles[i].active)); - toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Enabled")).arg(checkStatus(profiles[i].enabled)); + toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Enabled")).arg(checkStatus(profiles[i].enabled)); + toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Is wireless")).arg(checkStatus(!profiles[i].essid.isEmpty())); // name ui->tableWidget_main->setItem(i, 0, new QTableWidgetItem(profiles[i].name)); ui->tableWidget_main->item(i, 0)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); @@ -294,7 +291,8 @@ void MainWindow::updateWifiTab() font.setItalic(scanResults[i].exists); // tooltip QString toolTip = QString(""); - toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "ESSID")).arg(scanResults[i].name); + toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "MAC")).arg(scanResults[i].macs.join(QString(", "))); + toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Frequency")).arg(scanResults[i].frequencies.join(QString(", "))); toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Active")).arg(checkStatus(scanResults[i].active)); toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Exists")).arg(checkStatus(scanResults[i].exists)); // name @@ -303,7 +301,7 @@ void MainWindow::updateWifiTab() ui->tableWidget_wifi->item(i, 0)->setToolTip(toolTip); ui->tableWidget_wifi->item(i, 0)->setFont(font); // signal - ui->tableWidget_wifi->setItem(i, 1, new QTableWidgetItem(scanResults[i].signal)); + ui->tableWidget_wifi->setItem(i, 1, new QTableWidgetItem(QString::number(scanResults[i].signal))); ui->tableWidget_wifi->item(i, 1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->tableWidget_wifi->item(i, 1)->setToolTip(toolTip); // security @@ -372,7 +370,7 @@ void MainWindow::mainTabContextualMenu(const QPoint &pos) enableProfile->setIcon(QIcon::fromTheme("edit-remove")); } else { enableProfile->setText(QApplication::translate("MainWindow", "Enable profile")); - enableProfile->setIcon(QIcon::fromTheme("edit-add")); + enableProfile->setIcon(QIcon::fromTheme("list-add")); } // actions diff --git a/sources/gui/src/mainpublicslots.cpp b/sources/gui/src/mainpublicslots.cpp index 0a8f3b1..6fce4ed 100644 --- a/sources/gui/src/mainpublicslots.cpp +++ b/sources/gui/src/mainpublicslots.cpp @@ -301,12 +301,13 @@ bool MainWindow::startHelper() void MainWindow::setTab(int tab) { if (debug) qDebug() << PDEBUG; - if (debug) qDebug() << PDEBUG << ":" << "Update tab" << tab; + if (debug) qDebug() << PDEBUG << ":" << "Set tab" << tab; if (tab > 2) tab = 0; - ui->tabWidget->setCurrentIndex(tab); - - updateTabs(tab); + if (tab == ui->tabWidget->currentIndex()) + updateTabs(tab); + else + ui->tabWidget->setCurrentIndex(tab); } @@ -325,7 +326,7 @@ void MainWindow::updateConfiguration(const QMap args) for (int i=0; i args) QString language = Language::defineLanguage(configPath, args[QString("options")].toString()); qtTranslator->load(QString("qt_%1").arg(language), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); qApp->installTranslator(qtTranslator); - translator->load(QString(":/translations/") + language); + translator->load(QString(":/translations/%1").arg(language)); qApp->installTranslator(translator); createObjects(); @@ -345,11 +346,7 @@ void MainWindow::updateConfiguration(const QMap args) createToolBars(); // tray - if ((QSystemTrayIcon::isSystemTrayAvailable()) && - (configuration[QString("SYSTRAY")] == QString("true"))) - trayIcon->setVisible(true); - else - trayIcon->setVisible(false); + trayIcon->setVisible(QSystemTrayIcon::isSystemTrayAvailable() && (configuration[QString("SYSTRAY")] == QString("true"))); if (trayIcon->isVisible()) { if (configuration[QString("STARTTOTRAY")] == QString("true")) hide(); @@ -375,12 +372,18 @@ void MainWindow::updateMenu() int tab = ui->tabWidget->currentIndex(); setMenuActionsShown(false); - if (tab == 0) - updateMenuMain(); - else if (tab == 1) + switch (tab) { + case 1: updateMenuProfile(); - else if (tab == 2) + break; + case 2: updateMenuWifi(); + break; + case 0: + default: + updateMenuMain(); + break; + } } @@ -389,12 +392,18 @@ void MainWindow::updateTabs(const int tab) if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Update tab" << tab; - if (tab == 0) - updateMainTab(); - else if (tab == 1) + switch (tab) { + case 1: updateProfileTab(); - else if (tab == 2) + break; + case 2: updateWifiTab(); + break; + case 0: + default: + updateMainTab(); + break; + } updateMenu(); } diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index 9a21a1a..09886d4 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -479,7 +479,7 @@ void MainWindow::createToolBars() toolBarActions[QString("mainRestart")] = menu->addAction(QIcon::fromTheme(QString("view-refresh")), QApplication::translate("MainWindow", "Restart"), this, SLOT(mainTabRestartProfile())); - toolBarActions[QString("mainEnable")] = menu->addAction(QIcon::fromTheme(QString("edit-add")), + toolBarActions[QString("mainEnable")] = menu->addAction(QIcon::fromTheme(QString("list-add")), QApplication::translate("MainWindow", "Enable"), this, SLOT(mainTabEnableProfile())); toolBarActions[QString("mainStopAll")] = menu->addAction(QIcon::fromTheme(QString("process-stop")), diff --git a/sources/gui/src/mobilewidget.cpp b/sources/gui/src/mobilewidget.cpp index d512896..3a4c1cc 100644 --- a/sources/gui/src/mobilewidget.cpp +++ b/sources/gui/src/mobilewidget.cpp @@ -118,12 +118,10 @@ QMap MobileWidget::getSettings() int MobileWidget::isOk() { // APN is not set - if (ui->lineEdit_apn->text().isEmpty()) - return 1; + if (ui->lineEdit_apn->text().isEmpty()) return 1; // config file doesn't exist if (!ui->lineEdit_options->text().isEmpty()) - if (!QFile(ui->lineEdit_options->text()).exists()) - return 2; + if (!QFile(ui->lineEdit_options->text()).exists()) return 2; // all fine return 0; } diff --git a/sources/gui/src/netctlautowindow.cpp b/sources/gui/src/netctlautowindow.cpp index d9ebbfa..518ec7c 100644 --- a/sources/gui/src/netctlautowindow.cpp +++ b/sources/gui/src/netctlautowindow.cpp @@ -145,24 +145,18 @@ void NetctlAutoWindow::netctlAutoContextualMenu(const QPoint &pos) QAction *enableProfile = menu.addAction(QApplication::translate("NetctlAutoWindow", "Enable profile")); menu.addSeparator(); QAction *enableAllProfiles = menu.addAction(QApplication::translate("NetctlAutoWindow", "Enable all profiles")); - enableAllProfiles->setIcon(QIcon::fromTheme("edit-add")); + enableAllProfiles->setIcon(QIcon::fromTheme("list-add")); QAction *disableAllProfiles = menu.addAction(QApplication::translate("NetctlAutoWindow", "Disable all profiles")); disableAllProfiles->setIcon(QIcon::fromTheme("edit-delete")); // set text - if (!ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 2)->text().isEmpty()) { - enableProfile->setVisible(false); - startProfile->setVisible(false); + startProfile->setVisible(ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 2)->text().isEmpty()); + if (!ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 3)->text().isEmpty()) { + enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Enable")); + enableProfile->setIcon(QIcon::fromTheme("list-add")); } else { - enableProfile->setVisible(true); - startProfile->setVisible(true); - if (!ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 3)->text().isEmpty()) { - enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Enable")); - enableProfile->setIcon(QIcon::fromTheme("edit-add")); - } else { - enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Disable")); - enableProfile->setIcon(QIcon::fromTheme("edit-delete")); - } + enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Disable")); + enableProfile->setIcon(QIcon::fromTheme("edit-delete")); } // actions @@ -227,7 +221,7 @@ void NetctlAutoWindow::netctlAutoUpdateTable() ui->actionDisableAll->setVisible(false); ui->actionEnableAll->setVisible(false); ui->actionRestartService->setVisible(false); - netctlAutoRefreshButtons(0, 0); + netctlAutoRefreshButtons(nullptr, nullptr); return; } QList profiles; @@ -288,10 +282,11 @@ void NetctlAutoWindow::netctlAutoUpdateTable() ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); #endif + ui->tableWidget->setCurrentCell(-1, -1); ui->tableWidget->setEnabled(true); ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Updated")); - netctlAutoRefreshButtons(0, 0); + netctlAutoRefreshButtons(nullptr, nullptr); update(); } @@ -325,8 +320,7 @@ void NetctlAutoWindow::netctlAutoEnableProfile() { if (debug) qDebug() << PDEBUG; - if (ui->tableWidget->currentItem() == 0) - return; + if (ui->tableWidget->currentItem() == nullptr) return; ui->tableWidget->setDisabled(true); QString profile = ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 0)->text(); bool status = false; @@ -380,8 +374,7 @@ void NetctlAutoWindow::netctlAutoStartProfile() { if (debug) qDebug() << PDEBUG; - if (ui->tableWidget->currentItem() == nullptr) - return; + if (ui->tableWidget->currentItem() == nullptr) return; ui->tableWidget->setDisabled(true); QString profile = ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 0)->text(); bool status = false; @@ -492,34 +485,23 @@ void NetctlAutoWindow::netctlAutoRefreshButtons(QTableWidgetItem *current, QTabl ui->actionSwitch->setVisible(false); return; } - if (!ui->tableWidget->item(current->row(), 2)->text().isEmpty()) { + toolBarActions[QString("switch")]->setEnabled(ui->tableWidget->item(current->row(), 2)->text().isEmpty()); + ui->actionSwitch->setVisible(ui->tableWidget->item(current->row(), 2)->text().isEmpty()); + toolBarActions[QString("enable")]->setEnabled(true); + ui->actionEnable->setVisible(true); + if (!ui->tableWidget->item(current->row(), 3)->text().isEmpty()) { // buttons - toolBarActions[QString("enable")]->setDisabled(true); - toolBarActions[QString("switch")]->setDisabled(true); + toolBarActions[QString("enable")]->setText(QApplication::translate("NetctlAutoWindow", "Enable")); + toolBarActions[QString("enable")]->setIcon(QIcon::fromTheme("list-add")); // menu - ui->actionEnable->setVisible(false); - ui->actionSwitch->setVisible(false); + ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Enable profile")); + ui->actionEnable->setIcon(QIcon::fromTheme("list-add")); } else { // buttons - toolBarActions[QString("enable")]->setEnabled(true); - toolBarActions[QString("switch")]->setEnabled(true); + toolBarActions[QString("enable")]->setText(QApplication::translate("NetctlAutoWindow", "Disable")); + toolBarActions[QString("enable")]->setIcon(QIcon::fromTheme("edit-delete")); // menu - ui->actionEnable->setVisible(true); - ui->actionSwitch->setVisible(true); - if (!ui->tableWidget->item(current->row(), 3)->text().isEmpty()) { - // buttons - toolBarActions[QString("enable")]->setText(QApplication::translate("NetctlAutoWindow", "Enable")); - toolBarActions[QString("enable")]->setIcon(QIcon::fromTheme("edit-add")); - // menu - ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Enable profile")); - ui->actionEnable->setIcon(QIcon::fromTheme("edit-add")); - } else { - // buttons - toolBarActions[QString("enable")]->setText(QApplication::translate("NetctlAutoWindow", "Disable")); - toolBarActions[QString("enable")]->setIcon(QIcon::fromTheme("edit-delete")); - // menu - ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Disable profile")); - ui->actionEnable->setIcon(QIcon::fromTheme("edit-delete")); - } + ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Disable profile")); + ui->actionEnable->setIcon(QIcon::fromTheme("edit-delete")); } } diff --git a/sources/gui/src/netctlautowindow.ui b/sources/gui/src/netctlautowindow.ui index 4aae3bf..b3e3907 100644 --- a/sources/gui/src/netctlautowindow.ui +++ b/sources/gui/src/netctlautowindow.ui @@ -94,7 +94,7 @@ - + @@ -127,7 +127,7 @@ - + diff --git a/sources/gui/src/pppoewidget.cpp b/sources/gui/src/pppoewidget.cpp index 4dc1865..09a5e83 100644 --- a/sources/gui/src/pppoewidget.cpp +++ b/sources/gui/src/pppoewidget.cpp @@ -157,22 +157,18 @@ int PppoeWidget::isOk() { // config file doesn't exist if (!ui->lineEdit_options->text().isEmpty()) - if (!QFile(ui->lineEdit_options->text()).exists()) - return 1; + if (!QFile(ui->lineEdit_options->text()).exists()) return 1; // mac address if (!ui->lineEdit_mac->text().remove(QChar(':')).isEmpty()) - if (ui->lineEdit_mac->text().length() != (6 * 2 + 5)) - return 2; + if (ui->lineEdit_mac->text().length() != (6 * 2 + 5)) return 2; // session id is not set if (!ui->lineEdit_session->text().remove(QChar(':')).isEmpty()) - if (ui->lineEdit_session->text().split(QChar(':'))[0].isEmpty()) - return 3; + if (ui->lineEdit_session->text().split(QChar(':'))[0].isEmpty()) return 3; // session mac address if (!ui->lineEdit_session->text().remove(QChar(':')).isEmpty()) { QStringList item = ui->lineEdit_session->text().split(QChar(':')); item.removeFirst(); - if (item.join(QChar(':')).length() != (6 * 2 + 5)) - return 4; + if (item.join(QChar(':')).length() != (6 * 2 + 5)) return 4; } // all fine return 0; diff --git a/sources/gui/src/tunnelwidget.cpp b/sources/gui/src/tunnelwidget.cpp index 3af69d7..6b1964d 100644 --- a/sources/gui/src/tunnelwidget.cpp +++ b/sources/gui/src/tunnelwidget.cpp @@ -70,8 +70,7 @@ QMap TunnelWidget::getSettings() int TunnelWidget::isOk() { // ip is not correct - if (!IpRegExp::checkString(ui->lineEdit_remote->text(), IpRegExp::ip4Regex())) - return 1; + if (!IpRegExp::checkString(ui->lineEdit_remote->text(), IpRegExp::ip4Regex())) return 1; // all fine return 0; } diff --git a/sources/gui/src/tuntapwidget.cpp b/sources/gui/src/tuntapwidget.cpp index d6ea207..16c3723 100644 --- a/sources/gui/src/tuntapwidget.cpp +++ b/sources/gui/src/tuntapwidget.cpp @@ -59,11 +59,9 @@ QMap TuntapWidget::getSettings() int TuntapWidget::isOk() { // empty username - if (ui->lineEdit_user->text().isEmpty()) - return 1; + if (ui->lineEdit_user->text().isEmpty()) return 1; // empty group name - if (ui->lineEdit_group->text().isEmpty()) - return 2; + if (ui->lineEdit_group->text().isEmpty()) return 2; // all fine return 0; } diff --git a/sources/gui/src/wirelesswidget.cpp b/sources/gui/src/wirelesswidget.cpp index 615618b..45e4157 100644 --- a/sources/gui/src/wirelesswidget.cpp +++ b/sources/gui/src/wirelesswidget.cpp @@ -232,26 +232,21 @@ int WirelessWidget::isOk() // empty key if ((ui->comboBox_security->currentText() == QString("wep")) || (ui->comboBox_security->currentText() == QString("wpa"))) - if (ui->lineEdit_key->text().isEmpty()) - return 1; + if (ui->lineEdit_key->text().isEmpty()) return 1; // empty settings if (ui->comboBox_security->currentText() == QString("wpa-configsection")) - if (ui->listWidget_wpaConfigSection->count() == 0) - return 2; + if (ui->listWidget_wpaConfigSection->count() == 0) return 2; // file is not set if (ui->comboBox_security->currentText() == QString("wpa-config")) - if (ui->lineEdit_wpaConfig->text().isEmpty()) - return 3; + if (ui->lineEdit_wpaConfig->text().isEmpty()) return 3; // file wpa_supplicant doesn't exists if (ui->comboBox_security->currentText() == QString("wpa-config")) - if (!QFile(ui->lineEdit_wpaConfig->text()).exists()) - return 4; + if (!QFile(ui->lineEdit_wpaConfig->text()).exists()) return 4; // essid is not set if ((ui->comboBox_security->currentText() == QString("none")) || (ui->comboBox_security->currentText() == QString("wep")) || (ui->comboBox_security->currentText() == QString("wpa"))) - if (ui->lineEdit_essid->text().isEmpty()) - return 5; + if (ui->lineEdit_essid->text().isEmpty()) return 5; // all fine return 0; } diff --git a/sources/helper/src/controladaptor.cpp b/sources/helper/src/controladaptor.cpp index 8808180..5e82147 100644 --- a/sources/helper/src/controladaptor.cpp +++ b/sources/helper/src/controladaptor.cpp @@ -259,7 +259,9 @@ QStringList ControlAdaptor::WiFi() QStringList point; point.append(wifiPoints[i].name); point.append(wifiPoints[i].security); - point.append(wifiPoints[i].signal); + point.append(wifiPoints[i].frequencies.join(QChar(','))); + point.append(wifiPoints[i].macs.join(QChar(','))); + point.append(QString::number(wifiPoints[i].signal)); point.append(QString::number(wifiPoints[i].active)); point.append(QString::number(wifiPoints[i].exists)); info.append(point.join(QChar('|'))); diff --git a/sources/helper/src/netctladaptor.cpp b/sources/helper/src/netctladaptor.cpp index a2051ff..d3b8224 100644 --- a/sources/helper/src/netctladaptor.cpp +++ b/sources/helper/src/netctladaptor.cpp @@ -118,6 +118,7 @@ QStringList NetctlAdaptor::ProfileList() QStringList profileInfo; profileInfo.append(profilesInfo[i].name); profileInfo.append(profilesInfo[i].description); + profileInfo.append(profilesInfo[i].essid); profileInfo.append(QString::number(profilesInfo[i].active)); profileInfo.append(QString::number(profilesInfo[i].enabled)); info.append(profileInfo.join(QChar('|'))); @@ -146,6 +147,12 @@ QString NetctlAdaptor::ProfileValue(const QString profile, const QString key) } +QStringList NetctlAdaptor::ProfileValues(const QString profile, const QStringList keys) +{ + return netctlProfile->getValuesFromProfile(profile, keys); +} + + // wpaCommand QString NetctlAdaptor::ProfileByEssid(const QString essid) { diff --git a/sources/helper/src/netctladaptor.h b/sources/helper/src/netctladaptor.h index 5698b91..29e0c94 100644 --- a/sources/helper/src/netctladaptor.h +++ b/sources/helper/src/netctladaptor.h @@ -50,6 +50,7 @@ public slots: // netctlProfile QStringList Profile(const QString profile); QString ProfileValue(const QString profile, const QString key); + QStringList ProfileValues(const QString profile, const QStringList keys); // wpaCommand QString ProfileByEssid(const QString essid); QStringList WirelessInterfaces(); diff --git a/sources/netctlgui/include/netctlgui/netctlinteract.h b/sources/netctlgui/include/netctlgui/netctlinteract.h index 14607f9..53ca7b6 100644 --- a/sources/netctlgui/include/netctlgui/netctlinteract.h +++ b/sources/netctlgui/include/netctlgui/netctlinteract.h @@ -40,6 +40,8 @@ class NetctlProfile; * profile name * @var netctlProfileInfo::description * profile description + * @var netctlProfileInfo::essid + * ESSID if any * @var netctlProfileInfo::active * whether profile is active * @var netctlProfileInfo::enabled @@ -49,6 +51,7 @@ typedef struct { QString name; QString description; + QString essid; bool active; bool enabled; } netctlProfileInfo; diff --git a/sources/netctlgui/include/netctlgui/netctlprofile.h b/sources/netctlgui/include/netctlgui/netctlprofile.h index 7342b14..fc54c6c 100644 --- a/sources/netctlgui/include/netctlgui/netctlprofile.h +++ b/sources/netctlgui/include/netctlgui/netctlprofile.h @@ -85,6 +85,13 @@ public: * @return value by key */ QString getValueFromProfile(const QString profile, const QString key); + /** + * @brief method which return values from profile by keys + * @param profile profile name + * @param keys required keys + * @return values by keys + */ + QStringList getValuesFromProfile(const QString profile, const QStringList keys); /** * @brief method which removes profile * @param profile profile name diff --git a/sources/netctlgui/include/netctlgui/wpasupinteract.h b/sources/netctlgui/include/netctlgui/wpasupinteract.h index efc69a0..97c1402 100644 --- a/sources/netctlgui/include/netctlgui/wpasupinteract.h +++ b/sources/netctlgui/include/netctlgui/wpasupinteract.h @@ -43,6 +43,10 @@ class NetctlProfile; * may be "WPA2", "WEP", "WEP", "none" * @var netctlWifiInfo::signal * Wifi point signal + * @var netctlWifiInfo::macs + * point MAC addresses + * @var netctlWifiInfo::frequencies + * point frequencies * @var netctlWifiInfo::active * whether associated profile is active * @var netctlWifiInfo::exists @@ -50,9 +54,11 @@ class NetctlProfile; */ typedef struct { + QStringList frequencies; + QStringList macs; QString name; QString security; - QString signal; + int signal; bool active; bool exists; } netctlWifiInfo; diff --git a/sources/netctlgui/src/netctlinteract.cpp b/sources/netctlgui/src/netctlinteract.cpp index 3311ed7..da9dd9a 100644 --- a/sources/netctlgui/src/netctlinteract.cpp +++ b/sources/netctlgui/src/netctlinteract.cpp @@ -189,9 +189,16 @@ QList Netctl::getProfileList() for (int i=0; igetValuesFromProfile(profileInfo.name, + keys); + profileInfo.description = profileValues[0]; + profileInfo.essid = profileValues[1]; fullProfilesInfo.append(profileInfo); } @@ -212,9 +219,16 @@ QList Netctl::getProfileListFromNetctlAuto() for (int i=0; igetValuesFromProfile(profileInfo.name, + keys); + profileInfo.description = profileValues[0]; + profileInfo.essid = profileValues[1]; fullProfilesInfo.append(profileInfo); } diff --git a/sources/netctlgui/src/netctlprofile.cpp b/sources/netctlgui/src/netctlprofile.cpp index 48692f6..6371ec7 100644 --- a/sources/netctlgui/src/netctlprofile.cpp +++ b/sources/netctlgui/src/netctlprofile.cpp @@ -237,7 +237,7 @@ QMap NetctlProfile::getSettingsFromProfile(const QString profi /** - * @fn ValueFromProfile + * @fn getValueFromProfile */ QString NetctlProfile::getValueFromProfile(const QString profile, const QString key) { @@ -251,6 +251,24 @@ QString NetctlProfile::getValueFromProfile(const QString profile, const QString } +/** + * @fn getValuesFromProfile + */ +QStringList NetctlProfile::getValuesFromProfile(const QString profile, const QStringList keys) +{ + if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile; + if (debug) qDebug() << PDEBUG << ":" << "Keys" << keys; + + QMap settings = getSettingsFromProfile(profile); + QStringList values; + for (int i=0; i WpaSup::scanWifi() return scanResults; } if (!wpaCliCall(QString("scan"))) return scanResults; - waitForProcess(3); + waitForProcess(1); - QStringList rawOutput = getWpaCliOutput(QString("scan_results")).split(QChar('\n'), QString::SkipEmptyParts); + QStringList rawList = getWpaCliOutput(QString("scan_results")).split(QChar('\n'), QString::SkipEmptyParts); // remove table header - rawOutput.removeFirst(); - // remove duplicates - QStringList rawList; + rawList.removeFirst(); QStringList names; - for (int i=0; i profiles = netctlCommand->getProfileList(); for (int i=0; i"); + // append mac and frequency if exists + int index = names.indexOf(name); + if ((name != QString("")) && (index > -1)) { + scanResults[index].frequencies.append(line[1]); + scanResults[index].macs.append(line[0]); + if (scanResults[index].signal < line[2].toInt()) + scanResults[index].signal = line[2].toInt(); + continue; + } + // point name - if (rawList[i].split(QChar('\t'), QString::SkipEmptyParts).count() == 5) - wifiPoint.name = rawList[i].split(QChar('\t'), QString::SkipEmptyParts)[4]; - else - wifiPoint.name = QString(""); + netctlWifiInfo wifiPoint; + wifiPoint.name = name; // profile status - wifiPoint.active = isProfileActive(wifiPoint.name); - wifiPoint.exists = isProfileExists(wifiPoint.name); + netctlProfileInfo profile; + profile.name = QString(""); + profile.active = false; + for (int j=0; j WpaSup::scanWifi() else security = QString("none"); wifiPoint.security = security; + + // append + names.append(name); scanResults.append(wifiPoint); } stopWpaSupplicant();