end work on interfaces

This commit is contained in:
arcan1s 2015-03-14 06:42:06 +03:00
parent ef2694d7a7
commit f80d6aae6b
38 changed files with 676 additions and 569 deletions

View File

@ -8,7 +8,7 @@ ProjectRootRelative=./
[CMake][CMake Build Directory 0] [CMake][CMake Build Directory 0]
Build Directory Path=file:///home/arcanis/Documents/github/netctl-gui/build Build Directory Path=file:///home/arcanis/Documents/github/netctl-gui/build
Build Type=Debug Build Type=Release
CMake Binary=file:///usr/bin/cmake CMake Binary=file:///usr/bin/cmake
Environment Profile= Environment Profile=
Extra Arguments= Extra Arguments=

41
sources/3rdparty/listmap/listmap.cpp vendored Normal file
View File

@ -0,0 +1,41 @@
/***************************************************************************
* 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 "listmap.h"
QMap<QString, QString> listToMap(const QStringList list)
{
QMap<QString, QString> map;
for (int i=0; i<list.count(); i++) {
QStringList str = list[i].split(QString("=="));
if (str.count() != 2) continue;
map[str[0]] = str[1];
}
return map;
}
QStringList mapToList(const QMap<QString, QString> map)
{
QStringList list;
for (int i=0; i<map.keys().count(); i++)
list.append(QString("%1==X2").arg(map.keys()[i]).arg(map[map.keys()[i]]));
return list;
}

29
sources/3rdparty/listmap/listmap.h vendored Normal file
View File

@ -0,0 +1,29 @@
/***************************************************************************
* 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/ *
***************************************************************************/
#ifndef LISTMAP_H
#define LISTMAP_H
#include <QMap>
#include <QStringList>
QMap<QString, QString> listToMap(const QStringList list);
QStringList mapToList(const QMap<QString,QString> map);
#endif /* LISTMAP_H */

View File

@ -243,7 +243,7 @@ small {
</tr> </tr>
<tr> <tr>
<td>QStringList netctlVerboseProfileList()</td> <td>QStringList netctlVerboseProfileList()</td>
<td>returns available profiles in format <code>NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED</code> from netctl even if netctl-auto is running</td> <td>returns available profiles in format <code>NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED|NETCTL-AUTO</code> from netctl even if netctl-auto is running</td>
<td>no</td> <td>no</td>
</tr> </tr>
<tr> <tr>
@ -253,7 +253,7 @@ small {
</tr> </tr>
<tr> <tr>
<td>QStringList VerboseProfileList()</td> <td>QStringList VerboseProfileList()</td>
<td>returns available profiles in format <code>NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED</code></td> <td>returns available profiles in format <code>NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED|NETCTL-AUTO</code></td>
<td>no</td> <td>no</td>
</tr> </tr>
<tr> <tr>
@ -393,11 +393,6 @@ small {
<td>returns the application process UIDs <code>[UID, EUID]</code></td> <td>returns the application process UIDs <code>[UID, EUID]</code></td>
<td>no</td> <td>no</td>
</tr> </tr>
<tr>
<td>QStringList VerboseInformation()</td>
<td>returns information in format <code>[isNetctlAutoActive, ProfileList, ActiveProfile, isProfileEnabled/autoIsProfileEnabled]</code></td>
<td>no</td>
</tr>
</table> </table>
<h2><a href="#links" class="anchor" id="links"></a>External links</h2> <h2><a href="#links" class="anchor" id="links"></a>External links</h2>

View File

@ -1,6 +1,7 @@
# set files # set files
file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp
${PROJECT_TRDPARTY_DIR}/language/*.cpp) ${PROJECT_TRDPARTY_DIR}/language/*.cpp
${PROJECT_TRDPARTY_DIR}/listmap/*.cpp)
file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h
${PROJECT_TRDPARTY_DIR}/language/*.h) ${PROJECT_TRDPARTY_DIR}/language/*.h)
file (GLOB_RECURSE FORMS *.ui ${PROJECT_TRDPARTY_DIR}/about/*.ui) file (GLOB_RECURSE FORMS *.ui ${PROJECT_TRDPARTY_DIR}/about/*.ui)

View File

@ -19,11 +19,32 @@
#include <QDebug> #include <QDebug>
#include <listmap/listmap.h>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include "dbusoperation.h" #include "dbusoperation.h"
InterfaceAnswer createProfileSlot(const QString profile, QMap<QString,QString> settings,
NetctlInterface* interface, const bool useHelper, const bool debug)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
if (!useHelper) return interface->createProfile(profile, settings);
try {
QList<QVariant> args;
args.append(profile);
args.append(mapToList(settings));
int responce = sendRequestToInterfaceWithArgs(QString("Create"), args, debug)[0].toInt();
return static_cast<InterfaceAnswer>(responce);
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return InterfaceAnswer::Error;
}
}
InterfaceAnswer enableProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer enableProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug) const bool useHelper, const bool debug)
{ {
@ -43,6 +64,25 @@ InterfaceAnswer enableProfileSlot(const QString profile, NetctlInterface *interf
} }
InterfaceAnswer removeProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
if (!useHelper) return interface->removeProfile(profile);
try {
QList<QVariant> args;
args.append(profile);
int responce = sendRequestToInterfaceWithArgs(QString("Remove"), args, debug)[0].toInt();
return static_cast<InterfaceAnswer>(responce);
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return InterfaceAnswer::Error;
}
}
InterfaceAnswer restartProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer restartProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug) const bool useHelper, const bool debug)
{ {
@ -114,3 +154,92 @@ InterfaceAnswer switchToProfileSlot(const QString profile, NetctlInterface *inte
return InterfaceAnswer::Error; return InterfaceAnswer::Error;
} }
} }
InterfaceAnswer connectToEssid(const QString essid, QMap<QString,QString> settings,
NetctlInterface* interface, const bool useHelper, const bool debug)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "ESSID" << essid;
if (!useHelper) return interface->connectToEssid(essid, settings);
try {
QList<QVariant> args;
args.append(essid);
args.append(mapToList(settings));
int responce = sendRequestToInterfaceWithArgs(QString("Essid"), args, debug)[0].toInt();
return static_cast<InterfaceAnswer>(responce);
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return InterfaceAnswer::Error;
}
}
netctlInformation generalInformation(NetctlInterface* interface, const bool useHelper,
const bool debug)
{
if (debug) qDebug() << PDEBUG;
if (!useHelper) return interface->information();
try {
QList<QVariant> responce = sendRequestToInterface(QString("Information"), debug);
// main
netctlInformation info;
info.netctlAuto = responce[0].toStringList().takeFirst().toInt();
QList<netctlProfileInfo> profiles = parseOutputNetctl(responce);
for (int i=0; i<profiles.count(); i++) {
if (profiles[i].netctlAuto)
info.netctlAutoProfiles.append(profiles[i]);
else
info.netctlProfiles.append(profiles[i]);
}
return info;
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return netctlInformation();
}
}
QMap<QString, QString> profileInformation(const QString profile, NetctlInterface* interface,
const bool useHelper, const bool debug)
{
if (!useHelper) return interface->profileSettings(profile);
try {
QList<QVariant> args;
args.append(profile);
QStringList responce = sendRequestToInterfaceWithArgs(QString("Profile"), args, debug)[0].toStringList();
return listToMap(responce);
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return QMap<QString, QString>();
}
}
netctlCurrent trayInformation(NetctlInterface *interface, const bool useHelper,
const bool debug)
{
if (debug) qDebug() << PDEBUG;
if (!useHelper) return interface->status();
try {
QStringList responce = sendRequestToInterface(QString("Status"), debug)[0].toStringList();
netctlCurrent status;
status.netctlAuto = responce[0].toInt();
status.profiles = responce[1].split(QChar('|'));
status.current = responce[2].split(QChar('|'));
QStringList enables = responce[3].split(QChar('|'));
for (int i=0; i<enables.count(); i++)
status.enables.append(enables[i].toInt());
return status;
} catch (...) {
if (debug) qDebug() << PDEBUG << ":" << "An exception recevied";
return netctlCurrent();
}
}

View File

@ -18,22 +18,38 @@
#ifndef CALLS_H #ifndef CALLS_H
#define CALLS_H #define CALLS_H
#include <QMap>
#include <QString> #include <QString>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
// control
InterfaceAnswer createProfileSlot(const QString profile, const QMap<QString,QString> settings,
NetctlInterface *interface, const bool useHelper,
const bool debug = false);
InterfaceAnswer enableProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer enableProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug = false); const bool useHelper, const bool debug = false);
InterfaceAnswer removeProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug = false);
InterfaceAnswer restartProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer restartProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug = false); const bool useHelper, const bool debug = false);
InterfaceAnswer startProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer startProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug = false); const bool useHelper, const bool debug = false);
InterfaceAnswer stopAllProfilesSlot(NetctlInterface *interface, const bool useHelper, InterfaceAnswer stopAllProfilesSlot(NetctlInterface *interface, const bool useHelper,
const bool debug); const bool debug = false);
InterfaceAnswer switchToProfileSlot(const QString profile, NetctlInterface *interface, InterfaceAnswer switchToProfileSlot(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug); const bool useHelper, const bool debug = false);
// wireless connection
InterfaceAnswer connectToEssid(const QString essid, QMap<QString,QString> settings,
NetctlInterface *interface, const bool useHelper,
const bool debug = false);
// information
netctlInformation generalInformation(NetctlInterface *interface, const bool useHelper,
const bool debug = false);
QMap<QString, QString> profileInformation(const QString profile, NetctlInterface *interface,
const bool useHelper, const bool debug = false);
netctlCurrent trayInformation(NetctlInterface *interface, const bool useHelper,
const bool debug = false);
#endif /* CALLS_H */ #endif /* CALLS_H */

View File

@ -33,7 +33,7 @@ QList<netctlProfileInfo> parseOutputNetctl(const QList<QVariant> raw)
QStringList list = raw[0].toStringList(); QStringList list = raw[0].toStringList();
for (int i=0; i<list.count(); i++) { for (int i=0; i<list.count(); i++) {
QStringList info = list[i].split(QChar('|')); QStringList info = list[i].split(QChar('|'));
if (info.count() != 7) continue; if (info.count() != 8) continue;
netctlProfileInfo profile; netctlProfileInfo profile;
profile.name = info[0]; profile.name = info[0];
profile.description = info[1]; profile.description = info[1];
@ -42,6 +42,7 @@ QList<netctlProfileInfo> parseOutputNetctl(const QList<QVariant> raw)
profile.essid = info[4]; profile.essid = info[4];
profile.active = info[5].toInt(); profile.active = info[5].toInt();
profile.enabled = info[6].toInt(); profile.enabled = info[6].toInt();
profile.netctlAuto = info[7].toInt();
profileInfo.append(profile); profileInfo.append(profile);
} }

View File

@ -23,11 +23,11 @@
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include "calls.h"
#include "commonfunctions.h" #include "commonfunctions.h"
#include "dbusoperation.h" #include "dbusoperation.h"
#include "errorwindow.h" #include "errorwindow.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "netctlautowindow.h"
MainWidget::MainWidget(QWidget *parent, const QMap<QString, QString> settings, const bool debugCmd) MainWidget::MainWidget(QWidget *parent, const QMap<QString, QString> settings, const bool debugCmd)
@ -140,28 +140,15 @@ void MainWidget::updateMainTab()
} }
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QList<netctlProfileInfo> profiles; netctlInformation info = generalInformation(mainWindow->netctlInterface,
bool netctlAutoStatus = false; useHelper, debug);
if (useHelper) { ui->label_netctlAuto->setHidden(!info.netctlAuto);
QList<QVariant> responce = sendRequestToLib(QString("isNetctlAutoActive"), 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(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
} else {
netctlAutoStatus = mainWindow->netctlCommand->isNetctlAutoRunning();
profiles = mainWindow->netctlCommand->getProfileList();
}
ui->label_netctlAuto->setHidden(!netctlAutoStatus);
ui->tableWidget_main->setSortingEnabled(false); ui->tableWidget_main->setSortingEnabled(false);
ui->tableWidget_main->selectRow(-1); ui->tableWidget_main->selectRow(-1);
ui->tableWidget_main->sortByColumn(0, Qt::AscendingOrder); ui->tableWidget_main->sortByColumn(0, Qt::AscendingOrder);
ui->tableWidget_main->clear(); ui->tableWidget_main->clear();
ui->tableWidget_main->setRowCount(profiles.count()); ui->tableWidget_main->setRowCount(info.netctlProfiles.count());
// create header // create header
QStringList headerList; QStringList headerList;
@ -171,35 +158,36 @@ void MainWidget::updateMainTab()
headerList.append(QApplication::translate("MainWidget", "Enabled")); headerList.append(QApplication::translate("MainWidget", "Enabled"));
ui->tableWidget_main->setHorizontalHeaderLabels(headerList); ui->tableWidget_main->setHorizontalHeaderLabels(headerList);
// create items // create items
for (int i=0; i<profiles.count(); i++) { for (int i=0; i<info.netctlProfiles.count(); i++) {
// font // font
QFont font; QFont font;
font.setBold(profiles[i].active); font.setBold(info.netctlProfiles[i].active);
font.setItalic(profiles[i].enabled); font.setItalic(info.netctlProfiles[i].enabled);
// tooltip // tooltip
QString toolTip = QString(""); QString toolTip = QString("");
toolTip += QString("%1: %2@%3\n").arg(QApplication::translate("MainWidget", "Type")) toolTip += QString("%1: %2@%3\n").arg(QApplication::translate("MainWidget", "Type"))
.arg(profiles[i].type).arg(profiles[i].interface); .arg(info.netctlProfiles[i].type)
.arg(info.netctlProfiles[i].interface);
toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWidget", "Active")) toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWidget", "Active"))
.arg(checkStatus(profiles[i].active)); .arg(checkStatus(info.netctlProfiles[i].active));
toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWidget", "Enabled")) toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWidget", "Enabled"))
.arg(checkStatus(profiles[i].enabled)); .arg(checkStatus(info.netctlProfiles[i].enabled));
toolTip += QString("%1: %2").arg(QApplication::translate("MainWidget", "Is wireless")) toolTip += QString("%1: %2").arg(QApplication::translate("MainWidget", "Is wireless"))
.arg(checkStatus(!profiles[i].essid.isEmpty())); .arg(checkStatus(!info.netctlProfiles[i].essid.isEmpty()));
// name // name
ui->tableWidget_main->setItem(i, 0, new QTableWidgetItem(profiles[i].name)); ui->tableWidget_main->setItem(i, 0, new QTableWidgetItem(info.netctlProfiles[i].name));
ui->tableWidget_main->item(i, 0)->setTextAlignment(Qt::AlignRight | 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)->setToolTip(toolTip);
ui->tableWidget_main->item(i, 0)->setFont(font); ui->tableWidget_main->item(i, 0)->setFont(font);
// description // description
ui->tableWidget_main->setItem(i, 1, new QTableWidgetItem(profiles[i].description)); ui->tableWidget_main->setItem(i, 1, new QTableWidgetItem(info.netctlProfiles[i].description));
ui->tableWidget_main->item(i, 1)->setTextAlignment(Qt::AlignJustify | Qt::AlignVCenter); ui->tableWidget_main->item(i, 1)->setTextAlignment(Qt::AlignJustify | Qt::AlignVCenter);
ui->tableWidget_main->item(i, 1)->setToolTip(toolTip); ui->tableWidget_main->item(i, 1)->setToolTip(toolTip);
// active // active
ui->tableWidget_main->setItem(i, 2, new QTableWidgetItem(checkStatus(profiles[i].active, true))); ui->tableWidget_main->setItem(i, 2, new QTableWidgetItem(checkStatus(info.netctlProfiles[i].active, true)));
ui->tableWidget_main->item(i, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->tableWidget_main->item(i, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
// enabled // enabled
ui->tableWidget_main->setItem(i, 3, new QTableWidgetItem(checkStatus(profiles[i].enabled, true))); ui->tableWidget_main->setItem(i, 3, new QTableWidgetItem(checkStatus(info.netctlProfiles[i].enabled, true)));
ui->tableWidget_main->item(i, 3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->tableWidget_main->item(i, 3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
} }
@ -305,7 +293,10 @@ void MainWidget::mainTabEnableProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text();
mainWindow->showMessage(mainWindow->enableProfileSlot(profile)); InterfaceAnswer answer = enableProfileSlot(profile, mainWindow->netctlInterface,
useHelper, debug);
// TODO check if status has been changed?
mainWindow->showMessage(answer != InterfaceAnswer::Error);
updateMainTab(); updateMainTab();
} }
@ -318,20 +309,9 @@ void MainWidget::mainTabRemoveProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text();
bool status = false; InterfaceAnswer answer = removeProfileSlot(profile, mainWindow->netctlInterface,
if (useHelper) { useHelper, debug);
QList<QVariant> args; mainWindow->showMessage(answer == InterfaceAnswer::True);
args.append(profile);
QList<QVariant> responce = sendRequestToCtrlWithArgs(QString("Remove"), args, 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 = mainWindow->netctlProfile->removeProfile(profile);
mainWindow->showMessage(status);
updateMainTab(); updateMainTab();
} }
@ -349,7 +329,9 @@ void MainWidget::mainTabRestartProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text();
mainWindow->showMessage(mainWindow->restartProfileSlot(profile)); InterfaceAnswer answer = restartProfileSlot(profile, mainWindow->netctlInterface,
useHelper, debug);
mainWindow->showMessage(answer == InterfaceAnswer::True);
updateMainTab(); updateMainTab();
} }
@ -367,7 +349,9 @@ void MainWidget::mainTabStartProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text();
mainWindow->showMessage(mainWindow->startProfileSlot(profile)); InterfaceAnswer answer = startProfileSlot(profile, mainWindow->netctlInterface,
useHelper, debug);
mainWindow->showMessage(answer == InterfaceAnswer::True);
updateMainTab(); updateMainTab();
} }
@ -383,18 +367,9 @@ void MainWidget::mainTabStopAllProfiles()
} }
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
bool status = false; InterfaceAnswer answer = stopAllProfilesSlot(mainWindow->netctlInterface,
if (useHelper) { useHelper, debug);
QList<QVariant> responce = sendRequestToCtrl(QString("StolAll"), debug); mainWindow->showMessage(answer == InterfaceAnswer::True);
if (responce.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it";
useHelper = false;
return mainTabStopAllProfiles();
}
status = responce[0].toBool();
} else
status = mainWindow->netctlCommand->stopAllProfiles();
mainWindow->showMessage(status);
updateMainTab(); updateMainTab();
} }
@ -412,7 +387,9 @@ void MainWidget::mainTabSwitchToProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text(); QString profile = ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text();
mainWindow->showMessage(mainWindow->switchToProfileSlot(profile)); InterfaceAnswer answer = switchToProfileSlot(profile, mainWindow->netctlInterface,
useHelper, debug);
mainWindow->showMessage(answer == InterfaceAnswer::True);
updateMainTab(); updateMainTab();
} }
@ -449,7 +426,6 @@ void MainWidget::createObjects()
ui->tableWidget_main->setColumnHidden(2, true); ui->tableWidget_main->setColumnHidden(2, true);
ui->tableWidget_main->setColumnHidden(3, true); ui->tableWidget_main->setColumnHidden(3, true);
updateToolBarState(static_cast<Qt::ToolBarArea>(configuration[QString("NETCTL_TOOLBAR")].toInt())); updateToolBarState(static_cast<Qt::ToolBarArea>(configuration[QString("NETCTL_TOOLBAR")].toInt()));
netctlAutoWin = new NetctlAutoWindow(mainWindow, debug, configuration);
// append toolbar // append toolbar
QMenu *actionMenu = new QMenu(this); QMenu *actionMenu = new QMenu(this);
@ -464,6 +440,5 @@ void MainWidget::deleteObjects()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
if (netctlAutoWin != nullptr) delete netctlAutoWin;
if (ui != nullptr) delete ui; if (ui != nullptr) delete ui;
} }

View File

@ -25,7 +25,6 @@
class MainWindow; class MainWindow;
class NetctlAutoWindow;
namespace Ui { namespace Ui {
class MainWidget; class MainWidget;
@ -40,7 +39,6 @@ public:
const QMap<QString,QString> settings = QMap<QString,QString>(), const QMap<QString,QString> settings = QMap<QString,QString>(),
const bool debugCmd = false); const bool debugCmd = false);
~MainWidget(); ~MainWidget();
NetctlAutoWindow *netctlAutoWin = nullptr;
Qt::ToolBarArea getToolBarArea(); Qt::ToolBarArea getToolBarArea();
public slots: public slots:

View File

@ -31,10 +31,12 @@
#include <QUrl> #include <QUrl>
#include <language/language.h> #include <language/language.h>
#include <listmap/listmap.h>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include <task/taskadds.h> #include <task/taskadds.h>
#include "aboutwindow.h" #include "aboutwindow.h"
#include "calls.h"
#include "commonfunctions.h" #include "commonfunctions.h"
#include "dbusoperation.h" #include "dbusoperation.h"
#include "errorwindow.h" #include "errorwindow.h"
@ -124,29 +126,21 @@ QStringList MainWindow::printInformation()
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QStringList output; QStringList output;
output.append(QString("none")); output.append(QApplication::translate("MainWindow", "none"));
output.append(QString("(none)")); output.append(QApplication::translate("MainWindow", "(none)"));
if (useHelper) { netctlCurrent current = printTrayInformation();
QList<QVariant> responce = sendRequestToLib(QString("Information"), debug); if (current.current.isEmpty()) return output;
if (responce.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it"; QStringList profiles;
useHelper = false; for (int i=0; i<current.current.count(); i++) {
return printInformation(); QString status;
} if (current.netctlAuto)
if (responce[0].toStringList().count() != 2) return output; status = QApplication::translate("MainWindow", "(netctl-auto)");
output = responce[0].toStringList(); else if (current.enables[i])
} else { status = QApplication::translate("MainWindow", "(enabled)");
if (netctlCommand->isNetctlAutoRunning()) { else
output[0] = netctlCommand->autoGetActiveProfile(); status = QApplication::translate("MainWindow", "(static)");
output[1] = QString("netctl-auto"); profiles.append(QString("%1 %2").arg(current.current[i]).arg(status));
} else {
QStringList currentProfiles = netctlCommand->getActiveProfile();
output[0] = currentProfiles.join(QChar('|'));
QStringList statusList;
for (int i=0; i<currentProfiles.count(); i++)
statusList.append(netctlCommand->getProfileStatus(currentProfiles[i]));
output[1] = statusList.join(QChar('|'));
}
} }
return output; return output;
@ -157,81 +151,15 @@ QStringList MainWindow::printSettings()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QStringList settingsList; return mapToList(configuration);
for (int i=0; i<configuration.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(configuration.keys()[i]).arg(configuration[configuration.keys()[i]]));
return settingsList;
} }
QStringList MainWindow::printTrayInformation() netctlCurrent MainWindow::printTrayInformation()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QStringList information; return trayInformation(netctlInterface, useHelper, debug);
QString current;
QString enabled;
bool netctlAutoStatus = false;
QList<netctlProfileInfo> profiles;
if (useHelper) {
QList<QVariant> responce = sendRequestToLib(QString("ActiveProfile"), debug);
if (responce.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it";
useHelper = false;
return printTrayInformation();
}
current = responce[0].toString();
responce = sendRequestToLib(QString("isNetctlAutoActive"), debug);
if (responce.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not interact with helper, disable it";
useHelper = false;
return printTrayInformation();
}
netctlAutoStatus = responce[0].toBool();
profiles = parseOutputNetctl(sendRequestToLib(QString("VerboseProfileList"), debug));
if (netctlAutoStatus) {
QList<QVariant> args;
args.append(current);
responce = sendRequestToLibWithArgs(QString("autoIsProfileEnabled"), args, debug);
enabled = QString::number(!responce.isEmpty() && responce[0].toBool());
} else {
QStringList currentProfiles = current.split(QChar('|'));
QStringList enabledList;
for (int i=0; i<currentProfiles.count(); i++) {
QList<QVariant> args;
args.append(currentProfiles[i]);
responce = sendRequestToLibWithArgs(QString("isProfileEnabled"), args, debug);
enabledList.append(QString::number(!responce.isEmpty() && responce[0].toBool()));
enabled = enabledList.join(QChar('|'));
}
}
} else {
netctlAutoStatus = netctlCommand->isNetctlAutoRunning();
if (netctlAutoStatus) {
current = netctlCommand->autoGetActiveProfile();
enabled = QString::number(netctlCommand->autoIsProfileEnabled(current));
profiles = netctlCommand->getProfileListFromNetctlAuto();
} else {
QStringList currentProfiles = netctlCommand->getActiveProfile();
current = currentProfiles.join(QChar('|'));
QStringList enabledList;
for (int i=0; i<currentProfiles.count(); i++)
enabledList.append(QString::number(netctlCommand->isProfileEnabled(currentProfiles[i])));
enabled = enabledList.join(QChar('|'));
profiles = netctlCommand->getProfileList();
}
}
information.append(QString::number(netctlAutoStatus));
QStringList profileList;
for (int i=0; i<profiles.count(); i++)
profileList.append(profiles[i].name);
information.append(profileList.join(QChar('|')));
information.append(current);
information.append(enabled);
return information;
} }
@ -241,7 +169,7 @@ bool MainWindow::isHelperActive()
QList<QVariant> responce = sendRequestToCtrl(QString("Active"), debug); QList<QVariant> responce = sendRequestToCtrl(QString("Active"), debug);
return (!responce.isEmpty() && responce[0].toBool()); return (!responce.isEmpty());
} }
@ -380,7 +308,7 @@ bool MainWindow::forceStopHelper()
QList<QVariant> responce = sendRequestToCtrl(QString("Close"), debug); QList<QVariant> responce = sendRequestToCtrl(QString("Close"), debug);
return !responce.isEmpty(); return (!responce.isEmpty());
} }
@ -528,8 +456,6 @@ void MainWindow::updateToolBarState(const Qt::ToolBarArea area)
addToolBar(area, ui->toolBar); addToolBar(area, ui->toolBar);
ui->toolBar->show(); ui->toolBar->show();
} }
qDebug() << findChildren<QToolBar *>().count();
} }
@ -636,14 +562,15 @@ void MainWindow::createObjects()
checkHelperStatus(); checkHelperStatus();
netctlCommand = new Netctl(debug, configuration); netctlCommand = new Netctl(debug, configuration);
netctlInterface = new NetctlInterface(debug, configuration);
netctlProfile = new NetctlProfile(debug, configuration); netctlProfile = new NetctlProfile(debug, configuration);
wpaCommand = new WpaSup(debug, configuration); wpaCommand = new WpaSup(debug, configuration);
// frontend // frontend
mainWidget = new MainWidget(this, configuration, debug); mainWidget = new MainWidget(this, configuration, debug);
netctlAutoWin = mainWidget->netctlAutoWin; netctlAutoWin = new NetctlAutoWindow(this, configuration, debug);
newProfileWidget = new NewProfileWidget(this, configuration, debug); newProfileWidget = new NewProfileWidget(this, configuration, debug);
wifiMenuWidget = new WiFiMenuWidget(this, configuration, debug); wifiMenuWidget = new WiFiMenuWidget(this, configuration, debug);
trayIcon = new TrayIcon(this, debug); trayIcon = new TrayIcon(this, configuration, debug);
// windows // windows
ui->retranslateUi(this); ui->retranslateUi(this);
ui->layout_main->addWidget(mainWidget); ui->layout_main->addWidget(mainWidget);
@ -662,6 +589,7 @@ void MainWindow::deleteObjects()
QDBusConnection::sessionBus().unregisterObject(DBUS_OBJECT_PATH); QDBusConnection::sessionBus().unregisterObject(DBUS_OBJECT_PATH);
QDBusConnection::sessionBus().unregisterService(DBUS_SERVICE); QDBusConnection::sessionBus().unregisterService(DBUS_SERVICE);
if (netctlCommand != nullptr) delete netctlCommand; if (netctlCommand != nullptr) delete netctlCommand;
if (netctlInterface != nullptr) delete netctlInterface;
if (netctlProfile != nullptr) delete netctlProfile; if (netctlProfile != nullptr) delete netctlProfile;
if (wpaCommand != nullptr) delete wpaCommand; if (wpaCommand != nullptr) delete wpaCommand;
@ -669,6 +597,7 @@ void MainWindow::deleteObjects()
if (settingsWin != nullptr) delete settingsWin; if (settingsWin != nullptr) delete settingsWin;
if (trayIcon != nullptr) delete trayIcon; if (trayIcon != nullptr) delete trayIcon;
if (mainWidget != nullptr) delete mainWidget; if (mainWidget != nullptr) delete mainWidget;
if (netctlAutoWin != nullptr) delete netctlAutoWin;
if (newProfileWidget != nullptr) delete newProfileWidget; if (newProfileWidget != nullptr) delete newProfileWidget;
if (wifiMenuWidget != nullptr) delete wifiMenuWidget; if (wifiMenuWidget != nullptr) delete wifiMenuWidget;
} }

View File

@ -50,11 +50,12 @@ public:
Qt::ToolBarArea getToolBarArea(); Qt::ToolBarArea getToolBarArea();
QStringList printInformation(); QStringList printInformation();
QStringList printSettings(); QStringList printSettings();
QStringList printTrayInformation(); netctlCurrent printTrayInformation();
bool isHelperActive(); bool isHelperActive();
bool isHelperServiceActive(); bool isHelperServiceActive();
// library interfaces // library interfaces
Netctl *netctlCommand = nullptr; Netctl *netctlCommand = nullptr;
NetctlInterface *netctlInterface = nullptr;
NetctlProfile *netctlProfile = nullptr; NetctlProfile *netctlProfile = nullptr;
WpaSup *wpaCommand = nullptr; WpaSup *wpaCommand = nullptr;

View File

@ -26,7 +26,7 @@
#include "mainwindow.h" #include "mainwindow.h"
NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const bool debugCmd, const QMap<QString, QString> settings) NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const QMap<QString, QString> settings, const bool debugCmd)
: QMainWindow(parent), : QMainWindow(parent),
ui(new Ui::NetctlAutoWindow), ui(new Ui::NetctlAutoWindow),
debug(debugCmd) debug(debugCmd)

View File

@ -34,8 +34,8 @@ class NetctlAutoWindow : public QMainWindow
public: public:
explicit NetctlAutoWindow(QWidget *parent = 0, explicit NetctlAutoWindow(QWidget *parent = 0,
const bool debugCmd = false, const QMap<QString, QString> settings = QMap<QString, QString>(),
const QMap<QString, QString> settings = QMap<QString, QString>()); const bool debugCmd = false);
~NetctlAutoWindow(); ~NetctlAutoWindow();
Qt::ToolBarArea getToolBarArea(); Qt::ToolBarArea getToolBarArea();

View File

@ -133,9 +133,3 @@ QStringList NetctlGuiAdaptor::UIDs()
return uids; return uids;
} }
QStringList NetctlGuiAdaptor::VerboseInformation()
{
return mainWindow->printTrayInformation();
}

View File

@ -48,7 +48,6 @@ public slots:
bool ShowNetctlAuto(); bool ShowNetctlAuto();
bool ShowSettings(); bool ShowSettings();
QStringList UIDs(); QStringList UIDs();
QStringList VerboseInformation();
private: private:
MainWindow *mainWindow; MainWindow *mainWindow;

View File

@ -24,6 +24,7 @@
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include "calls.h"
#include "bridgewidget.h" #include "bridgewidget.h"
#include "commonfunctions.h" #include "commonfunctions.h"
#include "dbusoperation.h" #include "dbusoperation.h"
@ -149,11 +150,8 @@ void NewProfileWidget::profileTabClear()
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
ui->comboBox_profile->clear(); ui->comboBox_profile->clear();
QList<netctlProfileInfo> profiles; QList<netctlProfileInfo> profiles = generalInformation(mainWindow->netctlInterface,
if (useHelper) useHelper, debug).netctlProfiles;
profiles = parseOutputNetctl(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
else
profiles = mainWindow->netctlCommand->getProfileList();
for (int i=0; i<profiles.count(); i++) for (int i=0; i<profiles.count(); i++)
ui->comboBox_profile->addItem(profiles[i].name); ui->comboBox_profile->addItem(profiles[i].name);
ui->comboBox_profile->setCurrentIndex(-1); ui->comboBox_profile->setCurrentIndex(-1);
@ -326,27 +324,9 @@ void NewProfileWidget::profileTabCreateProfile()
} }
// call netctlprofile // call netctlprofile
bool status = false; InterfaceAnswer answer = createProfileSlot(profile, settings, mainWindow->netctlInterface,
if (useHelper) { useHelper, debug);
QStringList settingsList; mainWindow->showMessage(answer == InterfaceAnswer::True);
for (int i=0; i<settings.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(settings.keys()[i]).arg(settings[settings.keys()[i]]));
QList<QVariant> args;
args.append(profile);
args.append(settingsList);
QList<QVariant> responce = sendRequestToCtrlWithArgs(QString("Create"), args, 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 = mainWindow->netctlProfile->createProfile(profile, settings);
status = mainWindow->netctlProfile->copyProfile(profileTempName);
}
mainWindow->showMessage(status);
updateProfileTab(); updateProfileTab();
} }
@ -358,25 +338,8 @@ void NewProfileWidget::profileTabLoadProfile()
QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName();
if (profile.isEmpty()) return; if (profile.isEmpty()) return;
QMap<QString, QString> settings; QMap<QString, QString> settings = profileInformation(profile, mainWindow->netctlInterface,
if (useHelper) { useHelper, debug);
QList<QVariant> args;
args.append(profile);
QList<QVariant> responce = sendRequestToLibWithArgs(QString("Profile"), args, 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; i<settingsList.count(); i++) {
if (!settingsList[i].contains(QString("=="))) continue;
QString key = settingsList[i].split(QString("=="))[0];
QString value = settingsList[i].split(QString("=="))[1];
settings[key] = value;
}
} else
settings = mainWindow->netctlProfile->getSettingsFromProfile(profile);
if (settings.isEmpty()) return ErrorWindow::showWindow(17, QString(PDEBUG), debug); if (settings.isEmpty()) return ErrorWindow::showWindow(17, QString(PDEBUG), debug);
@ -422,21 +385,9 @@ void NewProfileWidget::profileTabRemoveProfile()
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName();
if (profile.isEmpty()) return ErrorWindow::showWindow(17, QString(PDEBUG), debug); InterfaceAnswer answer = removeProfileSlot(profile, mainWindow->netctlInterface,
bool status = false; useHelper, debug);
if (useHelper) { mainWindow->showMessage(answer == InterfaceAnswer::True);
QList<QVariant> args;
args.append(profile);
QList<QVariant> responce = sendRequestToCtrlWithArgs(QString("Remove"), args, 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 = mainWindow->netctlProfile->removeProfile(profile);
mainWindow->showMessage(status);
updateProfileTab(); updateProfileTab();
} }

View File

@ -19,18 +19,19 @@
#include <QDebug> #include <QDebug>
#include <QMenu> #include <QMenu>
#include <QMessageBox>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include "calls.h"
#include "mainwindow.h" #include "mainwindow.h"
TrayIcon::TrayIcon(QObject *parent, const bool debugCmd) TrayIcon::TrayIcon(QObject *parent, const QMap<QString, QString> settings, const bool debugCmd)
: QSystemTrayIcon(parent), : QSystemTrayIcon(parent),
debug(debugCmd) debug(debugCmd)
{ {
mainWindow = dynamic_cast<MainWindow *>(parent); mainWindow = dynamic_cast<MainWindow *>(parent);
useHelper = (settings[QString("USE_HELPER")] == QString("true"));
init(); init();
} }
@ -44,41 +45,7 @@ TrayIcon::~TrayIcon()
startProfileMenu->clear(); startProfileMenu->clear();
switchToProfileMenu->clear(); switchToProfileMenu->clear();
menuActions->clear(); menuActions->clear();
delete startProfileMenu;
delete switchToProfileMenu;
delete menuActions; delete menuActions;
for (int i=0; i<contextMenu.keys().count(); i++)
delete contextMenu[contextMenu.keys()[i]];
}
int TrayIcon::showInformation()
{
if (debug) qDebug() << PDEBUG;
if (supportsMessages()) {
QString title = QApplication::translate("TrayIcon", "netctl status");
QStringList info = mainWindow->printInformation();
QString message = QString("%1: %2\n").arg(QApplication::translate("TrayIcon", "Profile")).arg(info[0]);
message += QString("%1: %2").arg(QApplication::translate("TrayIcon", "Status")).arg(info[1]);
showMessage(title, message, QSystemTrayIcon::Information);
}
else
return showInformationInWindow();
return 0;
}
int TrayIcon::showInformationInWindow()
{
if (debug) qDebug() << PDEBUG;
QString title = QApplication::translate("TrayIcon", "netctl status");
QStringList info = mainWindow->printInformation();
QString message = QString("%1: %2\n").arg(QApplication::translate("TrayIcon", "Profile")).arg(info[0]);
message += QString("%1: %2").arg(QApplication::translate("TrayIcon", "Status")).arg(info[1]);
return QMessageBox::information(0, title, message);
} }
@ -86,79 +53,52 @@ void TrayIcon::updateMenu()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QStringList info = mainWindow->printTrayInformation(); netctlCurrent info = mainWindow->printTrayInformation();
bool netctlAutoStatus = info[0].toInt();
QStringList profiles = info[1].split(QChar('|'));
QString current = info[2];
QString enabled = info[3];
if (current.isEmpty()) { if (info.current.isEmpty()) {
contextMenu[QString("title")]->setIcon(QIcon(QString(":network-offline-64x64"))); contextMenu[QString("title")]->setIcon(QIcon(QString(":network-offline-64x64")));
contextMenu[QString("title")]->setText(QApplication::translate("TrayIcon", "(inactive)")); contextMenu[QString("title")]->setText(QApplication::translate("TrayIcon", "(inactive)"));
} else { } else {
contextMenu[QString("title")]->setIcon(QIcon(QString(":network-idle-64x64"))); contextMenu[QString("title")]->setIcon(QIcon(QString(":network-idle-64x64")));
QStringList currentProfiles, status;
if (netctlAutoStatus) {
currentProfiles.append(current);
status.append(QApplication::translate("TrayIcon", "(netctl-auto)"));
} else {
for (int i=0; i<enabled.split(QChar('|')).count(); i++) {
currentProfiles.append(current.split(QChar('|'))[i]);
if (enabled.split(QChar('|'))[i] == QString("0"))
status.append(QApplication::translate("TrayIcon", "static"));
else
status.append(QApplication::translate("TrayIcon", "enabled"));
}
}
QStringList profiles; QStringList profiles;
for (int i=0; i<currentProfiles.count(); i++) if (info.netctlAuto)
profiles.append(QString("%1 %2").arg(currentProfiles[i]).arg(status[i])); profiles.append(QString("%1 (%2)").arg(info.current[0])
.arg(QApplication::translate("TrayIcon", "netctl-auto")));
else
for (int i=0; i<info.current.count(); i++) {
QString status;
if (info.enables[i])
status = QApplication::translate("TrayIcon", "enabled");
else
status = QApplication::translate("TrayIcon", "static");
profiles.append(QString("%1 (%2)").arg(info.current[i]).arg(status));
}
contextMenu[QString("title")]->setText(profiles.join(QString(" | "))); contextMenu[QString("title")]->setText(profiles.join(QString(" | ")));
} }
if (netctlAutoStatus) { startProfileMenu->setVisible(!info.netctlAuto);
contextMenu[QString("start")]->setVisible(false); contextMenu[QString("stop")]->setVisible(!info.netctlAuto && (info.current.count() == 1));
contextMenu[QString("stop")]->setVisible(false); contextMenu[QString("stopall")]->setVisible(!info.netctlAuto && (info.current.count() > 1));
contextMenu[QString("stopall")]->setVisible(false); switchToProfileMenu->setVisible(info.netctlAuto);
contextMenu[QString("switch")]->setVisible(true); contextMenu[QString("restart")]->setVisible(!info.netctlAuto && (info.current.count() == 1));
contextMenu[QString("restart")]->setVisible(false); contextMenu[QString("enable")]->setVisible(!info.netctlAuto && (info.current.count() == 1));
contextMenu[QString("enable")]->setVisible(false);
if (info.netctlAuto) {
switchToProfileMenu->clear(); switchToProfileMenu->clear();
for (int i=0; i<profiles.count(); i++) { for (int i=0; i<info.current.count(); i++)
QAction *profile = new QAction(profiles[i], this); switchToProfileMenu->addAction(info.current[i]);
switchToProfileMenu->addAction(profile);
}
} else { } else {
if (current.contains(QChar('|'))) { if (info.current.count() == 1) {
contextMenu[QString("start")]->setVisible(true); contextMenu[QString("stop")]->setText(QApplication::translate("TrayIcon", "Stop %1").arg(info.current[0]));
contextMenu[QString("stop")]->setVisible(false); contextMenu[QString("restart")]->setText(QApplication::translate("TrayIcon", "Restart %1").arg(info.current[0]));
contextMenu[QString("stopall")]->setVisible(true); if (info.enables[0])
contextMenu[QString("switch")]->setVisible(false); contextMenu[QString("enable")]->setText(QApplication::translate("TrayIcon", "Disable %1").arg(info.current[0]));
contextMenu[QString("restart")]->setVisible(false);
contextMenu[QString("enable")]->setVisible(false);
} else {
contextMenu[QString("start")]->setVisible(true);
contextMenu[QString("stop")]->setVisible(!current.isEmpty());
contextMenu[QString("switch")]->setVisible(false);
contextMenu[QString("stopall")]->setVisible(false);
contextMenu[QString("restart")]->setVisible(!current.isEmpty());
contextMenu[QString("enable")]->setVisible(!current.isEmpty());
}
if (!current.isEmpty()) {
contextMenu[QString("start")]->setText(QApplication::translate("TrayIcon", "Start another profile"));
contextMenu[QString("stop")]->setText(QApplication::translate("TrayIcon", "Stop %1").arg(current));
contextMenu[QString("restart")]->setText(QApplication::translate("TrayIcon", "Restart %1").arg(current));
if (enabled.split(QChar('|'))[0].toInt())
contextMenu[QString("enable")]->setText(QApplication::translate("TrayIcon", "Disable %1").arg(current));
else else
contextMenu[QString("enable")]->setText(QApplication::translate("TrayIcon", "Enable %1").arg(current)); contextMenu[QString("enable")]->setText(QApplication::translate("TrayIcon", "Enable %1").arg(info.current[0]));
} else
contextMenu[QString("start")]->setText(QApplication::translate("TrayIcon", "Start profile"));
startProfileMenu->clear();
for (int i=0; i<profiles.count(); i++) {
QAction *profile = new QAction(profiles[i], this);
startProfileMenu->addAction(profile);
} }
startProfileMenu->clear();
for (int i=0; i<info.current.count(); i++)
startProfileMenu->addAction(info.current[i]);
} }
if (mainWindow->isHidden()) if (mainWindow->isHidden())
@ -176,55 +116,43 @@ void TrayIcon::createActions()
menuActions = new QMenu(); menuActions = new QMenu();
contextMenu[QString("title")] = new QAction(QIcon(":icon"), QApplication::translate("TrayIcon", "Status"), this); contextMenu[QString("title")] = menuActions->addAction(QIcon(":icon"),
menuActions->addAction(contextMenu[QString("title")]); QApplication::translate("TrayIcon", "Status"),
connect(contextMenu[QString("title")], SIGNAL(triggered(bool)), this, SLOT(showInformationInWindow())); mainWindow,
SLOT(showMainWindow()));
menuActions->addSeparator(); menuActions->addSeparator();
contextMenu[QString("start")] = new QAction(QIcon::fromTheme("system-run"), QApplication::translate("TrayIcon", "Start profile"), this); startProfileMenu = menuActions->addMenu(QIcon::fromTheme("system-run"),
startProfileMenu = new QMenu(); QApplication::translate("TrayIcon", "Start profile"));
contextMenu[QString("start")]->setMenu(startProfileMenu); connect(startProfileMenu, SIGNAL(triggered(QAction *)), this, SLOT(startProfileTraySlot(QAction *)));
connect(startProfileMenu, SIGNAL(triggered(QAction *)), this, SLOT(startProfileSlot(QAction *)));
menuActions->addAction(contextMenu[QString("start")]);
contextMenu[QString("stop")] = new QAction(QIcon::fromTheme("process-stop"), QApplication::translate("TrayIcon", "Stop profile"), this); contextMenu[QString("stop")] = menuActions->addAction(QIcon::fromTheme("process-stop"),
connect(contextMenu[QString("stop")], SIGNAL(triggered(bool)), this, SLOT(stopProfileSlot())); QApplication::translate("TrayIcon", "Stop profile"),
menuActions->addAction(contextMenu[QString("stop")]); this,
SLOT(startProfileTraySlot()));
contextMenu[QString("stopall")] = menuActions->addAction(QIcon::fromTheme("process-stop"),
QApplication::translate("TrayIcon", "Stop all profiles"),
this,
SLOT(stopAllProfilesTraySlot()));
contextMenu[QString("stopall")] = new QAction(QIcon::fromTheme("process-stop"), QApplication::translate("TrayIcon", "Stop all profiles"), this); switchToProfileMenu = menuActions->addMenu(QIcon::fromTheme("system-run"),
connect(contextMenu[QString("stopall")], SIGNAL(triggered(bool)), this, SLOT(stopAllProfilesSlot())); QApplication::translate("TrayIcon", "Switch to profile"));
menuActions->addAction(contextMenu[QString("stopall")]); connect(switchToProfileMenu, SIGNAL(triggered(QAction *)), this, SLOT(switchToProfileTraySlot(QAction *)));
contextMenu[QString("switch")] = new QAction(QIcon::fromTheme("system-run"), QApplication::translate("TrayIcon", "Switch to profile"), this);
switchToProfileMenu = new QMenu();
contextMenu[QString("switch")]->setMenu(switchToProfileMenu);
connect(switchToProfileMenu, SIGNAL(triggered(QAction *)), this, SLOT(switchToProfileSlot(QAction *)));
menuActions->addAction(contextMenu[QString("switch")]);
contextMenu[QString("restart")] = new QAction(QIcon::fromTheme("view-refresh"), QApplication::translate("TrayIcon", "Restart profile"), this);
connect(contextMenu[QString("restart")], SIGNAL(triggered(bool)), this, SLOT(restartProfileSlot()));
menuActions->addAction(contextMenu[QString("restart")]);
contextMenu[QString("enable")] = new QAction(QApplication::translate("TrayIcon", "Enable profile"), this);
connect(contextMenu[QString("enable")], SIGNAL(triggered(bool)), this, SLOT(enableProfileSlot()));
menuActions->addAction(contextMenu[QString("enable")]);
contextMenu[QString("restart")] = menuActions->addAction(QIcon::fromTheme("view-refresh"),
QApplication::translate("TrayIcon", "Restart profile"),
this,
SLOT(restartProfileTraySlot()));
contextMenu[QString("enable")] = menuActions->addAction(QIcon::fromTheme("list-add"),
QApplication::translate("TrayIcon", "Enable profile"),
this,
SLOT(enableProfileTraySlot()));
menuActions->addSeparator(); menuActions->addSeparator();
contextMenu[QString("gui")] = new QAction(QApplication::translate("TrayIcon", "Show"), this); contextMenu[QString("quit")] = menuActions->addAction(QIcon::fromTheme("application-exit"),
connect(contextMenu[QString("gui")], SIGNAL(triggered(bool)), mainWindow, SLOT(showMainWindow())); QApplication::translate("TrayIcon", "Quit"),
menuActions->addAction(contextMenu[QString("gui")]); mainWindow,
SLOT(closeMainWindow()));
contextMenu[QString("auto")] = new QAction(QApplication::translate("TrayIcon", "Show netctl-auto"), this);
connect(contextMenu[QString("auto")], SIGNAL(triggered(bool)), mainWindow, SLOT(showNetctlAutoWindow()));
menuActions->addAction(contextMenu[QString("auto")]);
menuActions->addSeparator();
contextMenu[QString("quit")] = new QAction(QApplication::translate("TrayIcon", "Quit"), this);
connect(contextMenu[QString("quit")], SIGNAL(triggered(bool)), mainWindow, SLOT(closeMainWindow()));
menuActions->addAction(contextMenu[QString("quit")]);
} }
@ -249,9 +177,6 @@ void TrayIcon::itemActivated(const QSystemTrayIcon::ActivationReason reason)
switch (reason) { switch (reason) {
case QSystemTrayIcon::Trigger: case QSystemTrayIcon::Trigger:
showInformation();
break;
case QSystemTrayIcon::DoubleClick:
mainWindow->showMainWindow(); mainWindow->showMainWindow();
break; break;
case QSystemTrayIcon::Context: case QSystemTrayIcon::Context:
@ -265,59 +190,49 @@ void TrayIcon::itemActivated(const QSystemTrayIcon::ActivationReason reason)
} }
bool TrayIcon::enableProfileSlot() void TrayIcon::enableProfileTraySlot()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QString profile = mainWindow->printInformation()[0]; QString profile = mainWindow->printInformation()[0];
return mainWindow->enableProfileSlot(profile); enableProfileSlot(profile, mainWindow->netctlInterface, useHelper, debug);
} }
bool TrayIcon::restartProfileSlot() void TrayIcon::restartProfileTraySlot()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QString profile = mainWindow->printInformation()[0]; QString profile = mainWindow->printInformation()[0];
return mainWindow->restartProfileSlot(profile); restartProfileSlot(profile, mainWindow->netctlInterface, useHelper, debug);
} }
bool TrayIcon::startProfileSlot(QAction *action) void TrayIcon::startProfileTraySlot(QAction *action)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QString profile = action->text().remove(QChar('&')); QString profile = action->text().remove(QChar('&'));
return mainWindow->switchToProfileSlot(profile); startProfileSlot(profile, mainWindow->netctlInterface, useHelper, debug);
} }
bool TrayIcon::stopProfileSlot() void TrayIcon::stopAllProfilesTraySlot()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QString profile = mainWindow->printInformation()[0]; stopAllProfilesSlot(mainWindow->netctlInterface, useHelper, debug);
return mainWindow->startProfileSlot(profile);
} }
bool TrayIcon::stopAllProfilesSlot() void TrayIcon::switchToProfileTraySlot(QAction *action)
{
if (debug) qDebug() << PDEBUG;
return mainWindow->stopAllProfilesSlot();
}
bool TrayIcon::switchToProfileSlot(QAction *action)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QString profile = action->text().remove(QChar('&')); QString profile = action->text().remove(QChar('&'));
return mainWindow->switchToProfileSlot(profile); switchToProfileSlot(profile, mainWindow->netctlInterface, useHelper, debug);
} }

View File

@ -31,25 +31,24 @@ class TrayIcon : public QSystemTrayIcon
public: public:
explicit TrayIcon(QObject *parent = 0, explicit TrayIcon(QObject *parent = 0,
const QMap<QString,QString> settings = QMap<QString,QString>(),
const bool debugCmd = false); const bool debugCmd = false);
~TrayIcon(); ~TrayIcon();
public slots: public slots:
int showInformation();
int showInformationInWindow();
void updateMenu(); void updateMenu();
private slots: private slots:
void itemActivated(const QSystemTrayIcon::ActivationReason reason); void itemActivated(const QSystemTrayIcon::ActivationReason reason);
bool enableProfileSlot(); void enableProfileTraySlot();
bool restartProfileSlot(); void restartProfileTraySlot();
bool startProfileSlot(QAction *action); void startProfileTraySlot(QAction *action);
bool stopProfileSlot(); void stopAllProfilesTraySlot();
bool stopAllProfilesSlot(); void switchToProfileTraySlot(QAction *action);
bool switchToProfileSlot(QAction *action);
private: private:
bool debug; bool debug;
bool useHelper = true;
MainWindow *mainWindow; MainWindow *mainWindow;
// contextual actions // contextual actions
QMenu *menuActions; QMenu *menuActions;

View File

@ -23,6 +23,7 @@
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include "calls.h"
#include "commonfunctions.h" #include "commonfunctions.h"
#include "dbusoperation.h" #include "dbusoperation.h"
#include "errorwindow.h" #include "errorwindow.h"
@ -97,23 +98,10 @@ bool WiFiMenuWidget::wifiTabSelectEssidSlot(const QString essid)
void WiFiMenuWidget::connectToUnknownEssid(const QString passwd) void WiFiMenuWidget::connectToUnknownEssid(const QString passwd)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
if (ui->tableWidget_wifi->currentItem() == nullptr) return;
if (passwdWid != nullptr) delete passwdWid; if (passwdWid != nullptr) delete passwdWid;
QStringList interfaces;
if (useHelper) {
QList<QVariant> responce = sendRequestToLib(QString("WirelessInterfaces"), debug);
if (responce.isEmpty())
interfaces = mainWindow->netctlCommand->getWirelessInterfaceList();
else
interfaces = responce[0].toStringList();
} else
interfaces = mainWindow->netctlCommand->getWirelessInterfaceList();
if (interfaces.isEmpty()) return;
QMap<QString, QString> settings; QMap<QString, QString> settings;
settings[QString("Description")] = QString("'Automatically generated profile by Netctl GUI'");
settings[QString("Interface")] = interfaces[0];
settings[QString("Connection")] = QString("wireless");
QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 2)->text(); QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 2)->text();
if (security.contains(QString("WPA"))) if (security.contains(QString("WPA")))
settings[QString("Security")] = QString("wpa"); settings[QString("Security")] = QString("wpa");
@ -121,50 +109,35 @@ void WiFiMenuWidget::connectToUnknownEssid(const QString passwd)
settings[QString("Security")] = QString("wep"); settings[QString("Security")] = QString("wep");
else else
settings[QString("Security")] = QString("none"); settings[QString("Security")] = QString("none");
settings[QString("ESSID")] = QString("'%1'").arg(ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text());
if (!passwd.isEmpty()) if (!passwd.isEmpty())
settings[QString("Key")] = QString("'%1'").arg(passwd); settings[QString("Key")] = QString("'%1'").arg(passwd);
settings[QString("IP")] = QString("dhcp");
if (hiddenNetwork) if (hiddenNetwork)
settings[QString("Hidden")] = QString("yes"); settings[QString("Hidden")] = QString("yes");
QString essid = QString("'%1'").arg(ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text());
InterfaceAnswer answer = connectToEssid(essid, settings, mainWindow->netctlInterface,
useHelper, debug);
QString profile = QString("netctl-gui-%1").arg(settings[QString("ESSID")]); QString profile = QString("netctl-gui-%1").arg(essid);
profile.remove(QChar('"')).remove(QChar('\'')); profile.remove(QChar('"')).remove(QChar('\''));
if (useHelper) {
QStringList settingsList;
for (int i=0; i<settings.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(settings.keys()[i]).arg(settings[settings.keys()[i]]));
QList<QVariant> args;
args.append(profile);
args.append(settingsList);
sendRequestToCtrlWithArgs(QString("Create"), args, debug);
} else {
QString profileTempName = mainWindow->netctlProfile->createProfile(profile, settings);
mainWindow->netctlProfile->copyProfile(profileTempName);
}
QString message; QString message;
if (mainWindow->startProfileSlot(profile)) { if (answer == InterfaceAnswer::True) {
message = QApplication::translate("MainWindow", "Connection is successfully."); message = QApplication::translate("MainWindow", "Connection is successfully");
mainWindow->showMessage(true); mainWindow->showMessage(true);
} else { } else {
message = QApplication::translate("MainWindow", "Connection failed."); message = QApplication::translate("MainWindow", "Connection failed");
mainWindow->showMessage(false); mainWindow->showMessage(false);
} }
message += QString("\n"); message += QString("\n");
message += QApplication::translate("MainWindow", "Do you want to save profile %1?").arg(profile); message += QApplication::translate("MainWindow", "Do you want to save profile %1?").arg(profile);
int select = QMessageBox::question(this, QApplication::translate("MainWindow", "WiFi menu"), int select = QMessageBox::question(this, QApplication::translate("MainWindow", "WiFi menu"),
message, QMessageBox::Save | QMessageBox::Discard, QMessageBox::Save); message, QMessageBox::Save | QMessageBox::Discard, QMessageBox::Save);
switch (select) { switch (select) {
case QMessageBox::Save: case QMessageBox::Save:
break; break;
case QMessageBox::Discard: case QMessageBox::Discard:
default: default:
if (useHelper) { removeProfileSlot(profile, mainWindow->netctlInterface, useHelper, debug);
QList<QVariant> args;
args.append(profile);
sendRequestToCtrlWithArgs(QString("Remove"), args, debug);
} else
mainWindow->netctlProfile->removeProfile(profile);
break; break;
} }
@ -199,10 +172,10 @@ void WiFiMenuWidget::updateMenuWifi()
} }
void WiFiMenuWidget::updateText() void WiFiMenuWidget::updateText(const netctlWifiInfo current)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
wifiTabSetEnabled(checkExternalApps(QString("wpasup-only"), configuration, debug)); if (wifiTabSetEnabled(checkExternalApps(QString("wpasup-only"), configuration, debug))) return;
if (!checkExternalApps(QString("wpasup"), configuration, debug)) { if (!checkExternalApps(QString("wpasup"), configuration, debug)) {
ErrorWindow::showWindow(1, QString(PDEBUG), debug); ErrorWindow::showWindow(1, QString(PDEBUG), debug);
emit(mainWindow->needToBeConfigured()); emit(mainWindow->needToBeConfigured());
@ -210,13 +183,6 @@ void WiFiMenuWidget::updateText()
} }
ui->label_wifi->setText(QApplication::translate("WiFiMenuWidget", "Processing...")); ui->label_wifi->setText(QApplication::translate("WiFiMenuWidget", "Processing..."));
netctlWifiInfo current;
if (useHelper)
current = parseOutputWifi(sendRequestToCtrl(QString("CurrentWiFi"), debug))[0];
else
current = mainWindow->wpaCommand->scanWifi()[0];
if (current.name.isEmpty()) return;
QString text = QString(""); QString text = QString("");
text += QString("%1 - %2 - %3 ").arg(current.name).arg(current.security).arg(current.macs[0]); text += QString("%1 - %2 - %3 ").arg(current.name).arg(current.security).arg(current.macs[0]);
text += QString("(%1 %2)").arg(current.frequencies[0]).arg(QApplication::translate("WiFiMenuWidget", "MHz")); text += QString("(%1 %2)").arg(current.frequencies[0]).arg(QApplication::translate("WiFiMenuWidget", "MHz"));
@ -228,7 +194,7 @@ void WiFiMenuWidget::updateText()
void WiFiMenuWidget::updateWifiTab() void WiFiMenuWidget::updateWifiTab()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
wifiTabSetEnabled(checkExternalApps(QString("wpasup-only"), configuration, debug)); if (wifiTabSetEnabled(checkExternalApps(QString("wpasup-only"), configuration, debug))) return;
if (!checkExternalApps(QString("wpasup"), configuration, debug)) { if (!checkExternalApps(QString("wpasup"), configuration, debug)) {
ErrorWindow::showWindow(1, QString(PDEBUG), debug); ErrorWindow::showWindow(1, QString(PDEBUG), debug);
emit(mainWindow->needToBeConfigured()); emit(mainWindow->needToBeConfigured());
@ -259,6 +225,7 @@ void WiFiMenuWidget::updateWifiTab()
headerList.append(QApplication::translate("WiFiMenuWidget", "Exists")); headerList.append(QApplication::translate("WiFiMenuWidget", "Exists"));
ui->tableWidget_wifi->setHorizontalHeaderLabels(headerList); ui->tableWidget_wifi->setHorizontalHeaderLabels(headerList);
// create items // create items
netctlWifiInfo current = scanResults.isEmpty() ? netctlWifiInfo() : scanResults.takeFirst();
for (int i=0; i<scanResults.count(); i++) { for (int i=0; i<scanResults.count(); i++) {
// font // font
QFont font; QFont font;
@ -335,7 +302,7 @@ void WiFiMenuWidget::updateWifiTab()
ui->tableWidget_wifi->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); ui->tableWidget_wifi->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
#endif #endif
updateText(); updateText(current);
mainWindow->setDisabled(false); mainWindow->setDisabled(false);
mainWindow->showMessage(true); mainWindow->showMessage(true);
} }
@ -375,13 +342,15 @@ void WiFiMenuWidget::wifiTabContextualMenu(const QPoint &pos)
} }
void WiFiMenuWidget::wifiTabSetEnabled(const bool state) bool WiFiMenuWidget::wifiTabSetEnabled(const bool state)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "State" << state; if (debug) qDebug() << PDEBUG << ":" << "State" << state;
ui->tableWidget_wifi->setHidden(!state); ui->tableWidget_wifi->setEnabled(state);
if (!state) ui->label_wifi->setText(QApplication::translate("WiFiMenuWidget", "Please install 'wpa_supplicant' before using it")); if (!state) ui->label_wifi->setText(QApplication::translate("WiFiMenuWidget", "Please install 'wpa_supplicant' before use it"));
return state;
} }
@ -396,6 +365,7 @@ void WiFiMenuWidget::wifiTabStart()
if (ui->tableWidget_wifi->currentItem() == nullptr) return; if (ui->tableWidget_wifi->currentItem() == nullptr) return;
mainWindow->setDisabled(true); mainWindow->setDisabled(true);
// name is hidden // name is hidden
if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("<hidden>")) { if (ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text() == QString("<hidden>")) {
hiddenNetwork = true; hiddenNetwork = true;
@ -414,21 +384,10 @@ void WiFiMenuWidget::wifiTabStart()
// name isn't hidden // name isn't hidden
hiddenNetwork = false; hiddenNetwork = false;
QString profile = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 0)->text(); 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(), 6)->text().isEmpty()) { if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 6)->text().isEmpty()) {
if (useHelper) { InterfaceAnswer answer = startProfileSlot(profile, mainWindow->netctlInterface,
QList<QVariant> args; useHelper, debug);
args.append(profile); mainWindow->showMessage(answer == InterfaceAnswer::True);
QList<QVariant> responce = sendRequestToLibWithArgs(QString("ProfileByEssid"), args, 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 = mainWindow->wpaCommand->existentProfile(profile);
mainWindow->showMessage(mainWindow->startProfileSlot(profileName));
} else { } else {
QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text(); QString security = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text();
if (security == QString("none")) return connectToUnknownEssid(QString("")); if (security == QString("none")) return connectToUnknownEssid(QString(""));

View File

@ -53,11 +53,11 @@ public slots:
private slots: private slots:
// update slots // update slots
void updateMenuWifi(); void updateMenuWifi();
void updateText(); void updateText(const netctlWifiInfo current);
void updateWifiTab(); void updateWifiTab();
// wifi tab slots // wifi tab slots
void wifiTabContextualMenu(const QPoint &pos); void wifiTabContextualMenu(const QPoint &pos);
void wifiTabSetEnabled(const bool state); bool wifiTabSetEnabled(const bool state);
void wifiTabStart(); void wifiTabStart();
private: private:
@ -70,7 +70,7 @@ private:
void createObjects(); void createObjects();
void deleteObjects(); void deleteObjects();
bool debug = false; bool debug = false;
bool hiddenNetwork; bool hiddenNetwork = false;
bool useHelper = true; bool useHelper = true;
// configuration // configuration
QMap<QString, QString> configuration; QMap<QString, QString> configuration;

View File

@ -1,6 +1,7 @@
# set files # set files
file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp
${PROJECT_TRDPARTY_DIR}/language/*.cpp) ${PROJECT_TRDPARTY_DIR}/language/*.cpp
${PROJECT_TRDPARTY_DIR}/listmap/*.cpp)
file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h
${PROJECT_TRDPARTY_DIR}/language/*.h) ${PROJECT_TRDPARTY_DIR}/language/*.h)

View File

@ -20,6 +20,8 @@
#include <QTextCodec> #include <QTextCodec>
#include <unistd.h> #include <unistd.h>
#include <listmap/listmap.h>
#include "netctlhelper.h" #include "netctlhelper.h"
#include "version.h" #include "version.h"
@ -80,11 +82,7 @@ QStringList ControlAdaptor::FindSettings()
for (int i=0; i<librarySettings.keys().count(); i++) for (int i=0; i<librarySettings.keys().count(); i++)
configuration[librarySettings.keys()[i]] = librarySettings[librarySettings.keys()[i]]; configuration[librarySettings.keys()[i]] = librarySettings[librarySettings.keys()[i]];
QStringList settingsList; return mapToList(configuration);
for (int i=0; i<configuration.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(configuration.keys()[i]).arg(configuration[configuration.keys()[i]]));
return settingsList;
} }
@ -229,14 +227,7 @@ bool ControlAdaptor::SwitchTo(const QString profile)
// netctlProfile // netctlProfile
bool ControlAdaptor::Create(const QString profile, const QStringList settingsList) bool ControlAdaptor::Create(const QString profile, const QStringList settingsList)
{ {
QMap<QString, QString> settings; QString temporaryProfile = netctlProfile->createProfile(profile, listToMap(settingsList));
for (int i=0; i<settingsList.count(); i++) {
if (!settingsList[i].contains(QString("=="))) continue;
QString key = settingsList[i].split(QString("=="))[0];
QString value = settingsList[i].split(QString("=="))[1];
settings[key] = value;
}
QString temporaryProfile = netctlProfile->createProfile(profile, settings);
return netctlProfile->copyProfile(temporaryProfile); return netctlProfile->copyProfile(temporaryProfile);
} }

View File

@ -70,7 +70,7 @@ public slots:
// wpaCommand // wpaCommand
QString CurrentWiFi(); QString CurrentWiFi();
QStringList VerboseWiFi(); QStringList VerboseWiFi();
Q_DECL_DEPRECATED QStringList WiFi(); QStringList WiFi();
private: private:
bool debug; bool debug;

View File

@ -20,6 +20,8 @@
#include <QTextCodec> #include <QTextCodec>
#include <unistd.h> #include <unistd.h>
#include <listmap/listmap.h>
#include "netctlhelper.h" #include "netctlhelper.h"
#include "version.h" #include "version.h"
@ -38,6 +40,7 @@ InterfaceAdaptor::~InterfaceAdaptor()
} }
// control slots
int InterfaceAdaptor::autoEnable(const QString profile) int InterfaceAdaptor::autoEnable(const QString profile)
{ {
return netctlInterface->autoEnableProfile(profile); return netctlInterface->autoEnableProfile(profile);
@ -46,15 +49,7 @@ int InterfaceAdaptor::autoEnable(const QString profile)
int InterfaceAdaptor::Create(const QString profile, const QStringList settingsList) int InterfaceAdaptor::Create(const QString profile, const QStringList settingsList)
{ {
QMap<QString, QString> settings; return netctlInterface->createProfile(profile, listToMap(settingsList));
for (int i=0; i<settingsList.count(); i++) {
if (!settingsList[i].contains(QString("=="))) continue;
QString key = settingsList[i].split(QString("=="))[0];
QString value = settingsList[i].split(QString("=="))[1];
settings[key] = value;
}
return netctlInterface->createProfile(profile, settings);
} }
@ -66,15 +61,7 @@ int InterfaceAdaptor::Enable(const QString profile)
int InterfaceAdaptor::Essid(const QString essid, QStringList settingsList) int InterfaceAdaptor::Essid(const QString essid, QStringList settingsList)
{ {
QMap<QString, QString> settings; return netctlInterface->connectToEssid(essid, listToMap(settingsList));
for (int i=0; i<settingsList.count(); i++) {
if (!settingsList[i].contains(QString("=="))) continue;
QString key = settingsList[i].split(QString("=="))[0];
QString value = settingsList[i].split(QString("=="))[1];
settings[key] = value;
}
return netctlInterface->connectToEssid(essid, settings);
} }
@ -84,6 +71,12 @@ int InterfaceAdaptor::KnownEssid(const QString essid)
} }
int InterfaceAdaptor::Remove(const QString profile)
{
return netctlInterface->removeProfile(profile);
}
int InterfaceAdaptor::Restart(const QString profile) int InterfaceAdaptor::Restart(const QString profile)
{ {
return netctlInterface->restartProfile(profile); return netctlInterface->restartProfile(profile);
@ -110,13 +103,55 @@ int InterfaceAdaptor::SwitchTo(const QString profile)
int InterfaceAdaptor::UnknownEssid(const QString essid, QStringList settingsList) int InterfaceAdaptor::UnknownEssid(const QString essid, QStringList settingsList)
{ {
QMap<QString, QString> settings; return netctlInterface->connectToUnknownEssid(essid, listToMap(settingsList));
for (int i=0; i<settingsList.count(); i++) { }
if (!settingsList[i].contains(QString("=="))) continue;
QString key = settingsList[i].split(QString("=="))[0];
QString value = settingsList[i].split(QString("=="))[1]; // information
settings[key] = value; QStringList InterfaceAdaptor::Information()
{
netctlInformation information = netctlInterface->information();
QStringList info;
info.append(QString::number(information.netctlAuto));
QList<netctlProfileInfo> profiles = information.netctlProfiles;
profiles.append(information.netctlAutoProfiles);
for (int i=0; i<profiles.count(); i++) {
QStringList profileInfo;
profileInfo.append(profiles[i].name);
profileInfo.append(profiles[i].description);
profileInfo.append(profiles[i].type);
profileInfo.append(profiles[i].interface);
profileInfo.append(profiles[i].essid);
profileInfo.append(QString::number(profiles[i].active));
profileInfo.append(QString::number(profiles[i].enabled));
profileInfo.append(QString::number(profiles[i].netctlAuto));
info.append(profileInfo.join(QChar('|')));
} }
return netctlInterface->connectToUnknownEssid(essid, settings); return info;
}
QStringList InterfaceAdaptor::Profile(const QString profile)
{
QMap<QString, QString> settings = netctlInterface->profileSettings(profile);
return mapToList(settings);
}
QStringList InterfaceAdaptor::Status()
{
netctlCurrent current = netctlInterface->status();
QStringList info;
info.append(QString::number(current.netctlAuto));
info.append(current.profiles.join(QChar('|')));
info.append(current.current.join(QChar('|')));
QStringList enables;
for (int i=0; i<current.enables.count(); i++)
enables.append(QString::number(current.enables[i]));
info.append(enables.join(QChar('|')));
return info;
} }

View File

@ -35,17 +35,22 @@ public:
~InterfaceAdaptor(); ~InterfaceAdaptor();
public slots: public slots:
// interface // control slots
int autoEnable(const QString profile); int autoEnable(const QString profile);
int Create(const QString profile, const QStringList settingsList); int Create(const QString profile, const QStringList settingsList);
int Enable(const QString profile); int Enable(const QString profile);
int Essid(const QString essid, QStringList settingsList); int Essid(const QString essid, QStringList settingsList);
int KnownEssid(const QString essid); int KnownEssid(const QString essid);
int Remove(const QString profile);
int Restart(const QString profile); int Restart(const QString profile);
int Start(const QString profile); int Start(const QString profile);
int StopAll(); int StopAll();
int SwitchTo(const QString profile); int SwitchTo(const QString profile);
int UnknownEssid(const QString essid, QStringList settingsList); int UnknownEssid(const QString essid, QStringList settingsList);
// information
QStringList Information();
QStringList Profile(const QString profile);
QStringList Status();
private: private:
bool debug; bool debug;

View File

@ -17,6 +17,8 @@
#include "netctladaptor.h" #include "netctladaptor.h"
#include <listmap/listmap.h>
NetctlAdaptor::NetctlAdaptor(QObject *parent, const bool debugCmd, const QMap<QString, QString> configuration) NetctlAdaptor::NetctlAdaptor(QObject *parent, const bool debugCmd, const QMap<QString, QString> configuration)
: QDBusAbstractAdaptor(parent), : QDBusAbstractAdaptor(parent),
@ -142,6 +144,7 @@ QStringList NetctlAdaptor::netctlVerboseProfileList()
profileInfo.append(profilesInfo[i].essid); profileInfo.append(profilesInfo[i].essid);
profileInfo.append(QString::number(profilesInfo[i].active)); profileInfo.append(QString::number(profilesInfo[i].active));
profileInfo.append(QString::number(profilesInfo[i].enabled)); profileInfo.append(QString::number(profilesInfo[i].enabled));
profileInfo.append(QString::number(profilesInfo[i].netctlAuto));
info.append(profileInfo.join(QChar('|'))); info.append(profileInfo.join(QChar('|')));
} }
@ -187,6 +190,7 @@ QStringList NetctlAdaptor::VerboseProfileList()
profileInfo.append(profilesInfo[i].essid); profileInfo.append(profilesInfo[i].essid);
profileInfo.append(QString::number(profilesInfo[i].active)); profileInfo.append(QString::number(profilesInfo[i].active));
profileInfo.append(QString::number(profilesInfo[i].enabled)); profileInfo.append(QString::number(profilesInfo[i].enabled));
profileInfo.append(QString::number(profilesInfo[i].netctlAuto));
info.append(profileInfo.join(QChar('|'))); info.append(profileInfo.join(QChar('|')));
} }
@ -198,11 +202,8 @@ QStringList NetctlAdaptor::VerboseProfileList()
QStringList NetctlAdaptor::Profile(const QString profile) QStringList NetctlAdaptor::Profile(const QString profile)
{ {
QMap<QString, QString> settings = netctlProfile->getSettingsFromProfile(profile); QMap<QString, QString> settings = netctlProfile->getSettingsFromProfile(profile);
QStringList settingsList;
for (int i=0; i<settings.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(settings.keys()[i]).arg(settings[settings.keys()[i]]));
return settingsList; return mapToList(settings);
} }

View File

@ -49,7 +49,7 @@ public slots:
QString netctlActiveProfile(); QString netctlActiveProfile();
QStringList netctlProfileList(); QStringList netctlProfileList();
QStringList netctlVerboseProfileList(); QStringList netctlVerboseProfileList();
Q_DECL_DEPRECATED QStringList ProfileList(); QStringList ProfileList();
QStringList VerboseProfileList(); QStringList VerboseProfileList();
// netctlProfile // netctlProfile
QStringList Profile(const QString profile); QStringList Profile(const QString profile);

View File

@ -24,6 +24,7 @@
#include <QSettings> #include <QSettings>
#include <unistd.h> #include <unistd.h>
#include <listmap/listmap.h>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
@ -57,11 +58,7 @@ QStringList NetctlHelper::printSettings()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QStringList settingsList; return mapToList(configuration);
for (int i=0; i<configuration.keys().count(); i++)
settingsList.append(QString("%1==%2").arg(configuration.keys()[i]).arg(configuration[configuration.keys()[i]]));
return settingsList;
} }

View File

@ -27,8 +27,5 @@
#define NETCTLGUI_H #define NETCTLGUI_H
#include "netctlinterface.h" #include "netctlinterface.h"
#include "netctlinteract.h"
#include "netctlprofile.h"
#include "wpasupinteract.h"
#endif /* NETCTLGUI_H */ #endif /* NETCTLGUI_H */

View File

@ -50,6 +50,8 @@ class NetctlProfile;
* whether profile is active * whether profile is active
* @var netctlProfileInfo::enabled * @var netctlProfileInfo::enabled
* whether profile is enabled * whether profile is enabled
* @var netctlProfileInfo::netctlAuto
* whether profile is from netctl-auto
*/ */
typedef struct typedef struct
{ {
@ -60,6 +62,7 @@ typedef struct
QString type; QString type;
bool active = false; bool active = false;
bool enabled = false; bool enabled = false;
bool netctlAuto = false;
} netctlProfileInfo; } netctlProfileInfo;
/** /**

View File

@ -30,10 +30,10 @@
#include <QMap> #include <QMap>
#include <QObject> #include <QObject>
#include "netctlinteract.h"
#include "netctlprofile.h"
#include "wpasupinteract.h"
class Netctl;
class NetctlProfile;
class WpaSup;
/** /**
* @enum InterfaceAnswer * @enum InterfaceAnswer
@ -51,6 +51,43 @@ enum InterfaceAnswer {
Error Error
}; };
/**
* @struct netctlCurrent
* @brief current status structure
* @var netctlCurrent::current
* current profiles
* @var netctlCurrent::enables
* are current profiles enabled
* @var netctlCurrent::netctlAuto
* is netctl-auto active
* @var netctlCurrent::profiles
* list of profiles
*/
typedef struct
{
QStringList current;
QList<bool> enables;
QStringList profiles;
bool netctlAuto = false;
} netctlCurrent;
/**
* @struct netctlInformation
* @brief general information structure
* @var netctlCurrent::netctlProfiles
* list of profiles
* @var netctlCurrent::netctlAutoProfiles
* list of netctl-auto profiles
* @var netctlCurrent::netctlAuto
* is netctl-auto active
*/
typedef struct
{
QList<netctlProfileInfo> netctlProfiles;
QList<netctlProfileInfo> netctlAutoProfiles;
bool netctlAuto = false;
} netctlInformation;
/** /**
* @brief The NetctlInterface class provides complex methods to get access to library * @brief The NetctlInterface class provides complex methods to get access to library
*/ */
@ -70,6 +107,7 @@ public:
* @brief NetctlInterface class destructor * @brief NetctlInterface class destructor
*/ */
~NetctlInterface(); ~NetctlInterface();
// control methods
/** /**
* @brief method which enables or disables selected profile and returns its status * @brief method which enables or disables selected profile and returns its status
* @remark netctl-auto only * @remark netctl-auto only
@ -127,6 +165,14 @@ public:
* @return InterfaceAnswer::Error if an error occurs * @return InterfaceAnswer::Error if an error occurs
*/ */
InterfaceAnswer enableProfile(const QString profile); InterfaceAnswer enableProfile(const QString profile);
/**
* @brief method which removes selected profile
* @remark netctl independ
* @param profile profile name
* @return InterfaceAnswer::True if profile does not exists anymore
* @return InterfaceAnswer::Error if an error occurs
*/
InterfaceAnswer removeProfile(const QString profile);
/** /**
* @brief method which restarts selected profile and returns its status * @brief method which restarts selected profile and returns its status
* @remark netctl only * @remark netctl only
@ -161,6 +207,25 @@ public:
* @return InterfaceAnswer::Error if an error occurs * @return InterfaceAnswer::Error if an error occurs
*/ */
InterfaceAnswer switchToProfile(const QString profile); InterfaceAnswer switchToProfile(const QString profile);
// information
/**
* @brief method which returns general information
* @remark both netctl and netctl-auto
* @return netctlInformation structure
*/
netctlInformation information();
/**
* @brief method which reads settings from profile
* @param profile profile name
* @return settings from profile
*/
QMap<QString, QString> profileSettings(const QString profile);
/**
* @brief method which returns current status
* @remark both netctl and netctl-auto
* @return netctlCurrent structure
*/
netctlCurrent status();
private: private:
/** /**

View File

@ -203,6 +203,7 @@ QList<netctlProfileInfo> Netctl::getProfileList()
profileInfo.essid = profileValues[2]; profileInfo.essid = profileValues[2];
profileInfo.interface = profileValues[3]; profileInfo.interface = profileValues[3];
profileInfo.type = profileValues[0]; profileInfo.type = profileValues[0];
profileInfo.netctlAuto = false;
fullProfilesInfo.append(profileInfo); fullProfilesInfo.append(profileInfo);
} }
@ -227,12 +228,18 @@ QList<netctlProfileInfo> Netctl::getProfileListFromNetctlAuto()
profileInfo.enabled = (output[i][0] != QChar('!')); profileInfo.enabled = (output[i][0] != QChar('!'));
// external // external
QStringList keys; QStringList keys;
keys.append(QString("Connection"));
keys.append(QString("Description")); keys.append(QString("Description"));
keys.append(QString("ESSID")); keys.append(QString("ESSID"));
keys.append(QString("Interface"));
QStringList profileValues = netctlProfile->getValuesFromProfile(profileInfo.name, QStringList profileValues = netctlProfile->getValuesFromProfile(profileInfo.name,
keys); keys);
profileInfo.description = profileValues[0]; profileInfo.description = profileValues[1];
profileInfo.essid = profileValues[2];
profileInfo.interface = profileValues[3];
profileInfo.type = profileValues[0];
profileInfo.essid = profileValues[1]; profileInfo.essid = profileValues[1];
profileInfo.netctlAuto = true;
fullProfilesInfo.append(profileInfo); fullProfilesInfo.append(profileInfo);
} }

View File

@ -25,7 +25,7 @@
#include <QDebug> #include <QDebug>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlinterface.h>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
@ -89,10 +89,11 @@ InterfaceAnswer NetctlInterface::connectToEssid(const QString essid, QMap<QStrin
return InterfaceAnswer::Error; return InterfaceAnswer::Error;
} }
if (wpaCommand->existentProfile(essid).isEmpty()) QString profile = wpaCommand->existentProfile(essid);
if (profile.isEmpty())
return connectToUnknownEssid(essid, settings); return connectToUnknownEssid(essid, settings);
else else
return connectToKnownEssid(essid); return startProfile(profile);
} }
@ -187,6 +188,24 @@ InterfaceAnswer NetctlInterface::enableProfile(const QString profile)
} }
/**
* @fn removeProfile
*/
InterfaceAnswer NetctlInterface::removeProfile(const QString profile)
{
if (debug) qDebug() << PDEBUG;
if (netctlProfile == nullptr) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
return InterfaceAnswer::Error;
}
if (netctlProfile->removeProfile(profile))
return InterfaceAnswer::True;
else
return InterfaceAnswer::Error;
}
/** /**
* @fn restartProfile * @fn restartProfile
*/ */
@ -266,3 +285,67 @@ InterfaceAnswer NetctlInterface::switchToProfile(const QString profile)
return status; return status;
} }
/**
* @fn information
*/
netctlInformation NetctlInterface::information()
{
if (debug) qDebug() << PDEBUG;
if (netctlCommand == nullptr) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
return netctlInformation();
}
netctlInformation info;
info.netctlAuto = netctlCommand->isNetctlAutoRunning();
info.netctlProfiles = netctlCommand->getProfileList();
if (info.netctlAuto) info.netctlAutoProfiles = netctlCommand->getProfileListFromNetctlAuto();
return info;
}
/**
* @fn profileSettings
*/
QMap<QString, QString> NetctlInterface::profileSettings(const QString profile)
{
if (debug) qDebug() << PDEBUG;
if (netctlProfile == nullptr) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
return QMap<QString, QString>();
}
return netctlProfile->getSettingsFromProfile(profile);
}
/**
* @fn status
*/
netctlCurrent NetctlInterface::status()
{
if (debug) qDebug() << PDEBUG;
if (netctlCommand == nullptr) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
return netctlCurrent();
}
netctlCurrent current;
current.netctlAuto = netctlCommand->isNetctlAutoRunning();
QList<netctlProfileInfo> profiles;
if (current.netctlAuto)
profiles = netctlCommand->getProfileListFromNetctlAuto();
else
profiles = netctlCommand->getProfileList();
for (int i=0; i<profiles.count(); i++) {
current.profiles.append(profiles[i].name);
if (!profiles[i].active) continue;
current.current.append(profiles[i].name);
current.enables.append(profiles[i].enabled);
}
return current;
}

View File

@ -11,23 +11,24 @@ set (TARGETS "")
# set files # set files
# netctl # netctl
set (NETCTL_HEADERS testnetctl.h) set (NETCTL_HEADERS testnetctl.h)
set (NETCTL_SOURCES testnetctl.cpp) set (NETCTL_SOURCES testnetctl.cpp ${PROJECT_TRDPARTY_DIR}/listmap/listmap.cpp)
# netctl-auto # netctl-auto
set (NETCTLAUTO_HEADERS testnetctlauto.h) set (NETCTLAUTO_HEADERS testnetctlauto.h)
set (NETCTLAUTO_SOURCES testnetctlauto.cpp) set (NETCTLAUTO_SOURCES testnetctlauto.cpp ${PROJECT_TRDPARTY_DIR}/listmap/listmap.cpp)
# netctl profile # netctl profile
set (PROFILE_HEADERS testnetctlprofile.h) set (PROFILE_HEADERS testnetctlprofile.h)
set (PROFILE_SOURCES testnetctlprofile.cpp) set (PROFILE_SOURCES testnetctlprofile.cpp ${PROJECT_TRDPARTY_DIR}/listmap/listmap.cpp)
# wpa_supplicant # wpa_supplicant
set (WPASUP_HEADERS testwpasup.h) set (WPASUP_HEADERS testwpasup.h)
set (WPASUP_SOURCES testwpasup.cpp) set (WPASUP_SOURCES testwpasup.cpp ${PROJECT_TRDPARTY_DIR}/listmap/listmap.cpp)
# include_path # include_path
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/include/ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/include/
${CMAKE_CURRENT_BINARY_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_TRDPARTY_DIR})
link_directories (${PROJECT_LIBRARY}/src/lib) link_directories (${PROJECT_LIBRARY}/src/lib)
if (USE_QT5) if (USE_QT5)

View File

@ -22,6 +22,7 @@
#include <QDBusMessage> #include <QDBusMessage>
#include <QtTest> #include <QtTest>
#include <listmap/listmap.h>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include "version.h" #include "version.h"
@ -119,12 +120,9 @@ void TestNetctl::test_getRecommendedConfiguration()
original.append(QString("SUDO_PATH==/usr/bin/sudo")); original.append(QString("SUDO_PATH==/usr/bin/sudo"));
original.append(QString("SYSTEMCTL_PATH==/usr/bin/systemctl")); original.append(QString("SYSTEMCTL_PATH==/usr/bin/systemctl"));
QMap<QString, QString> resultMap = Netctl::getRecommendedConfiguration(); QMap<QString, QString> resultMap = Netctl::getRecommendedConfiguration();
QStringList result;
for (int i=0; i<resultMap.keys().count(); i++)
result.append(QString("%1==%2").arg(resultMap.keys()[i]).arg(resultMap[resultMap.keys()[i]]));
QWARN("This test may fail on other configuration"); QWARN("This test may fail on other configuration");
QCOMPARE(result, original); QCOMPARE(mapToList(resultMap), original);
} }

View File

@ -22,6 +22,7 @@
#include <QDBusMessage> #include <QDBusMessage>
#include <QtTest> #include <QtTest>
#include <listmap/listmap.h>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include "version.h" #include "version.h"
@ -107,12 +108,9 @@ void TestNetctlProfile::test_getRecommendedConfiguration()
original.append(QString("PROFILE_DIR==/etc/netctl")); original.append(QString("PROFILE_DIR==/etc/netctl"));
original.append(QString("SUDO_PATH==/usr/bin/sudo")); original.append(QString("SUDO_PATH==/usr/bin/sudo"));
QMap<QString, QString> resultMap = NetctlProfile::getRecommendedConfiguration(); QMap<QString, QString> resultMap = NetctlProfile::getRecommendedConfiguration();
QStringList result;
for (int i=0; i<resultMap.keys().count(); i++)
result.append(QString("%1==%2").arg(resultMap.keys()[i]).arg(resultMap[resultMap.keys()[i]]));
QWARN("This test may fail on other configuration"); QWARN("This test may fail on other configuration");
QCOMPARE(result, original); QCOMPARE(mapToList(resultMap), original);
} }
@ -234,10 +232,7 @@ void TestNetctlProfile::test_createProfile()
if (helper) { if (helper) {
QList<QVariant> args; QList<QVariant> args;
args.append(QString("netctlgui-test-full")); args.append(QString("netctlgui-test-full"));
QStringList profileSettingsList; args.append(mapToList(profileSettings));
for (int i=0; i<profileSettings.keys().count(); i++)
profileSettingsList.append(QString("%1==%2").arg(profileSettings.keys()[i]).arg(profileSettings[profileSettings.keys()[i]]));
args.append(profileSettingsList);
QVERIFY(sendDBusRequest(QString("/ctrl"), QString("Create"), args)[0].toBool()); QVERIFY(sendDBusRequest(QString("/ctrl"), QString("Create"), args)[0].toBool());
} }
delete netctl; delete netctl;
@ -298,13 +293,11 @@ phase2=\"auth=PAP\"\
dbus = sendDBusRequest(QString("/netctl"), QString("Profile"), args)[0].toStringList(); dbus = sendDBusRequest(QString("/netctl"), QString("Profile"), args)[0].toStringList();
} }
QMap<QString, QString> resultMap = netctl->getSettingsFromProfile(QString("netctlgui-test-full")); QMap<QString, QString> resultMap = netctl->getSettingsFromProfile(QString("netctlgui-test-full"));
for (int i=0; i<resultMap.keys().count(); i++)
result.append(QString("%1==%2").arg(resultMap.keys()[i]).arg(resultMap[resultMap.keys()[i]]));
netctl->removeProfile(QString("netctlgui-test-full")); netctl->removeProfile(QString("netctlgui-test-full"));
delete netctl; delete netctl;
QCOMPARE(result, original); QCOMPARE(mapToList(resultMap), original);
if (helper) QCOMPARE(dbus, result); if (helper) QCOMPARE(dbus, mapToList(resultMap));
} }

View File

@ -22,6 +22,7 @@
#include <QDBusMessage> #include <QDBusMessage>
#include <QtTest> #include <QtTest>
#include <listmap/listmap.h>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include "version.h" #include "version.h"
@ -83,12 +84,9 @@ void TestWpaSup::test_getRecommendedConfiguration()
original.append(QString("WPASUP_PATH==/usr/bin/wpa_supplicant")); original.append(QString("WPASUP_PATH==/usr/bin/wpa_supplicant"));
original.append(QString("WPA_DRIVERS==nl80211,wext")); original.append(QString("WPA_DRIVERS==nl80211,wext"));
QMap<QString, QString> resultMap = WpaSup::getRecommendedConfiguration(); QMap<QString, QString> resultMap = WpaSup::getRecommendedConfiguration();
QStringList result;
for (int i=0; i<resultMap.keys().count(); i++)
result.append(QString("%1==%2").arg(resultMap.keys()[i]).arg(resultMap[resultMap.keys()[i]]));
QWARN("This test may fail on other configuration"); QWARN("This test may fail on other configuration");
QCOMPARE(result, original); QCOMPARE(mapToList(resultMap), original);
} }