mirror of
https://github.com/arcan1s/netctl-gui.git
synced 2025-04-24 23:47:21 +00:00
+ add toolbar config
+ create interface class * update UI
This commit is contained in:
parent
02432be630
commit
26afd90df9
@ -198,12 +198,12 @@ small {
|
|||||||
<!-- wpa_supplicant actions -->
|
<!-- wpa_supplicant actions -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>QStringList CurrentWiFi()</td>
|
<td>QStringList CurrentWiFi()</td>
|
||||||
<td>returns current WiFi point in format <code>NAME|SECURITY|TYPE|FREQS|MACS|SIGNAL|ACTIVE|EXISTS</code></td>
|
<td>returns current WiFi point in format <code>NAME|SECURITY|TYPE|FREQ|MAC|SIGNAL|ACTIVE|EXISTS</code></td>
|
||||||
<td>yes</td>
|
<td>yes</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>QStringList VerboseWiFi()</td>
|
<td>QStringList VerboseWiFi()</td>
|
||||||
<td>returns available WiFi points in format <code>NAME|SECURITY|TYPE|FREQS|MACS|SIGNAL|ACTIVE|EXISTS</code></td>
|
<td>returns available WiFi points in format <code>NAME|SECURITY|TYPE|FREQS|MACS|SIGNAL|ACTIVE|EXISTS</code>. First line is always active connection (see <code>CurrentWiFi()</code>)</td>
|
||||||
<td>yes</td>
|
<td>yes</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
183
sources/gui/src/calls.cpp
Normal file
183
sources/gui/src/calls.cpp
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* 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 "calls.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include <pdebug/pdebug.h>
|
||||||
|
|
||||||
|
#include "dbusoperation.h"
|
||||||
|
|
||||||
|
|
||||||
|
bool enableProfileSlot(const QString profile, Netctl *netctlCommand,
|
||||||
|
const bool useHelper, const bool debug)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
||||||
|
|
||||||
|
bool current;
|
||||||
|
if (useHelper) {
|
||||||
|
// enable
|
||||||
|
QList<QVariant> args;
|
||||||
|
args.append(profile);
|
||||||
|
sendRequestToCtrlWithArgs(QString("Enable"), args, debug);
|
||||||
|
// check
|
||||||
|
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileEnabled"), args, debug);
|
||||||
|
if (responce.isEmpty())
|
||||||
|
current = netctlCommand->isProfileEnabled(profile);
|
||||||
|
else
|
||||||
|
current = responce[0].toBool();
|
||||||
|
} else {
|
||||||
|
// enable
|
||||||
|
netctlCommand->enableProfile(profile);
|
||||||
|
// check
|
||||||
|
current = netctlCommand->isProfileEnabled(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool restartProfileSlot(const QString profile, Netctl *netctlCommand,
|
||||||
|
const bool useHelper, const bool debug)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
||||||
|
|
||||||
|
bool current;
|
||||||
|
if (useHelper) {
|
||||||
|
// restart
|
||||||
|
QList<QVariant> args;
|
||||||
|
args.append(profile);
|
||||||
|
sendRequestToCtrlWithArgs(QString("Restart"), args, debug);
|
||||||
|
// check
|
||||||
|
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
||||||
|
if (responce.isEmpty())
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
else
|
||||||
|
current = responce[0].toBool();
|
||||||
|
} else {
|
||||||
|
// restart
|
||||||
|
netctlCommand->restartProfile(profile);
|
||||||
|
// check
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool startProfileSlot(const QString profile, Netctl *netctlCommand,
|
||||||
|
const bool useHelper, const bool debug)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
||||||
|
|
||||||
|
bool current;
|
||||||
|
if (useHelper) {
|
||||||
|
// get current
|
||||||
|
QList<QVariant> args;
|
||||||
|
args.append(profile);
|
||||||
|
QList<QVariant> responce = sendRequestToLib(QString("ActiveProfile"), debug);
|
||||||
|
QStringList currentProfile;
|
||||||
|
if (!responce.isEmpty()) currentProfile = responce[0].toString().split(QChar('|'));
|
||||||
|
// start or switch
|
||||||
|
if ((currentProfile.isEmpty()) || (currentProfile.contains(profile)))
|
||||||
|
sendRequestToCtrlWithArgs(QString("Start"), args, debug);
|
||||||
|
else
|
||||||
|
sendRequestToCtrlWithArgs(QString("SwitchTo"), args, debug);
|
||||||
|
// check
|
||||||
|
responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
||||||
|
if (responce.isEmpty())
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
else
|
||||||
|
current = responce[0].toBool();
|
||||||
|
} else {
|
||||||
|
// get current
|
||||||
|
QStringList currentProfile = netctlCommand->getActiveProfile();
|
||||||
|
// start or switch
|
||||||
|
if ((currentProfile.isEmpty()) || (currentProfile.contains(profile)))
|
||||||
|
netctlCommand->startProfile(profile);
|
||||||
|
else
|
||||||
|
netctlCommand->switchToProfile(profile);
|
||||||
|
// check
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool MainWindow::stopAllProfilesSlot()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
if (useHelper)
|
||||||
|
sendRequestToCtrl(QString("StolAll"), debug);
|
||||||
|
else
|
||||||
|
netctlCommand->stopAllProfiles();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool MainWindow::switchToProfileSlot(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
||||||
|
|
||||||
|
bool netctlAutoStatus = false;
|
||||||
|
if (useHelper) {
|
||||||
|
QList<QVariant> responce = sendRequestToLib(QString("isNetctlAutoActive"), debug);
|
||||||
|
if (!responce.isEmpty()) netctlAutoStatus = responce[0].toBool();
|
||||||
|
} else
|
||||||
|
netctlAutoStatus = netctlCommand->isNetctlAutoRunning();
|
||||||
|
|
||||||
|
bool current;
|
||||||
|
if (netctlAutoStatus) {
|
||||||
|
if (useHelper) {
|
||||||
|
QList<QVariant> args;
|
||||||
|
args.append(profile);
|
||||||
|
sendRequestToCtrlWithArgs(QString("autoStart"), args, debug);
|
||||||
|
QList<QVariant> responce = sendRequestToLibWithArgs(QString("autoIsProfileActive"), args, debug);
|
||||||
|
if (responce.isEmpty())
|
||||||
|
current = netctlCommand->autoIsProfileActive(profile);
|
||||||
|
else
|
||||||
|
current = responce[0].toBool();
|
||||||
|
} else {
|
||||||
|
netctlCommand->autoStartProfile(profile);
|
||||||
|
current = netctlCommand->autoIsProfileActive(profile);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (useHelper) {
|
||||||
|
QList<QVariant> args;
|
||||||
|
args.append(profile);
|
||||||
|
sendRequestToCtrlWithArgs(QString("SwitchTo"), args, debug);
|
||||||
|
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
||||||
|
if (responce.isEmpty())
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
else
|
||||||
|
current = responce[0].toBool();
|
||||||
|
} else {
|
||||||
|
netctlCommand->switchToProfile(profile);
|
||||||
|
current = netctlCommand->isProfileActive(profile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
31
sources/gui/src/calls.h
Normal file
31
sources/gui/src/calls.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* 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 CALLS_H
|
||||||
|
#define CALLS_H
|
||||||
|
|
||||||
|
#include <QMap>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
#include <netctlgui/netctlgui.h>
|
||||||
|
|
||||||
|
|
||||||
|
bool enableProfileSlot(const QString profile, Netctl *netctlCommand,
|
||||||
|
const bool useHelper, const bool debug = false);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* CALLS_H */
|
@ -51,6 +51,14 @@ MainWidget::~MainWidget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea MainWidget::getToolBarArea()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
return toolBarArea(ui->toolBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool MainWidget::mainTabSelectProfileSlot(const QString profile)
|
bool MainWidget::mainTabSelectProfileSlot(const QString profile)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -65,14 +73,6 @@ bool MainWidget::mainTabSelectProfileSlot(const QString profile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::showNetctlAutoWindow()
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
|
|
||||||
netctlAutoWin->showWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::update()
|
void MainWidget::update()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -82,6 +82,19 @@ void MainWidget::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::updateToolBarState(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Toolbar area" << area;
|
||||||
|
|
||||||
|
removeToolBar(ui->toolBar);
|
||||||
|
if (area != Qt::NoToolBarArea) {
|
||||||
|
addToolBar(area, ui->toolBar);
|
||||||
|
ui->toolBar->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::updateMenuMain()
|
void MainWidget::updateMenuMain()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -139,10 +152,10 @@ void MainWidget::updateMainTab()
|
|||||||
netctlAutoStatus = responce[0].toBool();
|
netctlAutoStatus = responce[0].toBool();
|
||||||
profiles = parseOutputNetctl(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
|
profiles = parseOutputNetctl(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
|
||||||
} else {
|
} else {
|
||||||
netctlAutoStatus = netctlCommand->isNetctlAutoRunning();
|
netctlAutoStatus = mainWindow->netctlCommand->isNetctlAutoRunning();
|
||||||
profiles = netctlCommand->getProfileList();
|
profiles = mainWindow->netctlCommand->getProfileList();
|
||||||
}
|
}
|
||||||
ui->widget_netctlAuto->setHidden(!netctlAutoStatus);
|
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);
|
||||||
@ -317,7 +330,7 @@ void MainWidget::mainTabRemoveProfile()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlProfile->removeProfile(profile);
|
status = mainWindow->netctlProfile->removeProfile(profile);
|
||||||
mainWindow->showMessage(status);
|
mainWindow->showMessage(status);
|
||||||
|
|
||||||
updateMainTab();
|
updateMainTab();
|
||||||
@ -380,7 +393,7 @@ void MainWidget::mainTabStopAllProfiles()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->stopAllProfiles();
|
status = mainWindow->netctlCommand->stopAllProfiles();
|
||||||
mainWindow->showMessage(status);
|
mainWindow->showMessage(status);
|
||||||
|
|
||||||
updateMainTab();
|
updateMainTab();
|
||||||
@ -412,7 +425,6 @@ void MainWidget::createActions()
|
|||||||
// menu actions
|
// menu actions
|
||||||
connect(ui->actionEnable, SIGNAL(triggered(bool)), this, SLOT(mainTabEnableProfile()));
|
connect(ui->actionEnable, SIGNAL(triggered(bool)), this, SLOT(mainTabEnableProfile()));
|
||||||
connect(ui->actionEdit, SIGNAL(triggered(bool)), this, SLOT(mainTabEditProfile()));
|
connect(ui->actionEdit, SIGNAL(triggered(bool)), this, SLOT(mainTabEditProfile()));
|
||||||
connect(ui->actionNetctl_auto, SIGNAL(triggered(bool)), this, SLOT(showNetctlAutoWindow()));
|
|
||||||
connect(ui->actionRefresh, SIGNAL(triggered(bool)), this, SLOT(updateMainTab()));
|
connect(ui->actionRefresh, SIGNAL(triggered(bool)), this, SLOT(updateMainTab()));
|
||||||
connect(ui->actionRemove, SIGNAL(triggered(bool)), this, SLOT(mainTabRemoveProfile()));
|
connect(ui->actionRemove, SIGNAL(triggered(bool)), this, SLOT(mainTabRemoveProfile()));
|
||||||
connect(ui->actionRestart, SIGNAL(triggered(bool)), this, SLOT(mainTabRestartProfile()));
|
connect(ui->actionRestart, SIGNAL(triggered(bool)), this, SLOT(mainTabRestartProfile()));
|
||||||
@ -420,7 +432,6 @@ void MainWidget::createActions()
|
|||||||
connect(ui->actionStop_all, SIGNAL(triggered(bool)), this, SLOT(mainTabStopAllProfiles()));
|
connect(ui->actionStop_all, SIGNAL(triggered(bool)), this, SLOT(mainTabStopAllProfiles()));
|
||||||
connect(ui->actionSwitch, SIGNAL(triggered(bool)), this, SLOT(mainTabSwitchToProfile()));
|
connect(ui->actionSwitch, SIGNAL(triggered(bool)), this, SLOT(mainTabSwitchToProfile()));
|
||||||
// main tab events
|
// main tab events
|
||||||
connect(ui->pushButton_netctlAuto, SIGNAL(clicked(bool)), this, SLOT(showNetctlAutoWindow()));
|
|
||||||
connect(ui->tableWidget_main, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(mainTabStartProfile()));
|
connect(ui->tableWidget_main, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(mainTabStartProfile()));
|
||||||
connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),
|
connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),
|
||||||
this, SLOT(updateMenuMain()));
|
this, SLOT(updateMenuMain()));
|
||||||
@ -432,15 +443,13 @@ void MainWidget::createObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
// backend
|
|
||||||
netctlCommand = new Netctl(debug, configuration);
|
|
||||||
netctlProfile = new NetctlProfile(debug, configuration);
|
|
||||||
// windows
|
// windows
|
||||||
ui = new Ui::MainWidget;
|
ui = new Ui::MainWidget;
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->tableWidget_main->setColumnHidden(2, true);
|
ui->tableWidget_main->setColumnHidden(2, true);
|
||||||
ui->tableWidget_main->setColumnHidden(3, true);
|
ui->tableWidget_main->setColumnHidden(3, true);
|
||||||
netctlAutoWin = new NetctlAutoWindow(this, debug, configuration);
|
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);
|
||||||
@ -455,9 +464,6 @@ void MainWidget::deleteObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
if (netctlCommand != nullptr) delete netctlCommand;
|
|
||||||
if (netctlProfile != nullptr) delete netctlProfile;
|
|
||||||
|
|
||||||
if (netctlAutoWin != nullptr) delete netctlAutoWin;
|
if (netctlAutoWin != nullptr) delete netctlAutoWin;
|
||||||
if (ui != nullptr) delete ui;
|
if (ui != nullptr) delete ui;
|
||||||
}
|
}
|
||||||
|
@ -40,11 +40,13 @@ 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();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
bool mainTabSelectProfileSlot(const QString profile);
|
bool mainTabSelectProfileSlot(const QString profile);
|
||||||
void showNetctlAutoWindow();
|
|
||||||
void update();
|
void update();
|
||||||
|
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// update slots
|
// update slots
|
||||||
@ -64,10 +66,7 @@ private:
|
|||||||
// ui
|
// ui
|
||||||
MainWindow *mainWindow = nullptr;
|
MainWindow *mainWindow = nullptr;
|
||||||
Ui::MainWidget *ui = nullptr;
|
Ui::MainWidget *ui = nullptr;
|
||||||
NetctlAutoWindow *netctlAutoWin = nullptr;
|
|
||||||
// backend
|
// backend
|
||||||
Netctl *netctlCommand = nullptr;
|
|
||||||
NetctlProfile *netctlProfile = nullptr;
|
|
||||||
void createActions();
|
void createActions();
|
||||||
void createObjects();
|
void createObjects();
|
||||||
void deleteObjects();
|
void deleteObjects();
|
||||||
|
@ -12,12 +12,6 @@
|
|||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<property name="margin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="widget_netctlAuto" native="true">
|
|
||||||
<layout class="QHBoxLayout" name="layout_netctlAuto">
|
|
||||||
<property name="margin">
|
<property name="margin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
@ -34,16 +28,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton_netctlAuto">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTableWidget" name="tableWidget_main">
|
<widget class="QTableWidget" name="tableWidget_main">
|
||||||
<property name="contextMenuPolicy">
|
<property name="contextMenuPolicy">
|
||||||
@ -105,7 +89,6 @@
|
|||||||
<attribute name="toolBarBreak">
|
<attribute name="toolBarBreak">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</attribute>
|
</attribute>
|
||||||
<addaction name="actionNetctl_auto"/>
|
|
||||||
<addaction name="actionRefresh"/>
|
<addaction name="actionRefresh"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="actionStart"/>
|
<addaction name="actionStart"/>
|
||||||
@ -114,14 +97,6 @@
|
|||||||
<addaction name="actionEdit"/>
|
<addaction name="actionEdit"/>
|
||||||
<addaction name="actionRemove"/>
|
<addaction name="actionRemove"/>
|
||||||
</widget>
|
</widget>
|
||||||
<action name="actionNetctl_auto">
|
|
||||||
<property name="text">
|
|
||||||
<string>netctl-auto</string>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Show netctl-auto window</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
<action name="actionRefresh">
|
<action name="actionRefresh">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="view-refresh">
|
<iconset theme="view-refresh">
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QLibraryInfo>
|
#include <QLibraryInfo>
|
||||||
#include <QProcessEnvironment>
|
#include <QProcessEnvironment>
|
||||||
|
#include <QSettings>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
@ -38,6 +39,7 @@
|
|||||||
#include "dbusoperation.h"
|
#include "dbusoperation.h"
|
||||||
#include "errorwindow.h"
|
#include "errorwindow.h"
|
||||||
#include "mainwidget.h"
|
#include "mainwidget.h"
|
||||||
|
#include "netctlautowindow.h"
|
||||||
#include "netctlguiadaptor.h"
|
#include "netctlguiadaptor.h"
|
||||||
#include "newprofilewidget.h"
|
#include "newprofilewidget.h"
|
||||||
#include "passwdwidget.h"
|
#include "passwdwidget.h"
|
||||||
@ -71,6 +73,8 @@ MainWindow::MainWindow(QWidget *parent,
|
|||||||
if (debug) qDebug() << PDEBUG << ":" << "settings" << args[QString("settings")].toBool();
|
if (debug) qDebug() << PDEBUG << ":" << "settings" << args[QString("settings")].toBool();
|
||||||
if (debug) qDebug() << PDEBUG << ":" << "tab" << args[QString("tab")].toInt();
|
if (debug) qDebug() << PDEBUG << ":" << "tab" << args[QString("tab")].toInt();
|
||||||
|
|
||||||
|
ui = new Ui::MainWindow;
|
||||||
|
ui->setupUi(this);
|
||||||
updateConfiguration(args);
|
updateConfiguration(args);
|
||||||
|
|
||||||
// main actions
|
// main actions
|
||||||
@ -103,6 +107,15 @@ MainWindow::~MainWindow()
|
|||||||
if ((useHelper) && (configuration[QString("CLOSE_HELPER")] == QString("true")))
|
if ((useHelper) && (configuration[QString("CLOSE_HELPER")] == QString("true")))
|
||||||
forceStopHelper();
|
forceStopHelper();
|
||||||
deleteObjects();
|
deleteObjects();
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea MainWindow::getToolBarArea()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
return toolBarArea(ui->toolBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -267,10 +280,19 @@ void MainWindow::closeMainWindow()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
storeToolBars();
|
||||||
qApp->quit();
|
qApp->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::openProfileSlot(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
newProfileWidget->profileTabOpenProfileSlot(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::showAboutWindow()
|
void MainWindow::showAboutWindow()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -295,7 +317,7 @@ void MainWindow::showNetctlAutoWindow()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
mainWidget->showNetctlAutoWindow();
|
netctlAutoWin->showWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -303,160 +325,11 @@ void MainWindow::showSettingsWindow()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
storeToolBars();
|
||||||
settingsWin->showWindow();
|
settingsWin->showWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool MainWindow::enableProfileSlot(const QString profile)
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
|
||||||
|
|
||||||
bool current;
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> args;
|
|
||||||
args.append(profile);
|
|
||||||
sendRequestToCtrlWithArgs(QString("Enable"), args, debug);
|
|
||||||
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileEnabled"), args, debug);
|
|
||||||
if (responce.isEmpty())
|
|
||||||
current = netctlCommand->isProfileEnabled(profile);
|
|
||||||
else
|
|
||||||
current = responce[0].toBool();
|
|
||||||
} else {
|
|
||||||
netctlCommand->enableProfile(profile);
|
|
||||||
current = netctlCommand->isProfileEnabled(profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::openProfileSlot(const QString profile)
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
|
|
||||||
newProfileWidget->profileTabOpenProfileSlot(profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool MainWindow::restartProfileSlot(const QString profile)
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
|
||||||
|
|
||||||
bool current;
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> args;
|
|
||||||
args.append(profile);
|
|
||||||
sendRequestToCtrlWithArgs(QString("Restart"), args, debug);
|
|
||||||
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
|
||||||
if (responce.isEmpty())
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
else
|
|
||||||
current = responce[0].toBool();
|
|
||||||
} else {
|
|
||||||
netctlCommand->restartProfile(profile);
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool MainWindow::startProfileSlot(const QString profile)
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
|
||||||
|
|
||||||
bool current;
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> args;
|
|
||||||
args.append(profile);
|
|
||||||
QList<QVariant> responce = sendRequestToLib(QString("ActiveProfile"), debug);
|
|
||||||
QStringList currentProfile;
|
|
||||||
if (!responce.isEmpty()) currentProfile = responce[0].toString().split(QChar('|'));
|
|
||||||
if ((currentProfile.isEmpty()) || (currentProfile.contains(profile)))
|
|
||||||
sendRequestToCtrlWithArgs(QString("Start"), args, debug);
|
|
||||||
else
|
|
||||||
sendRequestToCtrlWithArgs(QString("SwitchTo"), args, debug);
|
|
||||||
responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
|
||||||
if (responce.isEmpty())
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
else
|
|
||||||
current = responce[0].toBool();
|
|
||||||
} else {
|
|
||||||
QStringList currentProfile = netctlCommand->getActiveProfile();
|
|
||||||
if ((currentProfile.isEmpty()) || (currentProfile.contains(profile)))
|
|
||||||
netctlCommand->startProfile(profile);
|
|
||||||
else
|
|
||||||
netctlCommand->switchToProfile(profile);
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool MainWindow::stopAllProfilesSlot()
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
|
|
||||||
if (useHelper)
|
|
||||||
sendRequestToCtrl(QString("StolAll"), debug);
|
|
||||||
else
|
|
||||||
netctlCommand->stopAllProfiles();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool MainWindow::switchToProfileSlot(const QString profile)
|
|
||||||
{
|
|
||||||
if (debug) qDebug() << PDEBUG;
|
|
||||||
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
|
|
||||||
|
|
||||||
bool netctlAutoStatus = false;
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> responce = sendRequestToLib(QString("isNetctlAutoActive"), debug);
|
|
||||||
if (!responce.isEmpty()) netctlAutoStatus = responce[0].toBool();
|
|
||||||
} else
|
|
||||||
netctlAutoStatus = netctlCommand->isNetctlAutoRunning();
|
|
||||||
|
|
||||||
bool current;
|
|
||||||
if (netctlAutoStatus) {
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> args;
|
|
||||||
args.append(profile);
|
|
||||||
sendRequestToCtrlWithArgs(QString("autoStart"), args, debug);
|
|
||||||
QList<QVariant> responce = sendRequestToLibWithArgs(QString("autoIsProfileActive"), args, debug);
|
|
||||||
if (responce.isEmpty())
|
|
||||||
current = netctlCommand->autoIsProfileActive(profile);
|
|
||||||
else
|
|
||||||
current = responce[0].toBool();
|
|
||||||
} else {
|
|
||||||
netctlCommand->autoStartProfile(profile);
|
|
||||||
current = netctlCommand->autoIsProfileActive(profile);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (useHelper) {
|
|
||||||
QList<QVariant> args;
|
|
||||||
args.append(profile);
|
|
||||||
sendRequestToCtrlWithArgs(QString("SwitchTo"), args, debug);
|
|
||||||
QList<QVariant> responce = sendRequestToLibWithArgs(QString("isProfileActive"), args, debug);
|
|
||||||
if (responce.isEmpty())
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
else
|
|
||||||
current = responce[0].toBool();
|
|
||||||
} else {
|
|
||||||
netctlCommand->switchToProfile(profile);
|
|
||||||
current = netctlCommand->isProfileActive(profile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::showApi()
|
void MainWindow::showApi()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -556,6 +429,24 @@ void MainWindow::showMessage(const bool status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::storeToolBars()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
QSettings settings(configPath, QSettings::IniFormat);
|
||||||
|
|
||||||
|
settings.beginGroup(QString("Toolbars"));
|
||||||
|
settings.setValue(QString("MAIN_TOOLBAR"), QString::number(getToolBarArea()));
|
||||||
|
settings.setValue(QString("NETCTL_TOOLBAR"), QString::number(mainWidget->getToolBarArea()));
|
||||||
|
settings.setValue(QString("NETCTLAUTO_TOOLBAR"), QString::number(netctlAutoWin->getToolBarArea()));
|
||||||
|
settings.setValue(QString("PROFILE_TOOLBAR"), QString::number(newProfileWidget->getToolBarArea()));
|
||||||
|
settings.setValue(QString("WIFI_TOOLBAR"), QString::number(wifiMenuWidget->getToolBarArea()));
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::updateConfiguration(const QMap<QString, QVariant> args)
|
void MainWindow::updateConfiguration(const QMap<QString, QVariant> args)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -627,6 +518,21 @@ void MainWindow::updateTabs(const int tab)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::updateToolBarState(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Toolbar area" << area;
|
||||||
|
|
||||||
|
removeToolBar(ui->toolBar);
|
||||||
|
if (area != Qt::NoToolBarArea) {
|
||||||
|
addToolBar(area, ui->toolBar);
|
||||||
|
ui->toolBar->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug() << findChildren<QToolBar *>().count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// private slots
|
// private slots
|
||||||
void MainWindow::setMainTab()
|
void MainWindow::setMainTab()
|
||||||
{
|
{
|
||||||
@ -681,6 +587,7 @@ void MainWindow::createActions()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
connect(ui->actionNetctl_auto, SIGNAL(triggered()), this, SLOT(showNetctlAutoWindow()));
|
||||||
connect(ui->actionNetctl, SIGNAL(triggered()), this, SLOT(setMainTab()));
|
connect(ui->actionNetctl, SIGNAL(triggered()), this, SLOT(setMainTab()));
|
||||||
connect(ui->actionProfiles, SIGNAL(triggered()), this, SLOT(setProfileTab()));
|
connect(ui->actionProfiles, SIGNAL(triggered()), this, SLOT(setProfileTab()));
|
||||||
connect(ui->actionWiFi_menu, SIGNAL(triggered()), this, SLOT(setWifiTab()));
|
connect(ui->actionWiFi_menu, SIGNAL(triggered()), this, SLOT(setWifiTab()));
|
||||||
@ -729,17 +636,20 @@ void MainWindow::createObjects()
|
|||||||
checkHelperStatus();
|
checkHelperStatus();
|
||||||
|
|
||||||
netctlCommand = new Netctl(debug, configuration);
|
netctlCommand = new Netctl(debug, configuration);
|
||||||
|
netctlProfile = new NetctlProfile(debug, configuration);
|
||||||
|
wpaCommand = new WpaSup(debug, configuration);
|
||||||
// frontend
|
// frontend
|
||||||
mainWidget = new MainWidget(this, configuration, debug);
|
mainWidget = new MainWidget(this, configuration, debug);
|
||||||
|
netctlAutoWin = mainWidget->netctlAutoWin;
|
||||||
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, debug);
|
||||||
// windows
|
// windows
|
||||||
ui = new Ui::MainWindow;
|
ui->retranslateUi(this);
|
||||||
ui->setupUi(this);
|
|
||||||
ui->layout_main->addWidget(mainWidget);
|
ui->layout_main->addWidget(mainWidget);
|
||||||
ui->layout_new->addWidget(newProfileWidget);
|
ui->layout_new->addWidget(newProfileWidget);
|
||||||
ui->layout_wifi->addWidget(wifiMenuWidget);
|
ui->layout_wifi->addWidget(wifiMenuWidget);
|
||||||
|
updateToolBarState(static_cast<Qt::ToolBarArea>(configuration[QString("MAIN_TOOLBAR")].toInt()));
|
||||||
aboutWin = new AboutWindow(this, debug);
|
aboutWin = new AboutWindow(this, debug);
|
||||||
settingsWin = new SettingsWindow(this, debug, configPath);
|
settingsWin = new SettingsWindow(this, debug, configPath);
|
||||||
}
|
}
|
||||||
@ -752,6 +662,8 @@ 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 (netctlProfile != nullptr) delete netctlProfile;
|
||||||
|
if (wpaCommand != nullptr) delete wpaCommand;
|
||||||
|
|
||||||
if (aboutWin != nullptr) delete aboutWin;
|
if (aboutWin != nullptr) delete aboutWin;
|
||||||
if (settingsWin != nullptr) delete settingsWin;
|
if (settingsWin != nullptr) delete settingsWin;
|
||||||
@ -759,7 +671,6 @@ void MainWindow::deleteObjects()
|
|||||||
if (mainWidget != nullptr) delete mainWidget;
|
if (mainWidget != nullptr) delete mainWidget;
|
||||||
if (newProfileWidget != nullptr) delete newProfileWidget;
|
if (newProfileWidget != nullptr) delete newProfileWidget;
|
||||||
if (wifiMenuWidget != nullptr) delete wifiMenuWidget;
|
if (wifiMenuWidget != nullptr) delete wifiMenuWidget;
|
||||||
if (ui != nullptr) delete ui;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
class AboutWindow;
|
class AboutWindow;
|
||||||
class MainWidget;
|
class MainWidget;
|
||||||
|
class NetctlAutoWindow;
|
||||||
class NewProfileWidget;
|
class NewProfileWidget;
|
||||||
class SettingsWindow;
|
class SettingsWindow;
|
||||||
class TrayIcon;
|
class TrayIcon;
|
||||||
@ -46,11 +47,16 @@ public:
|
|||||||
QTranslator *qtAppTranslator = 0,
|
QTranslator *qtAppTranslator = 0,
|
||||||
QTranslator *appTranslator = 0);
|
QTranslator *appTranslator = 0);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
Qt::ToolBarArea getToolBarArea();
|
||||||
QStringList printInformation();
|
QStringList printInformation();
|
||||||
QStringList printSettings();
|
QStringList printSettings();
|
||||||
QStringList printTrayInformation();
|
QStringList printTrayInformation();
|
||||||
bool isHelperActive();
|
bool isHelperActive();
|
||||||
bool isHelperServiceActive();
|
bool isHelperServiceActive();
|
||||||
|
// library interfaces
|
||||||
|
Netctl *netctlCommand = nullptr;
|
||||||
|
NetctlProfile *netctlProfile = nullptr;
|
||||||
|
WpaSup *wpaCommand = nullptr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
@ -58,17 +64,11 @@ protected:
|
|||||||
public slots:
|
public slots:
|
||||||
// actions from trayicon
|
// actions from trayicon
|
||||||
void closeMainWindow();
|
void closeMainWindow();
|
||||||
|
void openProfileSlot(const QString profile);
|
||||||
void showAboutWindow();
|
void showAboutWindow();
|
||||||
void showMainWindow();
|
void showMainWindow();
|
||||||
void showNetctlAutoWindow();
|
void showNetctlAutoWindow();
|
||||||
void showSettingsWindow();
|
void showSettingsWindow();
|
||||||
// trayicon control slots
|
|
||||||
bool enableProfileSlot(const QString profile);
|
|
||||||
void openProfileSlot(const QString profile);
|
|
||||||
bool startProfileSlot(const QString profile);
|
|
||||||
bool stopAllProfilesSlot();
|
|
||||||
bool switchToProfileSlot(const QString profile);
|
|
||||||
bool restartProfileSlot(const QString profile);
|
|
||||||
// open docs
|
// open docs
|
||||||
void showApi();
|
void showApi();
|
||||||
void showLibrary();
|
void showLibrary();
|
||||||
@ -81,8 +81,10 @@ public slots:
|
|||||||
void setDisabled(const bool disabled = true);
|
void setDisabled(const bool disabled = true);
|
||||||
void setTab(int tab);
|
void setTab(int tab);
|
||||||
void showMessage(const bool status);
|
void showMessage(const bool status);
|
||||||
|
void storeToolBars();
|
||||||
void updateConfiguration(const QMap<QString, QVariant> args = QMap<QString, QVariant>());
|
void updateConfiguration(const QMap<QString, QVariant> args = QMap<QString, QVariant>());
|
||||||
void updateTabs(const int tab);
|
void updateTabs(const int tab);
|
||||||
|
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void needToBeConfigured();
|
void needToBeConfigured();
|
||||||
@ -99,11 +101,11 @@ private:
|
|||||||
Ui::MainWindow *ui = nullptr;
|
Ui::MainWindow *ui = nullptr;
|
||||||
AboutWindow *aboutWin = nullptr;
|
AboutWindow *aboutWin = nullptr;
|
||||||
MainWidget *mainWidget = nullptr;
|
MainWidget *mainWidget = nullptr;
|
||||||
|
NetctlAutoWindow *netctlAutoWin = nullptr;
|
||||||
NewProfileWidget *newProfileWidget = nullptr;
|
NewProfileWidget *newProfileWidget = nullptr;
|
||||||
SettingsWindow *settingsWin = nullptr;
|
SettingsWindow *settingsWin = nullptr;
|
||||||
WiFiMenuWidget *wifiMenuWidget = nullptr;
|
WiFiMenuWidget *wifiMenuWidget = nullptr;
|
||||||
// backend
|
// backend
|
||||||
Netctl *netctlCommand = nullptr;
|
|
||||||
bool checkHelperStatus();
|
bool checkHelperStatus();
|
||||||
void createActions();
|
void createActions();
|
||||||
void createDBusSession();
|
void createDBusSession();
|
||||||
|
@ -88,6 +88,7 @@
|
|||||||
<attribute name="toolBarBreak">
|
<attribute name="toolBarBreak">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
<addaction name="actionNetctl_auto"/>
|
||||||
<addaction name="actionNetctl"/>
|
<addaction name="actionNetctl"/>
|
||||||
<addaction name="actionProfiles"/>
|
<addaction name="actionProfiles"/>
|
||||||
<addaction name="actionWiFi_menu"/>
|
<addaction name="actionWiFi_menu"/>
|
||||||
@ -213,6 +214,11 @@
|
|||||||
<string>Ctrl+W</string>
|
<string>Ctrl+W</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionNetctl_auto">
|
||||||
|
<property name="text">
|
||||||
|
<string>netctl-auto</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../resources/resources.qrc"/>
|
<include location="../../resources/resources.qrc"/>
|
||||||
|
@ -20,10 +20,10 @@
|
|||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include <netctlgui/netctlgui.h>
|
|
||||||
#include <pdebug/pdebug.h>
|
#include <pdebug/pdebug.h>
|
||||||
|
|
||||||
#include "dbusoperation.h"
|
#include "dbusoperation.h"
|
||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
|
||||||
NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const bool debugCmd, const QMap<QString, QString> settings)
|
NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const bool debugCmd, const QMap<QString, QString> settings)
|
||||||
@ -31,11 +31,12 @@ NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const bool debugCmd, const Q
|
|||||||
ui(new Ui::NetctlAutoWindow),
|
ui(new Ui::NetctlAutoWindow),
|
||||||
debug(debugCmd)
|
debug(debugCmd)
|
||||||
{
|
{
|
||||||
|
mainWindow = dynamic_cast<MainWindow *>(parent);
|
||||||
useHelper = (settings[QString("USE_HELPER")] == QString("true"));
|
useHelper = (settings[QString("USE_HELPER")] == QString("true"));
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->tableWidget->setColumnHidden(2, true);
|
ui->tableWidget->setColumnHidden(2, true);
|
||||||
ui->tableWidget->setColumnHidden(3, true);
|
ui->tableWidget->setColumnHidden(3, true);
|
||||||
netctlCommand = new Netctl(debug, settings);
|
updateToolBarState(static_cast<Qt::ToolBarArea>(settings[QString("NETCTLAUTO_TOOLBAR")].toInt()));
|
||||||
|
|
||||||
createActions();
|
createActions();
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Ready"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Ready"));
|
||||||
@ -46,12 +47,18 @@ NetctlAutoWindow::~NetctlAutoWindow()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
delete netctlCommand;
|
|
||||||
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea NetctlAutoWindow::getToolBarArea()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
return toolBarArea(ui->toolBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString NetctlAutoWindow::checkStatus(const bool statusBool, const bool nullFalse)
|
QString NetctlAutoWindow::checkStatus(const bool statusBool, const bool nullFalse)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -98,6 +105,19 @@ void NetctlAutoWindow::showWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NetctlAutoWindow::updateToolBarState(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Toolbar area" << area;
|
||||||
|
|
||||||
|
removeToolBar(ui->toolBar);
|
||||||
|
if (area != Qt::NoToolBarArea) {
|
||||||
|
addToolBar(area, ui->toolBar);
|
||||||
|
ui->toolBar->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void NetctlAutoWindow::netctlAutoContextualMenu(const QPoint &pos)
|
void NetctlAutoWindow::netctlAutoContextualMenu(const QPoint &pos)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -166,8 +186,8 @@ void NetctlAutoWindow::netctlAutoUpdateTable()
|
|||||||
}
|
}
|
||||||
running = responce[0].toBool();
|
running = responce[0].toBool();
|
||||||
} else {
|
} else {
|
||||||
enabled = netctlCommand->isNetctlAutoEnabled();
|
enabled = mainWindow->netctlCommand->isNetctlAutoEnabled();
|
||||||
running = netctlCommand->isNetctlAutoRunning();
|
running = mainWindow->netctlCommand->isNetctlAutoRunning();
|
||||||
}
|
}
|
||||||
ui->actionDisableAll->setEnabled(running);
|
ui->actionDisableAll->setEnabled(running);
|
||||||
ui->actionEnableAll->setEnabled(running);
|
ui->actionEnableAll->setEnabled(running);
|
||||||
@ -189,7 +209,7 @@ void NetctlAutoWindow::netctlAutoUpdateTable()
|
|||||||
if (useHelper)
|
if (useHelper)
|
||||||
profiles = parseOutputNetctl(sendRequestToLib(QString("VerboseProfileList"), debug));
|
profiles = parseOutputNetctl(sendRequestToLib(QString("VerboseProfileList"), debug));
|
||||||
else
|
else
|
||||||
profiles = netctlCommand->getProfileListFromNetctlAuto();
|
profiles = mainWindow->netctlCommand->getProfileListFromNetctlAuto();
|
||||||
|
|
||||||
ui->tableWidget->setSortingEnabled(false);
|
ui->tableWidget->setSortingEnabled(false);
|
||||||
ui->tableWidget->selectRow(-1);
|
ui->tableWidget->selectRow(-1);
|
||||||
@ -267,7 +287,7 @@ void NetctlAutoWindow::netctlAutoDisableAllProfiles()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoDisableAllProfiles();
|
status = mainWindow->netctlCommand->autoDisableAllProfiles();
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -296,7 +316,7 @@ void NetctlAutoWindow::netctlAutoEnableProfile()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoEnableProfile(profile);
|
status = mainWindow->netctlCommand->autoEnableProfile(profile);
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -321,7 +341,7 @@ void NetctlAutoWindow::netctlAutoEnableAllProfiles()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoEnableAllProfiles();
|
status = mainWindow->netctlCommand->autoEnableAllProfiles();
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -350,7 +370,7 @@ void NetctlAutoWindow::netctlAutoStartProfile()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoStartProfile(profile);
|
status = mainWindow->netctlCommand->autoStartProfile(profile);
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -374,7 +394,7 @@ void NetctlAutoWindow::netctlAutoEnableService()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoEnableService();
|
status = mainWindow->netctlCommand->autoEnableService();
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -398,7 +418,7 @@ void NetctlAutoWindow::netctlAutoRestartService()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoRestartService();
|
status = mainWindow->netctlCommand->autoRestartService();
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
@ -422,7 +442,7 @@ void NetctlAutoWindow::netctlAutoStartService()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlCommand->autoStartService();
|
status = mainWindow->netctlCommand->autoStartService();
|
||||||
if (status)
|
if (status)
|
||||||
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
ui->statusBar->showMessage(QApplication::translate("NetctlAutoWindow", "Done"));
|
||||||
else
|
else
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include <QTableWidgetItem>
|
#include <QTableWidgetItem>
|
||||||
|
|
||||||
|
|
||||||
class Netctl;
|
class MainWindow;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class NetctlAutoWindow;
|
class NetctlAutoWindow;
|
||||||
@ -37,9 +37,11 @@ public:
|
|||||||
const bool debugCmd = false,
|
const bool debugCmd = false,
|
||||||
const QMap<QString, QString> settings = QMap<QString, QString>());
|
const QMap<QString, QString> settings = QMap<QString, QString>());
|
||||||
~NetctlAutoWindow();
|
~NetctlAutoWindow();
|
||||||
|
Qt::ToolBarArea getToolBarArea();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void showWindow();
|
void showWindow();
|
||||||
|
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// table
|
// table
|
||||||
@ -59,8 +61,8 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
// ui
|
// ui
|
||||||
Ui::NetctlAutoWindow *ui = nullptr;
|
Ui::NetctlAutoWindow *ui = nullptr;
|
||||||
|
MainWindow *mainWindow = nullptr;
|
||||||
// backend
|
// backend
|
||||||
Netctl *netctlCommand = nullptr;
|
|
||||||
QString checkStatus(const bool statusBool, const bool nullFalse = false);
|
QString checkStatus(const bool statusBool, const bool nullFalse = false);
|
||||||
void createActions();
|
void createActions();
|
||||||
bool debug = false;
|
bool debug = false;
|
||||||
|
@ -62,6 +62,14 @@ NewProfileWidget::~NewProfileWidget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea NewProfileWidget::getToolBarArea()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
return toolBarArea(ui->toolBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void NewProfileWidget::profileTabOpenProfileSlot(const QString profile)
|
void NewProfileWidget::profileTabOpenProfileSlot(const QString profile)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -80,6 +88,19 @@ void NewProfileWidget::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewProfileWidget::updateToolBarState(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Toolbar area" << area;
|
||||||
|
|
||||||
|
removeToolBar(ui->toolBar);
|
||||||
|
if (area != Qt::NoToolBarArea) {
|
||||||
|
addToolBar(area, ui->toolBar);
|
||||||
|
ui->toolBar->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void NewProfileWidget::updateMenuProfile()
|
void NewProfileWidget::updateMenuProfile()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -132,7 +153,7 @@ void NewProfileWidget::profileTabClear()
|
|||||||
if (useHelper)
|
if (useHelper)
|
||||||
profiles = parseOutputNetctl(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
|
profiles = parseOutputNetctl(sendRequestToLib(QString("netctlVerboseProfileList"), debug));
|
||||||
else
|
else
|
||||||
profiles = netctlCommand->getProfileList();
|
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);
|
||||||
@ -322,8 +343,8 @@ void NewProfileWidget::profileTabCreateProfile()
|
|||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
QString profileTempName = netctlProfile->createProfile(profile, settings);
|
QString profileTempName = mainWindow->netctlProfile->createProfile(profile, settings);
|
||||||
status = netctlProfile->copyProfile(profileTempName);
|
status = mainWindow->netctlProfile->copyProfile(profileTempName);
|
||||||
}
|
}
|
||||||
mainWindow->showMessage(status);
|
mainWindow->showMessage(status);
|
||||||
|
|
||||||
@ -355,7 +376,7 @@ void NewProfileWidget::profileTabLoadProfile()
|
|||||||
settings[key] = value;
|
settings[key] = value;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
settings = netctlProfile->getSettingsFromProfile(profile);
|
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);
|
||||||
|
|
||||||
@ -414,7 +435,7 @@ void NewProfileWidget::profileTabRemoveProfile()
|
|||||||
}
|
}
|
||||||
status = responce[0].toBool();
|
status = responce[0].toBool();
|
||||||
} else
|
} else
|
||||||
status = netctlProfile->removeProfile(profile);
|
status = mainWindow->netctlProfile->removeProfile(profile);
|
||||||
mainWindow->showMessage(status);
|
mainWindow->showMessage(status);
|
||||||
|
|
||||||
updateProfileTab();
|
updateProfileTab();
|
||||||
@ -442,12 +463,10 @@ void NewProfileWidget::createObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
// backend
|
|
||||||
netctlCommand = new Netctl(debug, configuration);
|
|
||||||
netctlProfile = new NetctlProfile(debug, configuration);
|
|
||||||
// windows
|
// windows
|
||||||
ui = new Ui::NewProfileWidget;
|
ui = new Ui::NewProfileWidget;
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
updateToolBarState(static_cast<Qt::ToolBarArea>(configuration[QString("PROFILE_TOOLBAR")].toInt()));
|
||||||
// profile widgets
|
// profile widgets
|
||||||
generalWid = new GeneralWidget(this, configuration);
|
generalWid = new GeneralWidget(this, configuration);
|
||||||
ui->scrollAreaWidgetContents->layout()->addWidget(generalWid);
|
ui->scrollAreaWidgetContents->layout()->addWidget(generalWid);
|
||||||
@ -478,9 +497,6 @@ void NewProfileWidget::deleteObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
if (netctlCommand != nullptr) delete netctlCommand;
|
|
||||||
if (netctlProfile != nullptr) delete netctlProfile;
|
|
||||||
|
|
||||||
if (bridgeWid != nullptr) delete bridgeWid;
|
if (bridgeWid != nullptr) delete bridgeWid;
|
||||||
if (ethernetWid != nullptr) delete ethernetWid;
|
if (ethernetWid != nullptr) delete ethernetWid;
|
||||||
if (generalWid != nullptr) delete generalWid;
|
if (generalWid != nullptr) delete generalWid;
|
||||||
|
@ -49,10 +49,12 @@ 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);
|
||||||
~NewProfileWidget();
|
~NewProfileWidget();
|
||||||
|
Qt::ToolBarArea getToolBarArea();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void profileTabOpenProfileSlot(const QString profile);
|
void profileTabOpenProfileSlot(const QString profile);
|
||||||
void update();
|
void update();
|
||||||
|
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// update slots
|
// update slots
|
||||||
@ -81,8 +83,6 @@ private:
|
|||||||
VlanWidget *vlanWid = nullptr;
|
VlanWidget *vlanWid = nullptr;
|
||||||
WirelessWidget *wirelessWid = nullptr;
|
WirelessWidget *wirelessWid = nullptr;
|
||||||
// backend
|
// backend
|
||||||
Netctl *netctlCommand = nullptr;
|
|
||||||
NetctlProfile *netctlProfile = nullptr;
|
|
||||||
void createActions();
|
void createActions();
|
||||||
void createObjects();
|
void createObjects();
|
||||||
void deleteObjects();
|
void deleteObjects();
|
||||||
|
@ -76,6 +76,48 @@ void SettingsWindow::createActions()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SettingsWindow::indexByToolBarPosition(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Area" << area;
|
||||||
|
|
||||||
|
switch (area) {
|
||||||
|
case Qt::LeftToolBarArea:
|
||||||
|
return 0;
|
||||||
|
case Qt::RightToolBarArea:
|
||||||
|
return 1;
|
||||||
|
case Qt::TopToolBarArea:
|
||||||
|
return 2;
|
||||||
|
case Qt::BottomToolBarArea:
|
||||||
|
return 3;
|
||||||
|
case Qt::NoToolBarArea:
|
||||||
|
default:
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea SettingsWindow::indexToToolBarPosition(const int index)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Index" << index;
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
return Qt::LeftToolBarArea;
|
||||||
|
case 1:
|
||||||
|
return Qt::RightToolBarArea;
|
||||||
|
case 2:
|
||||||
|
return Qt::TopToolBarArea;
|
||||||
|
case 3:
|
||||||
|
return Qt::BottomToolBarArea;
|
||||||
|
case 4:
|
||||||
|
default:
|
||||||
|
return Qt::NoToolBarArea;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ESC press event
|
// ESC press event
|
||||||
void SettingsWindow::keyPressEvent(QKeyEvent *pressedKey)
|
void SettingsWindow::keyPressEvent(QKeyEvent *pressedKey)
|
||||||
{
|
{
|
||||||
@ -169,6 +211,14 @@ void SettingsWindow::saveSettings()
|
|||||||
settings.setValue(QString("PREFERED_IFACE"), config[QString("PREFERED_IFACE")]);
|
settings.setValue(QString("PREFERED_IFACE"), config[QString("PREFERED_IFACE")]);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.beginGroup(QString("Toolbars"));
|
||||||
|
settings.setValue(QString("MAIN_TOOLBAR"), config[QString("MAIN_TOOLBAR")]);
|
||||||
|
settings.setValue(QString("NETCTL_TOOLBAR"), config[QString("NETCTL_TOOLBAR")]);
|
||||||
|
settings.setValue(QString("NETCTLAUTO_TOOLBAR"), config[QString("NETCTLAUTO_TOOLBAR")]);
|
||||||
|
settings.setValue(QString("PROFILE_TOOLBAR"), config[QString("PROFILE_TOOLBAR")]);
|
||||||
|
settings.setValue(QString("WIFI_TOOLBAR"), config[QString("WIFI_TOOLBAR")]);
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
settings.sync();
|
settings.sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,12 +343,16 @@ QMap<QString, QString> SettingsWindow::readSettings()
|
|||||||
config[QString("HELPER_SERVICE")] = ui->lineEdit_helperService->text();
|
config[QString("HELPER_SERVICE")] = ui->lineEdit_helperService->text();
|
||||||
config[QString("IFACE_DIR")] = ui->lineEdit_interfacesDir->text();
|
config[QString("IFACE_DIR")] = ui->lineEdit_interfacesDir->text();
|
||||||
config[QString("LANGUAGE")] = ui->comboBox_language->currentText();
|
config[QString("LANGUAGE")] = ui->comboBox_language->currentText();
|
||||||
|
config[QString("MAIN_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_mainToolbar->currentIndex()));
|
||||||
config[QString("NETCTL_PATH")] = ui->lineEdit_netctlPath->text();
|
config[QString("NETCTL_PATH")] = ui->lineEdit_netctlPath->text();
|
||||||
|
config[QString("NETCTL_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_netctlToolbar->currentIndex()));
|
||||||
config[QString("NETCTLAUTO_PATH")] = ui->lineEdit_netctlAutoPath->text();
|
config[QString("NETCTLAUTO_PATH")] = ui->lineEdit_netctlAutoPath->text();
|
||||||
config[QString("NETCTLAUTO_SERVICE")] = ui->lineEdit_netctlAutoService->text();
|
config[QString("NETCTLAUTO_SERVICE")] = ui->lineEdit_netctlAutoService->text();
|
||||||
|
config[QString("NETCTLAUTO_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_netctlAutoToolbar->currentIndex()));
|
||||||
config[QString("PID_FILE")] = ui->lineEdit_pid->text();
|
config[QString("PID_FILE")] = ui->lineEdit_pid->text();
|
||||||
config[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text();
|
config[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text();
|
||||||
config[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text();
|
config[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text();
|
||||||
|
config[QString("PROFILE_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_profilesToolbar->currentIndex()));
|
||||||
config[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text();
|
config[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text();
|
||||||
if (ui->checkBox_components->checkState() == 2)
|
if (ui->checkBox_components->checkState() == 2)
|
||||||
config[QString("SKIPCOMPONENTS")] = QString("true");
|
config[QString("SKIPCOMPONENTS")] = QString("true");
|
||||||
@ -318,6 +372,7 @@ QMap<QString, QString> SettingsWindow::readSettings()
|
|||||||
config[QString("USE_HELPER")] = QString("true");
|
config[QString("USE_HELPER")] = QString("true");
|
||||||
else
|
else
|
||||||
config[QString("USE_HELPER")] = QString("false");
|
config[QString("USE_HELPER")] = QString("false");
|
||||||
|
config[QString("WIFI_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_wifiToolbar->currentIndex()));
|
||||||
config[QString("WPACLI_PATH")] = ui->lineEdit_wpaCliPath->text();
|
config[QString("WPACLI_PATH")] = ui->lineEdit_wpaCliPath->text();
|
||||||
config[QString("WPASUP_PATH")] = ui->lineEdit_wpaSupPath->text();
|
config[QString("WPASUP_PATH")] = ui->lineEdit_wpaSupPath->text();
|
||||||
config[QString("WPA_DRIVERS")] = ui->lineEdit_wpaSupDrivers->text();
|
config[QString("WPA_DRIVERS")] = ui->lineEdit_wpaSupDrivers->text();
|
||||||
@ -352,11 +407,19 @@ void SettingsWindow::setSettings(const QMap<QString, QString> config)
|
|||||||
ui->lineEdit_interfacesDir->setText(config[QString("IFACE_DIR")]);
|
ui->lineEdit_interfacesDir->setText(config[QString("IFACE_DIR")]);
|
||||||
int index = ui->comboBox_language->findText(config[QString("LANGUAGE")]);
|
int index = ui->comboBox_language->findText(config[QString("LANGUAGE")]);
|
||||||
ui->comboBox_language->setCurrentIndex(index);
|
ui->comboBox_language->setCurrentIndex(index);
|
||||||
|
index = indexByToolBarPosition(static_cast<Qt::ToolBarArea>(config[QString("MAIN_TOOLBAR")].toInt()));
|
||||||
|
ui->comboBox_mainToolbar->setCurrentIndex(index);
|
||||||
ui->lineEdit_netctlPath->setText(config[QString("NETCTL_PATH")]);
|
ui->lineEdit_netctlPath->setText(config[QString("NETCTL_PATH")]);
|
||||||
|
index = indexByToolBarPosition(static_cast<Qt::ToolBarArea>(config[QString("NETCTL_TOOLBAR")].toInt()));
|
||||||
|
ui->comboBox_netctlToolbar->setCurrentIndex(index);
|
||||||
ui->lineEdit_netctlAutoPath->setText(config[QString("NETCTLAUTO_PATH")]);
|
ui->lineEdit_netctlAutoPath->setText(config[QString("NETCTLAUTO_PATH")]);
|
||||||
ui->lineEdit_netctlAutoService->setText(config[QString("NETCTLAUTO_SERVICE")]);
|
ui->lineEdit_netctlAutoService->setText(config[QString("NETCTLAUTO_SERVICE")]);
|
||||||
|
index = indexByToolBarPosition(static_cast<Qt::ToolBarArea>(config[QString("NETCTLAUTO_TOOLBAR")].toInt()));
|
||||||
|
ui->comboBox_netctlAutoToolbar->setCurrentIndex(index);
|
||||||
ui->lineEdit_pid->setText(config[QString("PID_FILE")]);
|
ui->lineEdit_pid->setText(config[QString("PID_FILE")]);
|
||||||
ui->lineEdit_interface->setText(config[QString("PREFERED_IFACE")]);
|
ui->lineEdit_interface->setText(config[QString("PREFERED_IFACE")]);
|
||||||
|
index = indexByToolBarPosition(static_cast<Qt::ToolBarArea>(config[QString("PROFILE_TOOLBAR")].toInt()));
|
||||||
|
ui->comboBox_profilesToolbar->setCurrentIndex(index);
|
||||||
ui->lineEdit_profilePath->setText(config[QString("PROFILE_DIR")]);
|
ui->lineEdit_profilePath->setText(config[QString("PROFILE_DIR")]);
|
||||||
ui->lineEdit_rfkill->setText(config[QString("RFKILL_DIR")]);
|
ui->lineEdit_rfkill->setText(config[QString("RFKILL_DIR")]);
|
||||||
if (config[QString("SKIPCOMPONENTS")] == QString("true"))
|
if (config[QString("SKIPCOMPONENTS")] == QString("true"))
|
||||||
@ -377,6 +440,8 @@ void SettingsWindow::setSettings(const QMap<QString, QString> config)
|
|||||||
ui->checkBox_useHelper->setCheckState(Qt::Checked);
|
ui->checkBox_useHelper->setCheckState(Qt::Checked);
|
||||||
else
|
else
|
||||||
ui->checkBox_useHelper->setCheckState(Qt::Unchecked);
|
ui->checkBox_useHelper->setCheckState(Qt::Unchecked);
|
||||||
|
index = indexByToolBarPosition(static_cast<Qt::ToolBarArea>(config[QString("WIFI_TOOLBAR")].toInt()));
|
||||||
|
ui->comboBox_wifiToolbar->setCurrentIndex(index);
|
||||||
ui->lineEdit_wpaCliPath->setText(config[QString("WPACLI_PATH")]);
|
ui->lineEdit_wpaCliPath->setText(config[QString("WPACLI_PATH")]);
|
||||||
ui->lineEdit_wpaSupPath->setText(config[QString("WPASUP_PATH")]);
|
ui->lineEdit_wpaSupPath->setText(config[QString("WPASUP_PATH")]);
|
||||||
ui->lineEdit_wpaSupDrivers->setText(config[QString("WPA_DRIVERS")]);
|
ui->lineEdit_wpaSupDrivers->setText(config[QString("WPA_DRIVERS")]);
|
||||||
@ -447,6 +512,14 @@ QMap<QString, QString> SettingsWindow::getSettings(QString fileName)
|
|||||||
config[QString("PREFERED_IFACE")] = settings.value(QString("PREFERED_IFACE"), QString("")).toString();
|
config[QString("PREFERED_IFACE")] = settings.value(QString("PREFERED_IFACE"), QString("")).toString();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.beginGroup(QString("Toolbars"));
|
||||||
|
config[QString("MAIN_TOOLBAR")] = settings.value(QString("MAIN_TOOLBAR"), Qt::TopToolBarArea).toString();
|
||||||
|
config[QString("NETCTL_TOOLBAR")] = settings.value(QString("NETCTL_TOOLBAR"), Qt::TopToolBarArea).toString();
|
||||||
|
config[QString("NETCTLAUTO_TOOLBAR")] = settings.value(QString("NETCTLAUTO_TOOLBAR"), Qt::TopToolBarArea).toString();
|
||||||
|
config[QString("PROFILE_TOOLBAR")] = settings.value(QString("PROFILE_TOOLBAR"), Qt::TopToolBarArea).toString();
|
||||||
|
config[QString("WIFI_TOOLBAR")] = settings.value(QString("WIFI_TOOLBAR"), Qt::TopToolBarArea).toString();
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
for (int i=0; i<config.keys().count(); i++)
|
for (int i=0; i<config.keys().count(); i++)
|
||||||
if (debug) qDebug() << PDEBUG << ":" << QString("%1=%2").arg(config.keys()[i]).arg(config[config.keys()[i]]);
|
if (debug) qDebug() << PDEBUG << ":" << QString("%1=%2").arg(config.keys()[i]).arg(config[config.keys()[i]]);
|
||||||
|
|
||||||
|
@ -62,6 +62,8 @@ private:
|
|||||||
QString file;
|
QString file;
|
||||||
Ui::SettingsWindow *ui;
|
Ui::SettingsWindow *ui;
|
||||||
void createActions();
|
void createActions();
|
||||||
|
int indexByToolBarPosition(const Qt::ToolBarArea area);
|
||||||
|
Qt::ToolBarArea indexToToolBarPosition(const int index);
|
||||||
// ESC pressed event
|
// ESC pressed event
|
||||||
void keyPressEvent(QKeyEvent *pressedKey);
|
void keyPressEvent(QKeyEvent *pressedKey);
|
||||||
QMap<QString, QString> readSettings();
|
QMap<QString, QString> readSettings();
|
||||||
|
@ -37,12 +37,12 @@
|
|||||||
<height>32</height>
|
<height>32</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="indentation">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rootIsDecorated">
|
<property name="rootIsDecorated">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="uniformRowHeights">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="itemsExpandable">
|
<property name="itemsExpandable">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
@ -114,6 +114,14 @@
|
|||||||
</iconset>
|
</iconset>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Toolbars</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="configure-toolbars"/>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -314,7 +322,7 @@
|
|||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
<widget class="QWidget" name="scrollAreaWidgetContents_helper">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -612,8 +620,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>542</width>
|
<width>436</width>
|
||||||
<height>330</height>
|
<height>173</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
@ -868,8 +876,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>542</width>
|
<width>436</width>
|
||||||
<height>330</height>
|
<height>45</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||||
@ -953,8 +961,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>542</width>
|
<width>239</width>
|
||||||
<height>330</height>
|
<height>194</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||||
@ -1371,6 +1379,317 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="page_toolbars">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_14">
|
||||||
|
<item>
|
||||||
|
<widget class="QScrollArea" name="scrollArea_toolbars">
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="scrollAreaWidgetContents_toolbars">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>542</width>
|
||||||
|
<height>330</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_15">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="layout_mainToolbar">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_mainToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Main toolbar</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_mainToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>2</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Top</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bottom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disabled</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="layout_netctlToolbar">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_netctlToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>netctl toolbar</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_netctlToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>2</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Top</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bottom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disabled</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="layout_netctlAutoToolbar">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_netctlAutoToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>netctl-auto toolbar</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_netctlAutoToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>2</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Top</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bottom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disabled</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="layout_profilesToolbar">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_profilesToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Profiles toolbar</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_profilesToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>2</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Top</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bottom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disabled</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="layout_wifiToolbar">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_wifiToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>WiFi toolbar</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_wifiToolbar">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>2</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Top</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bottom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disabled</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="spacer_toolbars">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>150</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
@ -51,6 +51,14 @@ WiFiMenuWidget::~WiFiMenuWidget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Qt::ToolBarArea WiFiMenuWidget::getToolBarArea()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
return toolBarArea(ui->toolBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void WiFiMenuWidget::update()
|
void WiFiMenuWidget::update()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -60,6 +68,19 @@ void WiFiMenuWidget::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WiFiMenuWidget::updateToolBarState(const Qt::ToolBarArea area)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Toolbar area" << area;
|
||||||
|
|
||||||
|
removeToolBar(ui->toolBar);
|
||||||
|
if (area != Qt::NoToolBarArea) {
|
||||||
|
addToolBar(area, ui->toolBar);
|
||||||
|
ui->toolBar->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool WiFiMenuWidget::wifiTabSelectEssidSlot(const QString essid)
|
bool WiFiMenuWidget::wifiTabSelectEssidSlot(const QString essid)
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -82,11 +103,11 @@ void WiFiMenuWidget::connectToUnknownEssid(const QString passwd)
|
|||||||
if (useHelper) {
|
if (useHelper) {
|
||||||
QList<QVariant> responce = sendRequestToLib(QString("WirelessInterfaces"), debug);
|
QList<QVariant> responce = sendRequestToLib(QString("WirelessInterfaces"), debug);
|
||||||
if (responce.isEmpty())
|
if (responce.isEmpty())
|
||||||
interfaces = netctlCommand->getWirelessInterfaceList();
|
interfaces = mainWindow->netctlCommand->getWirelessInterfaceList();
|
||||||
else
|
else
|
||||||
interfaces = responce[0].toStringList();
|
interfaces = responce[0].toStringList();
|
||||||
} else
|
} else
|
||||||
interfaces = netctlCommand->getWirelessInterfaceList();
|
interfaces = mainWindow->netctlCommand->getWirelessInterfaceList();
|
||||||
if (interfaces.isEmpty()) return;
|
if (interfaces.isEmpty()) return;
|
||||||
|
|
||||||
QMap<QString, QString> settings;
|
QMap<QString, QString> settings;
|
||||||
@ -118,8 +139,8 @@ void WiFiMenuWidget::connectToUnknownEssid(const QString passwd)
|
|||||||
args.append(settingsList);
|
args.append(settingsList);
|
||||||
sendRequestToCtrlWithArgs(QString("Create"), args, debug);
|
sendRequestToCtrlWithArgs(QString("Create"), args, debug);
|
||||||
} else {
|
} else {
|
||||||
QString profileTempName = netctlProfile->createProfile(profile, settings);
|
QString profileTempName = mainWindow->netctlProfile->createProfile(profile, settings);
|
||||||
netctlProfile->copyProfile(profileTempName);
|
mainWindow->netctlProfile->copyProfile(profileTempName);
|
||||||
}
|
}
|
||||||
QString message;
|
QString message;
|
||||||
if (mainWindow->startProfileSlot(profile)) {
|
if (mainWindow->startProfileSlot(profile)) {
|
||||||
@ -143,7 +164,7 @@ void WiFiMenuWidget::connectToUnknownEssid(const QString passwd)
|
|||||||
args.append(profile);
|
args.append(profile);
|
||||||
sendRequestToCtrlWithArgs(QString("Remove"), args, debug);
|
sendRequestToCtrlWithArgs(QString("Remove"), args, debug);
|
||||||
} else
|
} else
|
||||||
netctlProfile->removeProfile(profile);
|
mainWindow->netctlProfile->removeProfile(profile);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,6 +199,32 @@ void WiFiMenuWidget::updateMenuWifi()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WiFiMenuWidget::updateText()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
wifiTabSetEnabled(checkExternalApps(QString("wpasup-only"), configuration, debug));
|
||||||
|
if (!checkExternalApps(QString("wpasup"), configuration, debug)) {
|
||||||
|
ErrorWindow::showWindow(1, QString(PDEBUG), debug);
|
||||||
|
emit(mainWindow->needToBeConfigured());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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("");
|
||||||
|
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"));
|
||||||
|
|
||||||
|
ui->label_wifi->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void WiFiMenuWidget::updateWifiTab()
|
void WiFiMenuWidget::updateWifiTab()
|
||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
@ -193,7 +240,7 @@ void WiFiMenuWidget::updateWifiTab()
|
|||||||
if (useHelper)
|
if (useHelper)
|
||||||
scanResults = parseOutputWifi(sendRequestToCtrl(QString("VerboseWiFi"), debug));
|
scanResults = parseOutputWifi(sendRequestToCtrl(QString("VerboseWiFi"), debug));
|
||||||
else
|
else
|
||||||
scanResults = wpaCommand->scanWifi();
|
scanResults = mainWindow->wpaCommand->scanWifi();
|
||||||
|
|
||||||
ui->tableWidget_wifi->setSortingEnabled(false);
|
ui->tableWidget_wifi->setSortingEnabled(false);
|
||||||
ui->tableWidget_wifi->selectRow(-1);
|
ui->tableWidget_wifi->selectRow(-1);
|
||||||
@ -288,6 +335,7 @@ void WiFiMenuWidget::updateWifiTab()
|
|||||||
ui->tableWidget_wifi->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
|
ui->tableWidget_wifi->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
updateText();
|
||||||
mainWindow->setDisabled(false);
|
mainWindow->setDisabled(false);
|
||||||
mainWindow->showMessage(true);
|
mainWindow->showMessage(true);
|
||||||
}
|
}
|
||||||
@ -333,7 +381,7 @@ void WiFiMenuWidget::wifiTabSetEnabled(const bool state)
|
|||||||
if (debug) qDebug() << PDEBUG << ":" << "State" << state;
|
if (debug) qDebug() << PDEBUG << ":" << "State" << state;
|
||||||
|
|
||||||
ui->tableWidget_wifi->setHidden(!state);
|
ui->tableWidget_wifi->setHidden(!state);
|
||||||
ui->label_wifi->setHidden(state);
|
if (!state) ui->label_wifi->setText(QApplication::translate("WiFiMenuWidget", "Please install 'wpa_supplicant' before using it"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -379,7 +427,7 @@ void WiFiMenuWidget::wifiTabStart()
|
|||||||
}
|
}
|
||||||
profileName = responce[0].toString();
|
profileName = responce[0].toString();
|
||||||
} else
|
} else
|
||||||
profileName = wpaCommand->existentProfile(profile);
|
profileName = mainWindow->wpaCommand->existentProfile(profile);
|
||||||
mainWindow->showMessage(mainWindow->startProfileSlot(profileName));
|
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();
|
||||||
@ -421,15 +469,12 @@ void WiFiMenuWidget::createObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
// backend
|
|
||||||
netctlCommand = new Netctl(debug, configuration);
|
|
||||||
netctlProfile = new NetctlProfile(debug, configuration);
|
|
||||||
wpaCommand = new WpaSup(debug, configuration);
|
|
||||||
// windows
|
// windows
|
||||||
ui = new Ui::WiFiMenuWidget;
|
ui = new Ui::WiFiMenuWidget;
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->tableWidget_wifi->setColumnHidden(5, true);
|
ui->tableWidget_wifi->setColumnHidden(5, true);
|
||||||
ui->tableWidget_wifi->setColumnHidden(6, true);
|
ui->tableWidget_wifi->setColumnHidden(6, true);
|
||||||
|
updateToolBarState(static_cast<Qt::ToolBarArea>(configuration[QString("WIFI_TOOLBAR")].toInt()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -437,9 +482,5 @@ void WiFiMenuWidget::deleteObjects()
|
|||||||
{
|
{
|
||||||
if (debug) qDebug() << PDEBUG;
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
if (netctlCommand != nullptr) delete netctlCommand;
|
|
||||||
if (netctlProfile != nullptr) delete netctlProfile;
|
|
||||||
if (wpaCommand != nullptr) delete wpaCommand;
|
|
||||||
|
|
||||||
if (ui != nullptr) delete ui;
|
if (ui != nullptr) delete ui;
|
||||||
}
|
}
|
||||||
|
@ -40,9 +40,11 @@ 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);
|
||||||
~WiFiMenuWidget();
|
~WiFiMenuWidget();
|
||||||
|
Qt::ToolBarArea getToolBarArea();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void update();
|
void update();
|
||||||
|
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
|
||||||
bool wifiTabSelectEssidSlot(const QString essid);
|
bool wifiTabSelectEssidSlot(const QString essid);
|
||||||
// wifi tab slots
|
// wifi tab slots
|
||||||
void connectToUnknownEssid(const QString passwd);
|
void connectToUnknownEssid(const QString passwd);
|
||||||
@ -51,6 +53,7 @@ public slots:
|
|||||||
private slots:
|
private slots:
|
||||||
// update slots
|
// update slots
|
||||||
void updateMenuWifi();
|
void updateMenuWifi();
|
||||||
|
void updateText();
|
||||||
void updateWifiTab();
|
void updateWifiTab();
|
||||||
// wifi tab slots
|
// wifi tab slots
|
||||||
void wifiTabContextualMenu(const QPoint &pos);
|
void wifiTabContextualMenu(const QPoint &pos);
|
||||||
@ -63,9 +66,6 @@ private:
|
|||||||
Ui::WiFiMenuWidget *ui = nullptr;
|
Ui::WiFiMenuWidget *ui = nullptr;
|
||||||
PasswdWidget *passwdWid = nullptr;
|
PasswdWidget *passwdWid = nullptr;
|
||||||
// backend
|
// backend
|
||||||
Netctl *netctlCommand = nullptr;
|
|
||||||
NetctlProfile *netctlProfile = nullptr;
|
|
||||||
WpaSup *wpaCommand = nullptr;
|
|
||||||
void createActions();
|
void createActions();
|
||||||
void createObjects();
|
void createObjects();
|
||||||
void deleteObjects();
|
void deleteObjects();
|
||||||
|
@ -271,7 +271,9 @@ QString ControlAdaptor::CurrentWiFi()
|
|||||||
|
|
||||||
QStringList ControlAdaptor::VerboseWiFi()
|
QStringList ControlAdaptor::VerboseWiFi()
|
||||||
{
|
{
|
||||||
QList<netctlWifiInfo> wifiPoints = wpaCommand->scanWifi();
|
QList<netctlWifiInfo> wifiPoints;
|
||||||
|
wifiPoints.append(wpaCommand->current());
|
||||||
|
wifiPoints.append(wpaCommand->scanWifi());
|
||||||
QStringList info;
|
QStringList info;
|
||||||
for (int i=0; i<wifiPoints.count(); i++) {
|
for (int i=0; i<wifiPoints.count(); i++) {
|
||||||
QStringList point;
|
QStringList point;
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#ifndef NETCTLGUI_H
|
#ifndef NETCTLGUI_H
|
||||||
#define NETCTLGUI_H
|
#define NETCTLGUI_H
|
||||||
|
|
||||||
|
#include "netctlinterface.h"
|
||||||
#include "netctlinteract.h"
|
#include "netctlinteract.h"
|
||||||
#include "netctlprofile.h"
|
#include "netctlprofile.h"
|
||||||
#include "wpasupinteract.h"
|
#include "wpasupinteract.h"
|
||||||
|
178
sources/netctlgui/include/netctlgui/netctlinterface.h
Normal file
178
sources/netctlgui/include/netctlgui/netctlinterface.h
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* 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/ *
|
||||||
|
***************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file netctlinterface.h
|
||||||
|
* Header of netctlgui library
|
||||||
|
* @author Evgeniy Alekseev
|
||||||
|
* @copyright GPLv3
|
||||||
|
* @bug https://github.com/arcan1s/netctl-gui/issues
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NETCTLINTERFACE_H
|
||||||
|
#define NETCTLINTERFACE_H
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
#include <QMap>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
|
||||||
|
class Netctl;
|
||||||
|
class NetctlProfile;
|
||||||
|
class WpaSup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum InterfaceAnswer
|
||||||
|
* @brief standard interface answer enumeration
|
||||||
|
* @var InterfaceAnswer::False
|
||||||
|
* false
|
||||||
|
* @var InterfaceAnswer::True
|
||||||
|
* true
|
||||||
|
* @var InterfaceAnswer::Error
|
||||||
|
* an error occurs
|
||||||
|
*/
|
||||||
|
enum InterfaceAnswer {
|
||||||
|
False = 0,
|
||||||
|
True,
|
||||||
|
Error
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The NetctlInterface class provides complex methods to get access to library
|
||||||
|
*/
|
||||||
|
class NetctlInterface : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief NetctlInterface class constructor
|
||||||
|
* @param debugCmd show debug messages
|
||||||
|
* @param settings default settings. See required keys in other modules
|
||||||
|
*/
|
||||||
|
explicit NetctlInterface(const bool debugCmd = false,
|
||||||
|
const QMap<QString, QString> settings = QMap<QString, QString>());
|
||||||
|
/**
|
||||||
|
* @brief NetctlInterface class destructor
|
||||||
|
*/
|
||||||
|
~NetctlInterface();
|
||||||
|
/**
|
||||||
|
* @brief method which enables or disables selected profile and returns its status
|
||||||
|
* @remark netctl-auto only
|
||||||
|
* @param profile profile name
|
||||||
|
* @return InterfaceAnswer::False if profile is disabled
|
||||||
|
* @return InterfaceAnswer::True if profile is enabled
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer autoEnableProfile(const QString profile);
|
||||||
|
/**
|
||||||
|
* @brief method which creates and copies profile
|
||||||
|
* @remark netctl independ
|
||||||
|
* @param profile profile name
|
||||||
|
* @param settings profile settings
|
||||||
|
* @return InterfaceAnswer::False if profile cannot be created
|
||||||
|
* @return InterfaceAnswer::True if profile is created
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer createProfile(const QString profile, const QMap<QString, QString> settings);
|
||||||
|
/**
|
||||||
|
* @brief method which connects to ESSID
|
||||||
|
* @remark netctl independ
|
||||||
|
* @param essid point ESSID
|
||||||
|
* @param settings profile settings (Security, ESSID, Key and Hidden are required)
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer connectToEssid(const QString essid, QMap<QString, QString> settings);
|
||||||
|
/**
|
||||||
|
* @brief method which connects to existent profile by ESSID
|
||||||
|
* @remark netctl independ
|
||||||
|
* @param essid point ESSID
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer connectToKnownEssid(const QString essid);
|
||||||
|
/**
|
||||||
|
* @brief method which creates wireless profile and connects to it
|
||||||
|
* @remark netctl independ
|
||||||
|
* @param essid point ESSID
|
||||||
|
* @param settings profile settings (Security, ESSID, Key and Hidden are required)
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer connectToUnknownEssid(const QString essid, QMap<QString, QString> settings);
|
||||||
|
/**
|
||||||
|
* @brief method which enables or disables selected profile and returns its status
|
||||||
|
* @remark netctl only
|
||||||
|
* @param profile profile name
|
||||||
|
* @return InterfaceAnswer::False if profile is disabled
|
||||||
|
* @return InterfaceAnswer::True if profile is enabled
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer enableProfile(const QString profile);
|
||||||
|
/**
|
||||||
|
* @brief method which restarts selected profile and returns its status
|
||||||
|
* @remark netctl only
|
||||||
|
* @param profile profile name
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer restartProfile(const QString profile);
|
||||||
|
/**
|
||||||
|
* @brief method which starts/stops or switchs to selected profile and returns its status
|
||||||
|
* @remark netctl only
|
||||||
|
* @param profile profile name
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer startProfile(const QString profile);
|
||||||
|
/**
|
||||||
|
* @brief method which switchs to selected profile and returns its status
|
||||||
|
* @remark both netctl and netctl-auto
|
||||||
|
* @param profile profile name
|
||||||
|
* @return InterfaceAnswer::False if profile is inactive
|
||||||
|
* @return InterfaceAnswer::True if profile is active
|
||||||
|
* @return InterfaceAnswer::Error if an error occurs
|
||||||
|
*/
|
||||||
|
InterfaceAnswer switchToProfile(const QString profile);
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* @brief Netctl class
|
||||||
|
*/
|
||||||
|
Netctl *netctlCommand = nullptr;
|
||||||
|
/**
|
||||||
|
* @brief NetctlProfile class
|
||||||
|
*/
|
||||||
|
NetctlProfile *netctlProfile = nullptr;
|
||||||
|
/**
|
||||||
|
* @brief WpaSup class
|
||||||
|
*/
|
||||||
|
WpaSup *wpaCommand = nullptr;
|
||||||
|
/**
|
||||||
|
* @brief show debug messages
|
||||||
|
*/
|
||||||
|
bool debug = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* NETCTLINTERFACE_H */
|
@ -79,7 +79,7 @@ typedef struct
|
|||||||
QStringList macs;
|
QStringList macs;
|
||||||
QString name;
|
QString name;
|
||||||
QString security;
|
QString security;
|
||||||
int signal;
|
int signal = 0;
|
||||||
PointType type = PointType::None;
|
PointType type = PointType::None;
|
||||||
bool active = false;
|
bool active = false;
|
||||||
bool exists = false;
|
bool exists = false;
|
||||||
@ -137,7 +137,7 @@ public:
|
|||||||
* @return false if profile does not exist
|
* @return false if profile does not exist
|
||||||
* @return true if profile exists
|
* @return true if profile exists
|
||||||
*/
|
*/
|
||||||
bool isProfileExists(const QString essid);
|
Q_DECL_DEPRECATED bool isProfileExists(const QString essid);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// functions
|
// functions
|
||||||
|
250
sources/netctlgui/src/netctlinterface.cpp
Normal file
250
sources/netctlgui/src/netctlinterface.cpp
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* 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/ *
|
||||||
|
***************************************************************************/
|
||||||
|
/**
|
||||||
|
* @file netctlinterface.cpp
|
||||||
|
* Source code of netctlgui library
|
||||||
|
* @author Evgeniy Alekseev
|
||||||
|
* @copyright GPLv3
|
||||||
|
* @bug https://github.com/arcan1s/netctl-gui/issues
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include <netctlgui/netctlgui.h>
|
||||||
|
#include <pdebug/pdebug.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class NetctlInterface
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @fn NetctlInterface
|
||||||
|
*/
|
||||||
|
NetctlInterface::NetctlInterface(const bool debugCmd, const QMap<QString, QString> settings)
|
||||||
|
: debug(debugCmd)
|
||||||
|
{
|
||||||
|
netctlCommand = new Netctl(debug, settings);
|
||||||
|
netctlProfile = new NetctlProfile(debug, settings);
|
||||||
|
wpaCommand = new WpaSup(debug, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn ~NetctlInterface
|
||||||
|
*/
|
||||||
|
NetctlInterface::~NetctlInterface()
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
|
||||||
|
if (netctlCommand != nullptr) delete netctlCommand;
|
||||||
|
if (netctlProfile != nullptr) delete netctlProfile;
|
||||||
|
if (wpaCommand != nullptr) delete wpaCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn autoEnableProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::autoEnableProfile(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
netctlCommand->autoEnableProfile(profile);
|
||||||
|
|
||||||
|
return static_cast<InterfaceAnswer>(netctlCommand->autoIsProfileEnabled(profile));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn connectToEssid
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::connectToEssid(const QString essid, QMap<QString, QString> settings)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
if (wpaCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wpaCommand->existentProfile(essid).isEmpty())
|
||||||
|
return connectToUnknownEssid(essid, settings);
|
||||||
|
else
|
||||||
|
return connectToKnownEssid(essid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn connectToKnownEssid
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::connectToKnownEssid(const QString essid)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
if (wpaCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString profile = wpaCommand->existentProfile(essid);
|
||||||
|
if (profile.isEmpty()) return InterfaceAnswer::Error;
|
||||||
|
|
||||||
|
return startProfile(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn connectToUnknownEssid
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::connectToUnknownEssid(const QString essid, QMap<QString, QString> settings)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
if (wpaCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
// append settings
|
||||||
|
QStringList interfaces = netctlCommand->getWirelessInterfaceList();
|
||||||
|
if (interfaces.isEmpty()) return InterfaceAnswer::Error;
|
||||||
|
settings[QString("Description")] = QString("'Automatically generated profile by Netctl GUI'");
|
||||||
|
settings[QString("Interface")] = interfaces[0];
|
||||||
|
settings[QString("Connection")] = QString("wireless");
|
||||||
|
settings[QString("ESSID")] = QString("'%1'").arg(essid);
|
||||||
|
settings[QString("IP")] = QString("dhcp");
|
||||||
|
|
||||||
|
// save profile
|
||||||
|
QString profile = QString("netctl-gui-%1").arg(essid);
|
||||||
|
profile.remove(QChar('"')).remove(QChar('\''));
|
||||||
|
if (createProfile(profile, settings) != InterfaceAnswer::True) return InterfaceAnswer::Error;
|
||||||
|
|
||||||
|
// start it
|
||||||
|
return startProfile(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn createProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::createProfile(const QString profile, const QMap<QString, QString> settings)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString profileTempName = netctlProfile->createProfile(profile, settings);
|
||||||
|
if (profileTempName.isEmpty()) return InterfaceAnswer::Error;
|
||||||
|
|
||||||
|
return static_cast<InterfaceAnswer>(netctlProfile->copyProfile(profileTempName));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn enableProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::enableProfile(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
netctlCommand->enableProfile(profile);
|
||||||
|
|
||||||
|
return static_cast<InterfaceAnswer>(netctlCommand->isProfileEnabled(profile));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn restartProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::restartProfile(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
netctlCommand->restartProfile(profile);
|
||||||
|
|
||||||
|
return static_cast<InterfaceAnswer>(netctlCommand->isProfileActive(profile));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn startProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::startProfile(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList current = netctlCommand->getActiveProfile();
|
||||||
|
if ((current.isEmpty()) || (current.contains(profile)))
|
||||||
|
netctlCommand->startProfile(profile);
|
||||||
|
else
|
||||||
|
netctlCommand->switchToProfile(profile);
|
||||||
|
|
||||||
|
return static_cast<InterfaceAnswer>(netctlCommand->isProfileActive(profile));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn switchToProfile
|
||||||
|
*/
|
||||||
|
InterfaceAnswer NetctlInterface::switchToProfile(const QString profile)
|
||||||
|
{
|
||||||
|
if (debug) qDebug() << PDEBUG;
|
||||||
|
if (netctlCommand == nullptr) {
|
||||||
|
if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
|
||||||
|
return InterfaceAnswer::Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
InterfaceAnswer status = InterfaceAnswer::Error;
|
||||||
|
bool netctlAutoStatus = netctlCommand->isNetctlAutoRunning();
|
||||||
|
if (netctlAutoStatus) {
|
||||||
|
netctlCommand->autoStartProfile(profile);
|
||||||
|
status = static_cast<InterfaceAnswer>(netctlCommand->autoIsProfileActive(profile));
|
||||||
|
} else {
|
||||||
|
netctlCommand->switchToProfile(profile);
|
||||||
|
status = static_cast<InterfaceAnswer>(netctlCommand->isProfileActive(profile));
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
@ -96,9 +96,11 @@ QString WpaSup::existentProfile(const QString essid)
|
|||||||
|
|
||||||
QString profileFile = QString("");
|
QString profileFile = QString("");
|
||||||
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
||||||
for (int i=0; i<profileList.count(); i++)
|
for (int i=0; i<profileList.count(); i++) {
|
||||||
if (essid == netctlProfile->getValueFromProfile(profileList[i].name, QString("ESSID")))
|
if (essid != profileList[i].essid) continue;
|
||||||
profileFile = profileList[i].name;
|
profileFile = profileList[i].name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return profileFile;
|
return profileFile;
|
||||||
}
|
}
|
||||||
@ -213,8 +215,8 @@ bool WpaSup::isProfileActive(const QString essid)
|
|||||||
|
|
||||||
QString profileFile;
|
QString profileFile;
|
||||||
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
||||||
for (int i=0; i<profileList.count(); i++)
|
for (int i=0; i<profileList.count(); i++) {
|
||||||
if (essid == netctlProfile->getValueFromProfile(profileList[i].name, QString("ESSID"))) {
|
if (essid != profileList[i].essid) continue;
|
||||||
profileFile = profileList[i].name;
|
profileFile = profileList[i].name;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -241,8 +243,8 @@ bool WpaSup::isProfileExists(const QString essid)
|
|||||||
|
|
||||||
bool exists = false;
|
bool exists = false;
|
||||||
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
QList<netctlProfileInfo> profileList = netctlCommand->getProfileList();
|
||||||
for (int i=0; i<profileList.count(); i++)
|
for (int i=0; i<profileList.count(); i++) {
|
||||||
if (essid == netctlProfile->getValueFromProfile(profileList[i].name, QString("ESSID"))) {
|
if (essid != profileList[i].essid) continue;
|
||||||
exists = true;
|
exists = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -272,8 +274,10 @@ netctlWifiInfo WpaSup::current()
|
|||||||
|
|
||||||
netctlWifiInfo current;
|
netctlWifiInfo current;
|
||||||
if (!QFile(_pidFile).exists()) return current;
|
if (!QFile(_pidFile).exists()) return current;
|
||||||
|
QString rawText = getWpaCliOutput(QString("status"));
|
||||||
|
if (!rawText.contains(QString("wpa_state=COMPLETED\n"))) return current;
|
||||||
|
|
||||||
QStringList rawList = getWpaCliOutput(QString("status")).split(QChar('\n'), QString::SkipEmptyParts);
|
QStringList rawList = rawText.split(QChar('\n'), QString::SkipEmptyParts);
|
||||||
for (int i=0; i<rawList.count(); i++) {
|
for (int i=0; i<rawList.count(); i++) {
|
||||||
QStringList line = rawList[i].split(QChar('='));
|
QStringList line = rawList[i].split(QChar('='));
|
||||||
if (line.count() != 2) continue;
|
if (line.count() != 2) continue;
|
||||||
@ -300,16 +304,10 @@ netctlWifiInfo WpaSup::current()
|
|||||||
current.security = security;
|
current.security = security;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current.signal = 0;
|
|
||||||
|
|
||||||
// status
|
// status
|
||||||
current.active = true;
|
current.active = true;
|
||||||
QList<netctlProfileInfo> profiles = netctlCommand->getProfileList();
|
current.exists = (!existentProfile(current.name).isEmpty());
|
||||||
for (int j=0; j<profiles.count(); j++) {
|
|
||||||
if (current.name != profiles[j].essid) continue;
|
|
||||||
current.exists = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user