mirror of
https://github.com/arcan1s/netctl-gui.git
synced 2025-07-05 10:05:46 +00:00
intermediate commit
This commit is contained in:
@ -189,9 +189,9 @@ void GeneralWidget::setSettings(const QMap<QString, QString> settings)
|
||||
if (generalSettings[QString("Interface")].remove(QString("'")) == ui->comboBox_interface->itemText(i))
|
||||
ui->comboBox_interface->setCurrentIndex(i);
|
||||
if (generalSettings.contains(QString("BindsToInterfaces")))
|
||||
ui->listWidget_bindto->addItems(generalSettings[QString("BindsToInterfaces")].split(QString(" ")));
|
||||
ui->listWidget_bindto->addItems(generalSettings[QString("BindsToInterfaces")].split(QChar(' ')));
|
||||
if (generalSettings.contains(QString("After")))
|
||||
ui->listWidget_after->addItems(generalSettings[QString("After")].split(QString(" ")));
|
||||
ui->listWidget_after->addItems(generalSettings[QString("After")].split(QChar(' ')));
|
||||
if (generalSettings.contains(QString("ExecUpPost")))
|
||||
ui->lineEdit_execUpPost->setText(generalSettings[QString("ExecUpPost")].remove(QString("'")));
|
||||
if (generalSettings.contains(QString("ExecDownPre")))
|
||||
|
@ -170,7 +170,7 @@ void IpWidget::keyPressEvent(QKeyEvent *pressedKey)
|
||||
|
||||
QString IpWidget::getIp(const QString rawIp)
|
||||
{
|
||||
QStringList ip = rawIp.split(QString("."));
|
||||
QStringList ip = rawIp.split(QChar('.'));
|
||||
|
||||
// fix empty fields
|
||||
if (ip[0].isEmpty())
|
||||
@ -233,8 +233,8 @@ QString IpWidget::getPrefix6(const QString rawPrefix)
|
||||
|
||||
void IpWidget::addIp()
|
||||
{
|
||||
QString ip = getIp(ui->lineEdit_ipAddress->text().remove(" ").split(QString("/"))[0]);
|
||||
QString prefix = getPrefix(ui->lineEdit_ipAddress->text().remove(" ").split(QString("/"))[1]);
|
||||
QString ip = getIp(ui->lineEdit_ipAddress->text().remove(" ").split(QChar('/'))[0]);
|
||||
QString prefix = getPrefix(ui->lineEdit_ipAddress->text().remove(" ").split(QChar('/'))[1]);
|
||||
|
||||
ui->listWidget_ipAddress->addItem(ip + QString("/") + prefix);
|
||||
ui->lineEdit_ipAddress->clear();
|
||||
@ -243,8 +243,8 @@ void IpWidget::addIp()
|
||||
|
||||
void IpWidget::addIpRoutes()
|
||||
{
|
||||
QString ip = getIp(ui->lineEdit_ipRoutes->text().remove(" ").split(QString("/"))[0]);
|
||||
QString prefix = getPrefix(ui->lineEdit_ipRoutes->text().remove(" ").split(QString("/"))[1]);
|
||||
QString ip = getIp(ui->lineEdit_ipRoutes->text().remove(" ").split(QChar('/'))[0]);
|
||||
QString prefix = getPrefix(ui->lineEdit_ipRoutes->text().remove(" ").split(QChar('/'))[1]);
|
||||
QString ipVia = getIp(ui->lineEdit_ipRoutes2->text().remove(" "));
|
||||
|
||||
ui->listWidget_ipRoutes->addItem(ip + QString("/") + prefix + QString(" via ") + ipVia);
|
||||
@ -255,8 +255,8 @@ void IpWidget::addIpRoutes()
|
||||
|
||||
void IpWidget::addIp6()
|
||||
{
|
||||
QString ip = getIp6(ui->lineEdit_ipAddress6->text().remove(" ").split(QString("/"))[0]);
|
||||
QString prefix = getPrefix6(ui->lineEdit_ipAddress6->text().remove(" ").split(QString("/"))[1]);
|
||||
QString ip = getIp6(ui->lineEdit_ipAddress6->text().remove(" ").split(QChar('/'))[0]);
|
||||
QString prefix = getPrefix6(ui->lineEdit_ipAddress6->text().remove(" ").split(QChar('/'))[1]);
|
||||
|
||||
ui->listWidget_ipAddress6->addItem(ip + QString("/") + prefix);
|
||||
ui->lineEdit_ipAddress6->clear();
|
||||
@ -265,8 +265,8 @@ void IpWidget::addIp6()
|
||||
|
||||
void IpWidget::addIpRoutes6()
|
||||
{
|
||||
QString ip = getIp6(ui->lineEdit_ipRoutes6->text().remove(" ").split(QString("/"))[0]);
|
||||
QString prefix = getPrefix6(ui->lineEdit_ipRoutes6->text().remove(" ").split(QString("/"))[1]);
|
||||
QString ip = getIp6(ui->lineEdit_ipRoutes6->text().remove(" ").split(QChar('/'))[0]);
|
||||
QString prefix = getPrefix6(ui->lineEdit_ipRoutes6->text().remove(" ").split(QChar('/'))[1]);
|
||||
QString ipVia = getIp6(ui->lineEdit_ipRoutes62->text().remove(" "));
|
||||
|
||||
ui->listWidget_ipRoutes6->addItem(ip + QString("/") + prefix + QString(" via ") + ipVia);
|
||||
@ -502,11 +502,11 @@ void IpWidget::setSettings(const QMap<QString, QString> settings)
|
||||
}
|
||||
}
|
||||
if (ipSettings.contains(QString("Address")))
|
||||
ui->listWidget_ipAddress->addItems(ipSettings[QString("Address")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_ipAddress->addItems(ipSettings[QString("Address")].remove(QString("'")).split(QChar(' ')));
|
||||
if (ipSettings.contains(QString("Gateway")))
|
||||
ui->lineEdit_gateway->setText(ipSettings[QString("Gateway")].remove(QString("'")));
|
||||
if (ipSettings.contains(QString("Routes")))
|
||||
ui->listWidget_ipRoutes->addItems(ipSettings[QString("Routes")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_ipRoutes->addItems(ipSettings[QString("Routes")].remove(QString("'")).split(QChar(' ')));
|
||||
if (ipSettings.contains(QString("IP6"))) {
|
||||
if (ipSettings[QString("IP6")].remove(QString("'")) == QString("no"))
|
||||
ui->checkBox_ip6->setCheckState(Qt::Unchecked);
|
||||
@ -518,11 +518,11 @@ void IpWidget::setSettings(const QMap<QString, QString> settings)
|
||||
}
|
||||
}
|
||||
if (ipSettings.contains(QString("Address6")))
|
||||
ui->listWidget_ipAddress6->addItems(ipSettings[QString("Address6")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_ipAddress6->addItems(ipSettings[QString("Address6")].remove(QString("'")).split(QChar(' ')));
|
||||
if (ipSettings.contains(QString("Gateway6")))
|
||||
ui->lineEdit_gateway6->setText(ipSettings[QString("Gateway6")].remove(QString("'")));
|
||||
if (ipSettings.contains(QString("Routes6")))
|
||||
ui->listWidget_ipRoutes6->addItems(ipSettings[QString("Routes6")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_ipRoutes6->addItems(ipSettings[QString("Routes6")].remove(QString("'")).split(QChar(' ')));
|
||||
if (ipSettings.contains(QString("IPCustom"))) {
|
||||
QStringList custom;
|
||||
if (ipSettings[QString("IPCustom")].contains(QString("\n")))
|
||||
@ -552,13 +552,13 @@ void IpWidget::setSettings(const QMap<QString, QString> settings)
|
||||
if (ipSettings[QString("DHCPReleaseOnStop")].remove(QString("'")) == QString("yes"))
|
||||
ui->checkBox_dhcp->setCheckState(Qt::Checked);
|
||||
if (ipSettings.contains(QString("DNS")))
|
||||
ui->listWidget_dns->addItems(ipSettings[QString("DNS")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_dns->addItems(ipSettings[QString("DNS")].remove(QString("'")).split(QChar(' ')));
|
||||
if (ipSettings.contains(QString("DNSDomain")))
|
||||
ui->lineEdit_dnsDomain->setText(ipSettings[QString("DNSDomain")].remove(QString("'")));
|
||||
if (ipSettings.contains(QString("DNSSearch")))
|
||||
ui->lineEdit_dnsSearch->setText(ipSettings[QString("DNSSearch")].remove(QString("'")));
|
||||
if (ipSettings.contains(QString("DNSOptions")))
|
||||
ui->listWidget_dnsOptions->addItems(ipSettings[QString("DNSOptions")].remove(QString("'")).split(QString(" ")));
|
||||
ui->listWidget_dnsOptions->addItems(ipSettings[QString("DNSOptions")].remove(QString("'")).split(QChar(' ')));
|
||||
|
||||
ipEnable(ui->checkBox_ip->checkState());
|
||||
changeIpMode(ui->comboBox_ip->currentText());
|
||||
|
@ -63,7 +63,7 @@ QString Language::defineLanguageFromFile(const QString configPath)
|
||||
fileStr = QString(configFile.readLine());
|
||||
if (fileStr[0] != '#') {
|
||||
if (fileStr.contains(QString("LANGUAGE=")))
|
||||
language = fileStr.split(QString("="))[1]
|
||||
language = fileStr.split(QChar('='))[1]
|
||||
.remove(QString(" "))
|
||||
.trimmed();
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ QMap<QString, QString> MacvlanWidget::getSettings()
|
||||
return macvlanSettings;
|
||||
|
||||
macvlanSettings[QString("Mode")] = ui->comboBox_mode->currentText();
|
||||
if (!ui->lineEdit_mac->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_mac->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
macvlanSettings[QString("MACAddress")] = ui->lineEdit_mac->text();
|
||||
|
||||
return macvlanSettings;
|
||||
|
@ -134,11 +134,15 @@ bool MainWindow::checkExternalApps(const QString apps = QString("all"))
|
||||
commandLine.append(configuration[QString("SUDO_PATH")]);
|
||||
if ((apps == QString("netctl")) || (apps == QString("all"))) {
|
||||
commandLine.append(configuration[QString("NETCTL_PATH")]);
|
||||
commandLine.append(configuration[QString("NETCTLAUTO_PATH")]);
|
||||
}
|
||||
if ((apps == QString("wpasup")) || (apps == QString("all"))) {
|
||||
commandLine.append(configuration[QString("WPACLI_PATH")]);
|
||||
commandLine.append(configuration[QString("WPASUP_PATH")]);
|
||||
}
|
||||
if ((apps == QString("wpaact")) || (apps == QString("all"))) {
|
||||
commandLine.append(configuration[QString("WPAACTIOND_PATH")]);
|
||||
}
|
||||
QProcess command;
|
||||
if (debug) qDebug() << "[MainWindow]" << "[checkExternalApps]" << ":" << "Run cmd" << commandLine.join(QString(" "));
|
||||
command.start(commandLine.join(QString(" ")));
|
||||
@ -171,6 +175,7 @@ void MainWindow::createActions()
|
||||
|
||||
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int)));
|
||||
connect(ui->actionNetctlAuto, SIGNAL(triggered(bool)), netctlAutoWin, SLOT(showWindow()));
|
||||
ui->actionNetctlAuto->setVisible(checkExternalApps(QString("all")));
|
||||
connect(ui->actionSettings, SIGNAL(triggered(bool)), settingsWin, SLOT(showWindow()));
|
||||
connect(ui->actionQuit, SIGNAL(triggered(bool)), this, SLOT(close()));
|
||||
|
||||
@ -319,8 +324,8 @@ void MainWindow::updateMainTab()
|
||||
ui->tableWidget_main->setRowCount(profiles.count());
|
||||
|
||||
// create header
|
||||
ui->tableWidget_main->setHorizontalHeaderLabels(QApplication::translate("MainWindow", "Name Description Status")
|
||||
.split(QString(" ")));
|
||||
ui->tableWidget_main->setHorizontalHeaderLabels(QApplication::translate("MainWindow", "Name==Description==Status")
|
||||
.split(QString("==")));
|
||||
// create items
|
||||
for (int i=0; i<profiles.count(); i++) {
|
||||
// name
|
||||
@ -433,8 +438,8 @@ void MainWindow::updateWifiTab()
|
||||
ui->tableWidget_wifi->setRowCount(scanResults.count());
|
||||
|
||||
// create header
|
||||
ui->tableWidget_wifi->setHorizontalHeaderLabels(QApplication::translate("MainWindow", "Name Status Signal Security")
|
||||
.split(QString(" ")));
|
||||
ui->tableWidget_wifi->setHorizontalHeaderLabels(QApplication::translate("MainWindow", "Name==Status==Signal==Security")
|
||||
.split(QString("==")));
|
||||
// create items
|
||||
for (int i=0; i<scanResults.count(); i++) {
|
||||
// name
|
||||
|
@ -30,6 +30,8 @@ NetctlAutoWindow::NetctlAutoWindow(QWidget *parent, const bool debugCmd, const Q
|
||||
{
|
||||
ui->setupUi(this);
|
||||
netctlCommand = new Netctl(debug, settings);
|
||||
|
||||
createActions();
|
||||
}
|
||||
|
||||
|
||||
@ -38,6 +40,7 @@ NetctlAutoWindow::~NetctlAutoWindow()
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[~NetctlAutoWindow]";
|
||||
|
||||
delete ui;
|
||||
delete netctlCommand;
|
||||
}
|
||||
|
||||
|
||||
@ -45,29 +48,21 @@ void NetctlAutoWindow::createActions()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[createActions]";
|
||||
|
||||
// connect(ui->comboBox_language, SIGNAL(currentIndexChanged(int)), ui->label_info, SLOT(show()));
|
||||
// connect(ui->buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked(bool)), this, SLOT(close()));
|
||||
// connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked(bool)), this, SLOT(setDefault()));
|
||||
// connect(ui->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked(bool)), this, SLOT(saveSettings()));
|
||||
// connect(ui->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked(bool)), this, SLOT(close()));
|
||||
// // buttons
|
||||
// connect(ui->pushButton_interfaceDir, SIGNAL(clicked(bool)), SLOT(selectIfaceDir()));
|
||||
// connect(ui->pushButton_netctlPath, SIGNAL(clicked(bool)), SLOT(selectNetctlPath()));
|
||||
// connect(ui->pushButton_profilePath, SIGNAL(clicked(bool)), SLOT(selectProfileDir()));
|
||||
// connect(ui->pushButton_rfkill, SIGNAL(clicked(bool)), SLOT(selectRfkillDir()));
|
||||
// connect(ui->pushButton_sudo, SIGNAL(clicked(bool)), SLOT(selectSudoPath()));
|
||||
// connect(ui->pushButton_wpaCliPath, SIGNAL(clicked(bool)), SLOT(selectWpaCliPath()));
|
||||
// connect(ui->pushButton_wpaSupPath, SIGNAL(clicked(bool)), SLOT(selectWpaSupPath()));
|
||||
}
|
||||
// menu actions
|
||||
connect(ui->actionClose, SIGNAL(triggered(bool)), this, SLOT(close()));
|
||||
connect(ui->actionDisableAll, SIGNAL(triggered(bool)), this, SLOT(netctlAutoDisableAllProfiles()));
|
||||
connect(ui->actionEnable, SIGNAL(triggered(bool)), this, SLOT(netctlAutoEnableProfile()));
|
||||
connect(ui->actionEnableAll, SIGNAL(triggered(bool)), this, SLOT(netctlAutoEnableAllProfiles()));
|
||||
connect(ui->actionSwitch, SIGNAL(triggered(bool)), this, SLOT(netctlAutoStartProfile()));
|
||||
|
||||
// table actions
|
||||
connect(ui->tableWidget, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(startProfile()));
|
||||
connect(ui->tableWidget, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(netctlAutoRefreshButtons(QTableWidgetItem *, QTableWidgetItem *)));
|
||||
connect(ui->tableWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(netctlAutoContextualMenu(QPoint)));
|
||||
|
||||
// ESC press event
|
||||
void NetctlAutoWindow::keyPressEvent(QKeyEvent *pressedKey)
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[keyPressEvent]";
|
||||
|
||||
if (pressedKey->key() == Qt::Key_Escape)
|
||||
close();
|
||||
// buttons
|
||||
connect(ui->pushButton_enable, SIGNAL(clicked(bool)), SLOT(netctlAutoEnableProfile()));
|
||||
connect(ui->pushButton_switch, SIGNAL(clicked(bool)), SLOT(netctlAutoStartProfile()));
|
||||
}
|
||||
|
||||
|
||||
@ -75,37 +70,189 @@ void NetctlAutoWindow::showWindow()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[showWindow]";
|
||||
|
||||
clear();
|
||||
appendActiveProfiles();
|
||||
appendAvailableProfiles();
|
||||
netctlAutoAppendTable();
|
||||
show();
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::appendActiveProfiles()
|
||||
void NetctlAutoWindow::netctlAutoAppendTable()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[appendActiveProfiles]";
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[appendTable]";
|
||||
|
||||
QList<QStringList> profiles = netctlCommand->getProfileListFromNetctlAuto();
|
||||
|
||||
ui->tableWidget->setSortingEnabled(false);
|
||||
ui->tableWidget->selectRow(-1);
|
||||
ui->tableWidget->sortByColumn(0, Qt::AscendingOrder);
|
||||
ui->tableWidget->clear();
|
||||
ui->tableWidget->setRowCount(profiles.count());
|
||||
|
||||
// create header
|
||||
ui->tableWidget->setHorizontalHeaderLabels(QApplication::translate("NetctlAutoWindow", "Profile==Description==Active==Disabled")
|
||||
.split(QString("==")));
|
||||
// create items
|
||||
for (int i=0; i<profiles.count(); i++) {
|
||||
// name
|
||||
ui->tableWidget->setItem(i, 0, new QTableWidgetItem(profiles[i][0]));
|
||||
ui->tableWidget->item(i, 0)->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
// description
|
||||
ui->tableWidget->setItem(i, 1, new QTableWidgetItem(profiles[i][1]));
|
||||
ui->tableWidget->item(i, 1)->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
if (profiles[i][2] == "*") {
|
||||
// active
|
||||
ui->tableWidget->setItem(i, 2, new QTableWidgetItem(QApplication::translate("NetctlAutoWindow", "yes")));
|
||||
ui->tableWidget->item(i, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
}
|
||||
else
|
||||
ui->tableWidget->setItem(i, 2, new QTableWidgetItem(QString("")));
|
||||
if (profiles[i][2] == "!") {
|
||||
// disabled
|
||||
ui->tableWidget->setItem(i, 3, new QTableWidgetItem(QApplication::translate("NetctlAutoWindow", "yes")));
|
||||
ui->tableWidget->item(i, 3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
}
|
||||
else
|
||||
ui->tableWidget->setItem(i, 3, new QTableWidgetItem(QString("")));
|
||||
}
|
||||
|
||||
ui->tableWidget->setSortingEnabled(true);
|
||||
ui->tableWidget->resizeRowsToContents();
|
||||
#if QT_VERSION >= 0x050000
|
||||
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
#else
|
||||
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
|
||||
#endif
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::appendAvailableProfiles()
|
||||
void NetctlAutoWindow::netctlAutoContextualMenu(const QPoint &pos)
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[appendAvailableProfiles]";
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[contextualMenu]";
|
||||
|
||||
QList<QStringList> profiles = netctlCommand->getProfileList();
|
||||
for (int i=0; i<profiles.count(); i++)
|
||||
ui->listWidget_available->addItem(profiles[i][0]);
|
||||
if (ui->tableWidget->currentItem() == 0)
|
||||
return;
|
||||
|
||||
// create menu
|
||||
QMenu menu(this);
|
||||
QAction *startProfile = menu.addAction(QApplication::translate("NetctlAutoWindow", "Switch to profile"));
|
||||
startProfile->setIcon(QIcon::fromTheme("dialog-apply"));
|
||||
QAction *enableProfile = menu.addAction(QApplication::translate("NetctlAutoWindow", "Enable profile"));
|
||||
menu.addSeparator();
|
||||
QAction *enableAllProfiles = menu.addAction(QApplication::translate("NetctlAutoWindow", "Enable all profiles"));
|
||||
enableAllProfiles->setIcon(QIcon::fromTheme("edit-add"));
|
||||
QAction *disableAllProfiles = menu.addAction(QApplication::translate("NetctlAutoWindow", "Disable all profiles"));
|
||||
disableAllProfiles->setIcon(QIcon::fromTheme("edit-delete"));
|
||||
|
||||
// set text
|
||||
if (ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 2)->text() == QString("yes")) {
|
||||
enableProfile->setVisible(false);
|
||||
startProfile->setVisible(false);
|
||||
}
|
||||
else {
|
||||
enableProfile->setVisible(true);
|
||||
startProfile->setVisible(true);
|
||||
if (ui->tableWidget->item(ui->tableWidget->currentItem()->row(), 3)->text() == QString("yes")) {
|
||||
enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Disable"));
|
||||
enableProfile->setIcon(QIcon::fromTheme("edit-delete"));
|
||||
}
|
||||
else {
|
||||
// buttons
|
||||
enableProfile->setText(QApplication::translate("NetctlAutoWindow", "Enable"));
|
||||
enableProfile->setIcon(QIcon::fromTheme("edit-add"));
|
||||
}
|
||||
}
|
||||
|
||||
// actions
|
||||
QAction *action = menu.exec(ui->tableWidget->viewport()->mapToGlobal(pos));
|
||||
if (action == startProfile) {
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[contextualMenu]" << "Switch to profile";
|
||||
netctlAutoStartProfile();
|
||||
}
|
||||
else if (action == enableProfile) {
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[contextualMenu]" << "Enable profile";
|
||||
netctlAutoEnableProfile();
|
||||
}
|
||||
else if (action == enableAllProfiles) {
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[contextualMenu]" << "Enable all profiles";
|
||||
netctlAutoEnableAllProfiles();
|
||||
}
|
||||
else if (action == disableAllProfiles) {
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[contextualMenu]" << "Disable all profiles";
|
||||
netctlAutoDisableAllProfiles();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::clear()
|
||||
void NetctlAutoWindow::netctlAutoDisableAllProfiles()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[clear]";
|
||||
|
||||
ui->listWidget_available->setCurrentRow(-1);
|
||||
ui->listWidget_available->clear();
|
||||
ui->listWidget_active->clear();
|
||||
ui->listWidget_active->setCurrentRow(-1);
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[disableAllProfiles]";
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::netctlAutoEnableProfile()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[enableProfile]";
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::netctlAutoEnableAllProfiles()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[enableAllProfiles]";
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::netctlAutoStartProfile()
|
||||
{
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[startProfile]";
|
||||
}
|
||||
|
||||
|
||||
void NetctlAutoWindow::netctlAutoRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous)
|
||||
{
|
||||
Q_UNUSED(previous);
|
||||
if (debug) qDebug() << "[NetctlAutoWindow]" << "[refreshButtons]" << current->row();
|
||||
|
||||
if (current == 0) {
|
||||
// buttons
|
||||
ui->pushButton_enable->setDisabled(true);
|
||||
ui->pushButton_switch->setDisabled(true);
|
||||
// menu
|
||||
ui->actionEnable->setVisible(false);
|
||||
ui->actionSwitch->setVisible(false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ui->tableWidget->item(current->row(), 2)->text() == QString("yes")) {
|
||||
// buttons
|
||||
ui->pushButton_enable->setDisabled(true);
|
||||
ui->pushButton_switch->setDisabled(true);
|
||||
// menu
|
||||
ui->actionEnable->setVisible(false);
|
||||
ui->actionSwitch->setVisible(false);
|
||||
}
|
||||
else {
|
||||
// buttons
|
||||
ui->pushButton_enable->setEnabled(true);
|
||||
ui->pushButton_switch->setEnabled(true);
|
||||
// menu
|
||||
ui->actionEnable->setVisible(true);
|
||||
ui->actionSwitch->setVisible(true);
|
||||
if (ui->tableWidget->item(current->row(), 3)->text() == QString("yes")) {
|
||||
// buttons
|
||||
ui->pushButton_enable->setText(QApplication::translate("NetctlAutoWindow", "Disable"));
|
||||
ui->pushButton_enable->setIcon(QIcon::fromTheme("edit-delete"));
|
||||
// menu
|
||||
ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Disable profile"));
|
||||
ui->actionEnable->setIcon(QIcon::fromTheme("edit-delete"));
|
||||
}
|
||||
else {
|
||||
// buttons
|
||||
ui->pushButton_enable->setText(QApplication::translate("NetctlAutoWindow", "Enable"));
|
||||
ui->pushButton_enable->setIcon(QIcon::fromTheme("edit-add"));
|
||||
// menu
|
||||
ui->actionEnable->setText(QApplication::translate("NetctlAutoWindow", "Enable profile"));
|
||||
ui->actionEnable->setIcon(QIcon::fromTheme("edit-add"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include <QKeyEvent>
|
||||
#include <QMainWindow>
|
||||
#include <QTableWidgetItem>
|
||||
|
||||
|
||||
class Netctl;
|
||||
@ -42,17 +43,20 @@ public slots:
|
||||
void showWindow();
|
||||
|
||||
private slots:
|
||||
void appendActiveProfiles();
|
||||
void appendAvailableProfiles();
|
||||
void clear();
|
||||
void netctlAutoAppendTable();
|
||||
// table
|
||||
void netctlAutoContextualMenu(const QPoint &pos);
|
||||
void netctlAutoDisableAllProfiles();
|
||||
void netctlAutoEnableProfile();
|
||||
void netctlAutoEnableAllProfiles();
|
||||
void netctlAutoStartProfile();
|
||||
void netctlAutoRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous);
|
||||
|
||||
private:
|
||||
Netctl *netctlCommand;
|
||||
Ui::NetctlAutoWindow *ui;
|
||||
bool debug;
|
||||
void createActions();
|
||||
// ESC pressed event
|
||||
void keyPressEvent(QKeyEvent *pressedKey);
|
||||
};
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>585</width>
|
||||
<width>432</width>
|
||||
<height>343</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -14,131 +14,85 @@
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="layout_main">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="layout_available">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_available">
|
||||
<property name="text">
|
||||
<string>Available profiles</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget_available">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="layout_buttons">
|
||||
<item>
|
||||
<spacer name="spacer_buttonsUp">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_addAll">
|
||||
<property name="icon">
|
||||
<iconset theme="arrow-right-double">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_add">
|
||||
<property name="icon">
|
||||
<iconset theme="arrow-right">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_remove">
|
||||
<property name="icon">
|
||||
<iconset theme="arrow-left">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_removeAll">
|
||||
<property name="icon">
|
||||
<iconset theme="arrow-left-double">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_buttonsDown">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="layout_active">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_active">
|
||||
<property name="text">
|
||||
<string>Active profiles</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget_active">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
<widget class="QTableWidget" name="tableWidget">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Profile</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Description</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Active</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Disabled</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QHBoxLayout" name="layout_buttons">
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_enable">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_buttons">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_switch">
|
||||
<property name="text">
|
||||
<string>Switch</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="dialog-apply"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -147,7 +101,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>585</width>
|
||||
<width>432</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -157,6 +111,10 @@
|
||||
</property>
|
||||
<addaction name="actionSwitch"/>
|
||||
<addaction name="actionEnable"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionEnableAll"/>
|
||||
<addaction name="actionDisableAll"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionClose"/>
|
||||
</widget>
|
||||
<addaction name="menuMenu"/>
|
||||
@ -190,6 +148,25 @@
|
||||
<property name="text">
|
||||
<string>Close</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Esc</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionEnableAll">
|
||||
<property name="icon">
|
||||
<iconset theme="edit-add"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable all profiles</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionDisableAll">
|
||||
<property name="icon">
|
||||
<iconset theme="edit-delete"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Disable all profiles</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
@ -157,9 +157,9 @@ QMap<QString, QString> PppoeWidget::getSettings()
|
||||
pppoeSettings[QString("PPPoEService")] = QString("'") + ui->lineEdit_service->text() + QString("'");
|
||||
if (!ui->lineEdit_ac->text().isEmpty())
|
||||
pppoeSettings[QString("PPPoEAC")] = QString("'") + ui->lineEdit_ac->text() + QString("'");
|
||||
if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_session->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
pppoeSettings[QString("PPPoESession")] = QString("'") + ui->lineEdit_session->text().remove(QString(" ")) + QString("'");
|
||||
if (!ui->lineEdit_mac->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_mac->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
pppoeSettings[QString("PPPoEMAC")] = QString("'") + ui->lineEdit_mac->text() + QString("'");
|
||||
if (ui->checkBox_ipv6->checkState() == Qt::Checked)
|
||||
pppoeSettings[QString("PPPoEIP6")] = QString("yes");
|
||||
@ -175,16 +175,16 @@ int PppoeWidget::isOk()
|
||||
if (!QFile(ui->lineEdit_options->text()).exists())
|
||||
return 1;
|
||||
// mac address
|
||||
if (!ui->lineEdit_mac->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_mac->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (ui->lineEdit_mac->text().contains(QString(" ")))
|
||||
return 2;
|
||||
// session id is not set
|
||||
if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (ui->lineEdit_session->text().split(QString(":"))[0].remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_session->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (ui->lineEdit_session->text().split(QChar(':'))[0].remove(QString(" ")).isEmpty())
|
||||
return 3;
|
||||
// session mac address
|
||||
if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) {
|
||||
QStringList item = ui->lineEdit_session->text().split(QString(":"));
|
||||
if (!ui->lineEdit_session->text().split(QChar(':')).join(QString("")).remove(QString(" ")).isEmpty()) {
|
||||
QStringList item = ui->lineEdit_session->text().split(QChar(':'));
|
||||
for (int i=1; i<7; i++)
|
||||
if (item[i].contains(QString(" ")))
|
||||
return 4;
|
||||
|
@ -60,9 +60,11 @@ void SettingsWindow::createActions()
|
||||
// buttons
|
||||
connect(ui->pushButton_interfaceDir, SIGNAL(clicked(bool)), SLOT(selectIfaceDir()));
|
||||
connect(ui->pushButton_netctlPath, SIGNAL(clicked(bool)), SLOT(selectNetctlPath()));
|
||||
connect(ui->pushButton_netctlAutoPath, SIGNAL(clicked(bool)), SLOT(selectNetctlAutoPath()));
|
||||
connect(ui->pushButton_profilePath, SIGNAL(clicked(bool)), SLOT(selectProfileDir()));
|
||||
connect(ui->pushButton_rfkill, SIGNAL(clicked(bool)), SLOT(selectRfkillDir()));
|
||||
connect(ui->pushButton_sudo, SIGNAL(clicked(bool)), SLOT(selectSudoPath()));
|
||||
connect(ui->pushButton_wpaActiondPath, SIGNAL(clicked(bool)), SLOT(selectWpaActiondPath()));
|
||||
connect(ui->pushButton_wpaCliPath, SIGNAL(clicked(bool)), SLOT(selectWpaCliPath()));
|
||||
connect(ui->pushButton_wpaSupPath, SIGNAL(clicked(bool)), SLOT(selectWpaSupPath()));
|
||||
}
|
||||
@ -139,6 +141,20 @@ void SettingsWindow::selectNetctlPath()
|
||||
}
|
||||
|
||||
|
||||
void SettingsWindow::selectNetctlAutoPath()
|
||||
{
|
||||
if (debug) qDebug() << "[SettingsWindow]" << "[selectNetctlAutoPath]";
|
||||
|
||||
QString filename = QFileDialog::getOpenFileName(
|
||||
this,
|
||||
QApplication::translate("SettingsWindow", "Select netctl-auto command"),
|
||||
QString("/usr/bin/"),
|
||||
QApplication::translate("SettingsWindow", "All files (*)"));
|
||||
if (!filename.isEmpty())
|
||||
ui->lineEdit_netctlAutoPath->setText(filename);
|
||||
}
|
||||
|
||||
|
||||
void SettingsWindow::selectProfileDir()
|
||||
{
|
||||
if (debug) qDebug() << "[SettingsWindow]" << "[selectProfileDir]";
|
||||
@ -179,6 +195,20 @@ void SettingsWindow::selectSudoPath()
|
||||
}
|
||||
|
||||
|
||||
void SettingsWindow::selectWpaActiondPath()
|
||||
{
|
||||
if (debug) qDebug() << "[SettingsWindow]" << "[selectWpaActiondPath]";
|
||||
|
||||
QString filename = QFileDialog::getOpenFileName(
|
||||
this,
|
||||
QApplication::translate("SettingsWindow", "Select wpa_actiond command"),
|
||||
QString("/usr/bin/"),
|
||||
QApplication::translate("SettingsWindow", "All files (*)"));
|
||||
if (!filename.isEmpty())
|
||||
ui->lineEdit_wpaActiondPath->setText(filename);
|
||||
}
|
||||
|
||||
|
||||
void SettingsWindow::selectWpaCliPath()
|
||||
{
|
||||
if (debug) qDebug() << "[SettingsWindow]" << "[selectWpaCliPath]";
|
||||
@ -228,11 +258,13 @@ QMap<QString, QString> SettingsWindow::readSettings()
|
||||
settings[QString("IFACE_DIR")] = ui->lineEdit_interfacesDir->text();
|
||||
settings[QString("LANGUAGE")] = ui->comboBox_language->currentText();
|
||||
settings[QString("NETCTL_PATH")] = ui->lineEdit_netctlPath->text();
|
||||
settings[QString("NETCTLAUTO_PATH")] = ui->lineEdit_netctlAutoPath->text();
|
||||
settings[QString("PID_FILE")] = ui->lineEdit_pid->text();
|
||||
settings[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text();
|
||||
settings[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text();
|
||||
settings[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text();
|
||||
settings[QString("SUDO_PATH")] = ui->lineEdit_sudo->text();
|
||||
settings[QString("WPAACTIOND_PATH")] = ui->lineEdit_wpaActiondPath->text();
|
||||
settings[QString("WPACLI_PATH")] = ui->lineEdit_wpaCliPath->text();
|
||||
settings[QString("WPASUP_PATH")] = ui->lineEdit_wpaSupPath->text();
|
||||
settings[QString("WPA_DRIVERS")] = ui->lineEdit_wpaSupDrivers->text();
|
||||
@ -257,11 +289,13 @@ void SettingsWindow::setSettings(const QMap<QString, QString> settings)
|
||||
if (ui->comboBox_language->itemText(i) == settings[QString("LANGUAGE")])
|
||||
ui->comboBox_language->setCurrentIndex(i);
|
||||
ui->lineEdit_netctlPath->setText(settings[QString("NETCTL_PATH")]);
|
||||
ui->lineEdit_netctlAutoPath->setText(settings[QString("NETCTLAUTO_PATH")]);
|
||||
ui->lineEdit_pid->setText(settings[QString("PID_FILE")]);
|
||||
ui->lineEdit_interface->setText(settings[QString("PREFERED_IFACE")]);
|
||||
ui->lineEdit_profilePath->setText(settings[QString("PROFILE_DIR")]);
|
||||
ui->lineEdit_rfkill->setText(settings[QString("RFKILL_DIR")]);
|
||||
ui->lineEdit_sudo->setText(settings[QString("SUDO_PATH")]);
|
||||
ui->lineEdit_wpaActiondPath->setText(settings[QString("WPAACTIOND_PATH")]);
|
||||
ui->lineEdit_wpaCliPath->setText(settings[QString("WPACLI_PATH")]);
|
||||
ui->lineEdit_wpaSupPath->setText(settings[QString("WPASUP_PATH")]);
|
||||
ui->lineEdit_wpaSupDrivers->setText(settings[QString("WPA_DRIVERS")]);
|
||||
@ -283,11 +317,13 @@ QMap<QString, QString> SettingsWindow::getDefault()
|
||||
settings[QString("IFACE_DIR")] = QString("/sys/class/net/");
|
||||
settings[QString("LANGUAGE")] = QString("en");
|
||||
settings[QString("NETCTL_PATH")] = QString("/usr/bin/netctl");
|
||||
settings[QString("NETCTLAUTO_PATH")] = QString("/usr/bin/netctl-auto");
|
||||
settings[QString("PID_FILE")] = QString("/run/wpa_supplicant_netctl-gui.pid");
|
||||
settings[QString("PREFERED_IFACE")] = QString("");
|
||||
settings[QString("PROFILE_DIR")] = QString("/etc/netctl/");
|
||||
settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/");
|
||||
settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu");
|
||||
settings[QString("WPAACTIOND_PATH")] = QString("/usr/bin/wpa_actiond");
|
||||
settings[QString("WPACLI_PATH")] = QString("/usr/bin/wpa_cli");
|
||||
settings[QString("WPASUP_PATH")] = QString("/usr/bin/wpa_supplicant");
|
||||
settings[QString("WPA_DRIVERS")] = QString("nl80211,wext");
|
||||
@ -304,18 +340,18 @@ QMap<QString, QString> SettingsWindow::getSettings()
|
||||
{
|
||||
if (debug) qDebug() << "[SettingsWindow]" << "[getSettings]";
|
||||
|
||||
QMap<QString, QString> settings;
|
||||
QMap<QString, QString> settings = getDefault();
|
||||
QFile configFile(file);
|
||||
QString fileStr;
|
||||
|
||||
if (!configFile.open(QIODevice::ReadOnly))
|
||||
return getDefault();
|
||||
return settings;
|
||||
while (true) {
|
||||
fileStr = QString(configFile.readLine());
|
||||
if (fileStr[0] != '#') {
|
||||
if (fileStr.contains(QString("=")))
|
||||
settings[fileStr.split(QString("="))[0]] = fileStr.split(QString("="))[1]
|
||||
.remove(QString(" "))
|
||||
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
|
||||
.remove(QChar(' '))
|
||||
.trimmed();
|
||||
}
|
||||
if (configFile.atEnd())
|
||||
|
@ -50,9 +50,11 @@ private slots:
|
||||
// buttons
|
||||
void selectIfaceDir();
|
||||
void selectNetctlPath();
|
||||
void selectNetctlAutoPath();
|
||||
void selectProfileDir();
|
||||
void selectRfkillDir();
|
||||
void selectSudoPath();
|
||||
void selectWpaActiondPath();
|
||||
void selectWpaCliPath();
|
||||
void selectWpaSupPath();
|
||||
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>461</width>
|
||||
<height>287</height>
|
||||
<width>457</width>
|
||||
<height>311</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -104,6 +104,37 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="layout_netctlAutoPath">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_netctlAutoPath">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>netctl-auto path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_netctlAutoPath">
|
||||
<property name="toolTip">
|
||||
<string>Path to netctl</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_netctlAutoPath">
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="layout_profilePath">
|
||||
<item>
|
||||
@ -268,6 +299,37 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="layout_wpaActiondPath">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_wpaActiondPath">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>wpa_actiond path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_wpaActiondPath">
|
||||
<property name="toolTip">
|
||||
<string>Path to wpa_cli</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_wpaActiondPath">
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="layout_pid">
|
||||
<item>
|
||||
|
@ -63,7 +63,7 @@ void TunnelWidget::createFilter()
|
||||
|
||||
QString TunnelWidget::getIp(const QString rawIp)
|
||||
{
|
||||
QStringList ip = rawIp.split(QString("."));
|
||||
QStringList ip = rawIp.split(QChar('.'));
|
||||
|
||||
// fix empty fields
|
||||
if (ip[0].isEmpty())
|
||||
@ -91,9 +91,9 @@ QMap<QString, QString> TunnelWidget::getSettings()
|
||||
return tunnelSettings;
|
||||
|
||||
tunnelSettings[QString("Mode")] = QString("'") + ui->comboBox_mode->currentText() + QString("'");
|
||||
if (!ui->lineEdit_local->text().split(QString(".")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_local->text().split(QChar('.')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
tunnelSettings[QString("Local")] = QString("'") + getIp(ui->lineEdit_local->text().remove(QString(" "))) + QString("'");
|
||||
if (!ui->lineEdit_remote->text().split(QString(".")).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
if (!ui->lineEdit_remote->text().split(QChar('.')).join(QString("")).remove(QString(" ")).isEmpty())
|
||||
tunnelSettings[QString("Remote")] = QString("'") + getIp(ui->lineEdit_remote->text().remove(QString(" "))) + QString("'");
|
||||
|
||||
return tunnelSettings;
|
||||
|
@ -327,7 +327,7 @@ void WirelessWidget::setSettings(const QMap<QString, QString> settings)
|
||||
if (wirelessSettings[QString("AdHoc")].remove(QString("'")) == QString("yes"))
|
||||
ui->checkBox_adhoc->setCheckState(Qt::Checked);
|
||||
if (wirelessSettings.contains(QString("ScanFrequencies")))
|
||||
ui->listWidget_freq->addItems(wirelessSettings[QString("ScanFrequencies")].split(QString("\n")));
|
||||
ui->listWidget_freq->addItems(wirelessSettings[QString("ScanFrequencies")].split(QChar('\n')));
|
||||
if (wirelessSettings.contains(QString("Frequency")))
|
||||
ui->spinBox_frequency->setValue(wirelessSettings[QString("Frequency")].toInt());
|
||||
if (wirelessSettings.contains(QString("Priority")))
|
||||
@ -337,7 +337,7 @@ void WirelessWidget::setSettings(const QMap<QString, QString> settings)
|
||||
if (wirelessSettings.contains(QString("WPAGroup")))
|
||||
ui->lineEdit_wpaGroup->setText(wirelessSettings[QString("WPAGroup")].remove(QString("'")));
|
||||
if (wirelessSettings.contains(QString("WPADriver")))
|
||||
ui->listWidget_drivers->addItems(wirelessSettings[QString("WPADriver")].split(QString(",")));
|
||||
ui->listWidget_drivers->addItems(wirelessSettings[QString("WPADriver")].split(QChar(',')));
|
||||
if (wirelessSettings.contains(QString("RFKill")))
|
||||
for (int i=0; i<ui->comboBox_rfkill->count(); i++)
|
||||
if (wirelessSettings[QString("RFKill")].remove(QString("'")) == ui->comboBox_rfkill->itemText(i))
|
||||
|
@ -33,6 +33,8 @@ public:
|
||||
~Netctl();
|
||||
// general information
|
||||
QList<QStringList> getProfileList();
|
||||
QList<QStringList> getProfileListFromNetctlAuto();
|
||||
QString getProfileDescription(const QString profile);
|
||||
QStringList getProfileDescriptions(const QStringList profileList);
|
||||
QStringList getProfileStatuses(const QStringList profileList);
|
||||
QString getSsidFromProfile(const QString profile);
|
||||
@ -48,6 +50,7 @@ public slots:
|
||||
private:
|
||||
bool debug;
|
||||
QString netctlCommand;
|
||||
QString netctlAutoCommand;
|
||||
QDir *profileDirectory;
|
||||
QString sudoCommand;
|
||||
// functions
|
||||
|
@ -26,6 +26,7 @@ Netctl::Netctl(const bool debugCmd, const QMap<QString, QString> settings)
|
||||
: debug(debugCmd)
|
||||
{
|
||||
netctlCommand = settings[QString("NETCTL_PATH")];
|
||||
netctlAutoCommand = settings[QString("NETCTLAUTO_PATH")];
|
||||
profileDirectory = new QDir(settings[QString("PROFILE_DIR")]);
|
||||
sudoCommand = settings[QString("SUDO_PATH")];
|
||||
}
|
||||
@ -104,9 +105,62 @@ QList<QStringList> Netctl::getProfileList()
|
||||
}
|
||||
|
||||
|
||||
QStringList Netctl::getProfileDescriptions(const QStringList profileList)
|
||||
QList<QStringList> Netctl::getProfileListFromNetctlAuto()
|
||||
{
|
||||
if (debug) qDebug() << "[Netctl]" << "[getProfileListFromNetctlAuto]";
|
||||
|
||||
QProcess command;
|
||||
QString commandText = netctlAutoCommand + QString(" list");
|
||||
if (debug) qDebug() << "[Netctl]" << "[getProfileListFromNetctlAuto]" << ":" << "Run cmd" << commandText;
|
||||
command.start(commandText);
|
||||
command.waitForFinished(-1);
|
||||
QStringList output = QString(command.readAllStandardOutput()).split(QChar('\n'), QString::SkipEmptyParts);
|
||||
|
||||
QList<QStringList> fullProfilesInfo;
|
||||
for (int i=0; i<output.count(); i++) {
|
||||
QStringList profileInfo;
|
||||
profileInfo.append(output[i].mid(2, -1));
|
||||
profileInfo.append(getProfileDescription(profileInfo[0]));
|
||||
profileInfo.append(output[i].left(1));
|
||||
fullProfilesInfo.append(profileInfo);
|
||||
}
|
||||
|
||||
return fullProfilesInfo;
|
||||
}
|
||||
|
||||
|
||||
QString Netctl::getProfileDescription(const QString profileName)
|
||||
{
|
||||
if (debug) qDebug() << "[Netctl]" << "[getProfileDescription]";
|
||||
QString description;
|
||||
|
||||
QString profileUrl = profileDirectory->absolutePath() + QDir::separator() + profileName;
|
||||
if (debug) qDebug() << "[Netctl]" << "[getProfileDescription]" << ":" << "Check" << profileUrl;
|
||||
QFile profile(profileUrl);
|
||||
QString fileStr;
|
||||
if (profile.open(QIODevice::ReadOnly))
|
||||
while (true) {
|
||||
fileStr = QString(profile.readLine());
|
||||
if (fileStr[0] != '#')
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() == 2)
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts)[0] == QString("Description"))
|
||||
description = fileStr.split(QChar('='), QString::SkipEmptyParts)[1].trimmed();
|
||||
if (profile.atEnd())
|
||||
break;
|
||||
}
|
||||
else
|
||||
description = QString("<unknown>");
|
||||
|
||||
description.remove(QChar('\''));
|
||||
description.remove(QChar('"'));
|
||||
|
||||
return description;
|
||||
}
|
||||
|
||||
|
||||
QStringList Netctl::getProfileDescriptions(const QStringList profileList)
|
||||
{
|
||||
if (debug) qDebug() << "[Netctl]" << "[getProfileDescriptions]";
|
||||
QStringList descriptions;
|
||||
|
||||
for (int i=0; i<profileList.count(); i++) {
|
||||
@ -118,9 +172,9 @@ QStringList Netctl::getProfileDescriptions(const QStringList profileList)
|
||||
while (true) {
|
||||
fileStr = QString(profile.readLine());
|
||||
if (fileStr[0] != '#')
|
||||
if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2)
|
||||
if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("Description"))
|
||||
descriptions.append(fileStr.split(QString("="), QString::SkipEmptyParts)[1].trimmed());
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() == 2)
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts)[0] == QString("Description"))
|
||||
descriptions.append(fileStr.split(QChar('='), QString::SkipEmptyParts)[1].trimmed());
|
||||
if (profile.atEnd())
|
||||
break;
|
||||
}
|
||||
@ -175,9 +229,9 @@ QString Netctl::getSsidFromProfile(const QString profile)
|
||||
while (true) {
|
||||
fileStr = QString(profileFile.readLine());
|
||||
if (fileStr[0] != '#') {
|
||||
if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2)
|
||||
if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("ESSID"))
|
||||
ssidName = fileStr.split(QString("="), QString::SkipEmptyParts)[1].trimmed();
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() == 2)
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts)[0] == QString("ESSID"))
|
||||
ssidName = fileStr.split(QChar('='), QString::SkipEmptyParts)[1].trimmed();
|
||||
}
|
||||
if (profileFile.atEnd())
|
||||
break;
|
||||
|
@ -139,22 +139,22 @@ QMap<QString, QString> NetctlProfile::getSettingsFromProfile(const QString profi
|
||||
while (true) {
|
||||
fileStr = QString(profileFile.readLine());
|
||||
if (fileStr[0] != '#') {
|
||||
if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2) {
|
||||
if ((fileStr.split(QString("="))[1][0] == QChar('(')) &&
|
||||
(fileStr.split(QString("="))[1][fileStr.split(QString("="))[1].size()-2] == QChar(')')))
|
||||
settings[fileStr.split(QString("="))[0]] = fileStr.split(QString("="))[1]
|
||||
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() == 2) {
|
||||
if ((fileStr.split(QChar('='))[1][0] == QChar('(')) &&
|
||||
(fileStr.split(QChar('='))[1][fileStr.split(QChar('='))[1].size()-2] == QChar(')')))
|
||||
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
|
||||
.remove(QString("("))
|
||||
.remove(QString(")"))
|
||||
.trimmed();
|
||||
else if (fileStr.split(QString("="))[1][0] == QChar('(')) {
|
||||
QString parameterName = fileStr.split(QString("="))[0];
|
||||
else if (fileStr.split(QChar('='))[1][0] == QChar('(')) {
|
||||
QString parameterName = fileStr.split(QChar('='))[0];
|
||||
QStringList parameter;
|
||||
if (!fileStr.split(QString("="))[1]
|
||||
if (!fileStr.split(QChar('='))[1]
|
||||
.remove(QString("("))
|
||||
.remove(QString(")"))
|
||||
.trimmed()
|
||||
.isEmpty())
|
||||
parameter.append(fileStr.split(QString("="))[1]
|
||||
parameter.append(fileStr.split(QChar('='))[1]
|
||||
.remove(QString("("))
|
||||
.remove(QString(")"))
|
||||
.trimmed());
|
||||
@ -175,7 +175,7 @@ QMap<QString, QString> NetctlProfile::getSettingsFromProfile(const QString profi
|
||||
settings[parameterName] = parameter.join(QString("\n"));
|
||||
}
|
||||
else
|
||||
settings[fileStr.split(QString("="))[0]] = fileStr.split(QString("="))[1]
|
||||
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
|
||||
.trimmed();
|
||||
}
|
||||
|
||||
|
@ -167,18 +167,18 @@ QList<QStringList> WpaSup::scanWifi()
|
||||
return scanResults;
|
||||
SleepThread::sleep(3);
|
||||
|
||||
QStringList rawOutput = getWpaCliOutput(QString("scan_results")).split(QString("\n"), QString::SkipEmptyParts);
|
||||
QStringList rawOutput = getWpaCliOutput(QString("scan_results")).split(QChar('\n'), QString::SkipEmptyParts);
|
||||
// remove table header
|
||||
rawOutput.removeFirst();
|
||||
// remove duplicates
|
||||
QStringList rawList;
|
||||
for (int i=0; i<rawOutput.count(); i++) {
|
||||
bool exist = false;
|
||||
if (rawOutput[i].split(QString("\t"), QString::SkipEmptyParts).count() > 4)
|
||||
if (rawOutput[i].split(QChar('\t'), QString::SkipEmptyParts).count() > 4)
|
||||
for (int j=0; j<rawList.count(); j++)
|
||||
if (rawList[j].split(QString("\t"), QString::SkipEmptyParts).count() > 4)
|
||||
if (rawOutput[i].split(QString("\t"), QString::SkipEmptyParts)[4] ==
|
||||
rawList[j].split(QString("\t"), QString::SkipEmptyParts)[4])
|
||||
if (rawList[j].split(QChar('\t'), QString::SkipEmptyParts).count() > 4)
|
||||
if (rawOutput[i].split(QChar('\t'), QString::SkipEmptyParts)[4] ==
|
||||
rawList[j].split(QChar('\t'), QString::SkipEmptyParts)[4])
|
||||
exist = true;
|
||||
if (!exist)
|
||||
rawList.append(rawOutput[i]);
|
||||
@ -188,8 +188,8 @@ QList<QStringList> WpaSup::scanWifi()
|
||||
QStringList wifiPoint;
|
||||
|
||||
// point name
|
||||
if (rawList[i].split(QString("\t"), QString::SkipEmptyParts).count() > 4)
|
||||
wifiPoint.append(rawList[i].split(QString("\t"), QString::SkipEmptyParts)[4]);
|
||||
if (rawList[i].split(QChar('\t'), QString::SkipEmptyParts).count() > 4)
|
||||
wifiPoint.append(rawList[i].split(QChar('\t'), QString::SkipEmptyParts)[4]);
|
||||
else
|
||||
wifiPoint.append(QString("<hidden>"));
|
||||
// profile status
|
||||
@ -205,9 +205,9 @@ QList<QStringList> WpaSup::scanWifi()
|
||||
status = QString("new");
|
||||
wifiPoint.append(status);
|
||||
// point signal
|
||||
wifiPoint.append(rawList[i].split(QString("\t"), QString::SkipEmptyParts)[2]);
|
||||
wifiPoint.append(rawList[i].split(QChar('\t'), QString::SkipEmptyParts)[2]);
|
||||
// point security
|
||||
QString security = rawList[i].split(QString("\t"), QString::SkipEmptyParts)[3];
|
||||
QString security = rawList[i].split(QChar('\t'), QString::SkipEmptyParts)[3];
|
||||
if (security.contains(QString("WPA2")))
|
||||
security = QString("WPA2");
|
||||
else if (security.contains(QString("WPA")))
|
||||
|
Reference in New Issue
Block a user