/*************************************************************************** * 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 "settingswindow.h" #include "ui_settingswindow.h" #include #include #include #include #include #include #include #include #include #include "mainwindow.h" #include "version.h" SettingsWindow::SettingsWindow(QWidget *parent, const bool debugCmd, const QString configFile) : QMainWindow(parent), debug(debugCmd), file(configFile), ui(new Ui::SettingsWindow) { ui->setupUi(this); addLanguages(); addGroups(); createActions(); } SettingsWindow::~SettingsWindow() { if (debug) qDebug() << PDEBUG; delete ui; } void SettingsWindow::createActions() { if (debug) qDebug() << PDEBUG; connect(ui->buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked(bool)), this, SLOT(close())); connect(ui->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked(bool)), this, SLOT(closeWindow())); connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked(bool)), this, SLOT(restoreSettings())); connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), SIGNAL(clicked(bool)), this, SLOT(setDefault())); connect(ui->buttonBox_applyGroup->button(QDialogButtonBox::Apply), SIGNAL(clicked(bool)), this, SLOT(applyHelperGroup())); connect(ui->checkBox_enableTray, SIGNAL(stateChanged(int)), this, SLOT(setTray())); connect(ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(changePage(QTreeWidgetItem *, QTreeWidgetItem *))); // buttons connect(ui->pushButton_editorPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_helperPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_interfacesDir, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_netctlPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_netctlAutoPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_profilePath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_rfkill, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_status, SIGNAL(clicked(bool)), this, SLOT(startHelper())); connect(ui->pushButton_sudo, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_systemctlPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_wpaCliPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); connect(ui->pushButton_wpaSupPath, SIGNAL(clicked(bool)), this, SLOT(selectAbstractSomething())); } 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 void SettingsWindow::keyPressEvent(QKeyEvent *pressedKey) { if (debug) qDebug() << PDEBUG; if (pressedKey->key() == Qt::Key_Escape) close(); } void SettingsWindow::addLanguages() { if (debug) qDebug() << PDEBUG; ui->comboBox_language->clear(); ui->comboBox_language->addItems(Language::getAvailableLanguages()); } void SettingsWindow::applyHelperGroup() { if (debug) qDebug() << PDEBUG; QString group = ui->comboBox_group->currentText(); if (debug) qDebug() << PDEBUG << ":" << "Group" << group; if (group.isEmpty()) return; // create QFile policyFile(QString("%1/org.netctlgui.helper.conf").arg(QDir::tempPath())); if (debug) qDebug() << PDEBUG << ":" << "Save to" << policyFile.fileName(); if (!policyFile.open(QIODevice::WriteOnly | QIODevice::Text)) return; // write QTextStream out(&policyFile); // header out << "" << endl; out << "" << endl; // group body out << " " << endl; out << " " << endl; out << " " << endl; out << " " << endl; out << " " << endl; // root body out << " " << endl; out << " " << endl; out << " " << endl; out << " " << endl; out << " " << endl; // footer out << "" << endl; policyFile.close(); // copy QString newPath = QString("%1/org.netctlgui.helper.conf").arg(PROJECT_DBUS_SYSTEMCONF_PATH); QString cmd = QString("%1 /usr/bin/mv \"%2\" \"%3\"").arg(ui->lineEdit_sudo->text()) .arg(policyFile.fileName()) .arg(newPath); if (debug) qDebug() << PDEBUG << ":" << "Run cmd" << cmd; TaskResult process = runTask(cmd, false); if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; if (process.exitCode != 0) if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; // update setHelperGroup(); } void SettingsWindow::addGroups() { if (debug) qDebug() << PDEBUG; ui->comboBox_group->clear(); QFile groupFile(QString("/etc/group")); if (!groupFile.open(QIODevice::ReadOnly)) return; while (true) { QString fileStr = QString(groupFile.readLine()).trimmed(); if ((fileStr.isEmpty()) && (!groupFile.atEnd())) continue; if ((fileStr[0] == QChar('#')) && (!groupFile.atEnd())) continue; if ((fileStr[0] == QChar(';')) && (!groupFile.atEnd())) continue; if (fileStr.contains(QChar(':'))) ui->comboBox_group->addItem(fileStr.split(QChar(':'))[0]); if (groupFile.atEnd()) break; } groupFile.close(); } void SettingsWindow::changePage(QTreeWidgetItem *current, QTreeWidgetItem *previous) { Q_UNUSED(previous); if (debug) qDebug() << PDEBUG; for (int i=0; itreeWidget->topLevelItemCount(); i++) if (current == ui->treeWidget->topLevelItem(i)) { ui->stackedWidget->setCurrentIndex(i); break; } } void SettingsWindow::closeWindow() { if (debug) qDebug() << PDEBUG; saveSettings(); close(); dynamic_cast(parent())->updateConfiguration(); } void SettingsWindow::saveSettings() { if (debug) qDebug() << PDEBUG; QMap config = readSettings(); QSettings settings(file, QSettings::IniFormat); settings.beginGroup(QString("Common")); settings.setValue(QString("LANGUAGE"), config[QString("LANGUAGE")]); settings.setValue(QString("MAINUPDATE"), config[QString("MAINUPDATE")]); settings.setValue(QString("WIFIUPDATE"), config[QString("WIFIUPDATE")]); settings.setValue(QString("SYSTRAY"), config[QString("SYSTRAY")]); settings.setValue(QString("CLOSETOTRAY"), config[QString("CLOSETOTRAY")]); settings.setValue(QString("STARTTOTRAY"), config[QString("STARTTOTRAY")]); settings.setValue(QString("SKIPCOMPONENTS"), config[QString("SKIPCOMPONENTS")]); settings.endGroup(); settings.beginGroup(QString("Helper")); settings.setValue(QString("USE_HELPER"), config[QString("USE_HELPER")]); settings.setValue(QString("FORCE_SUDO"), config[QString("FORCE_SUDO")]); settings.setValue(QString("CLOSE_HELPER"), config[QString("CLOSE_HELPER")]); settings.setValue(QString("HELPER_PATH"), config[QString("HELPER_PATH")]); settings.setValue(QString("HELPER_SERVICE"), config[QString("HELPER_SERVICE")]); settings.endGroup(); settings.beginGroup(QString("netctl")); settings.setValue(QString("SYSTEMCTL_PATH"), config[QString("SYSTEMCTL_PATH")]); settings.setValue(QString("NETCTL_PATH"), config[QString("NETCTL_PATH")]); settings.setValue(QString("NETCTLAUTO_PATH"), config[QString("NETCTLAUTO_PATH")]); settings.setValue(QString("NETCTLAUTO_PATH"), config[QString("NETCTLAUTO_PATH")]); settings.setValue(QString("PROFILE_DIR"), config[QString("PROFILE_DIR")]); settings.endGroup(); settings.beginGroup(QString("sudo")); settings.setValue(QString("SUDO_PATH"), config[QString("SUDO_PATH")]); settings.endGroup(); settings.beginGroup(QString("wpa_supplicant")); settings.setValue(QString("WPASUP_PATH"), config[QString("WPASUP_PATH")]); settings.setValue(QString("WPACLI_PATH"), config[QString("WPACLI_PATH")]); settings.setValue(QString("PID_FILE"), config[QString("PID_FILE")]); settings.setValue(QString("WPA_DRIVERS"), config[QString("WPA_DRIVERS")]); settings.setValue(QString("CTRL_DIR"), config[QString("CTRL_DIR")]); settings.setValue(QString("CTRL_GROUP"), config[QString("CTRL_GROUP")]); settings.endGroup(); settings.beginGroup(QString("Other")); settings.setValue(QString("EDITOR_PATH"), config[QString("EDITOR_PATH")]); settings.setValue(QString("IFACE_DIR"), config[QString("IFACE_DIR")]); settings.setValue(QString("RFKILL_DIR"), config[QString("RFKILL_DIR")]); settings.setValue(QString("PREFERED_IFACE"), config[QString("PREFERED_IFACE")]); 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(); } void SettingsWindow::setHelperGroup() { if (debug) qDebug() << PDEBUG; QString group; QFile policyFile(QString("%1/org.netctlgui.helper.conf").arg(QString(PROJECT_DBUS_SYSTEMCONF_PATH))); if (!policyFile.open(QIODevice::ReadOnly)) return; while (true) { QString fileStr = QString(policyFile.readLine()).trimmed(); if ((fileStr.isEmpty()) && (!policyFile.atEnd())) continue; if ((fileStr[0] == QChar('#')) && (!policyFile.atEnd())) continue; if ((fileStr[0] == QChar(';')) && (!policyFile.atEnd())) continue; if (fileStr.contains(QString("policy group"))) try { // line is ' ' QStringList fields = fileStr.split(QChar(' '), QString::SkipEmptyParts); group = fields[1].split(QChar('='))[1]; group.remove(QChar('<')).remove(QChar('>')).remove(QChar('\'')).remove(QChar('"')); if (debug) qDebug() << PDEBUG << ":" << "Group detected" << group; } catch (...) { if (debug) qDebug() << PDEBUG << ":" << "An exception recevied"; return; } if (policyFile.atEnd()) break; } policyFile.close(); if (group.isEmpty()) return; int index = ui->comboBox_group->findText(group); ui->comboBox_group->setCurrentIndex(index); } void SettingsWindow::setTray() { if (debug) qDebug() << PDEBUG; ui->checkBox_closeToTray->setDisabled(ui->checkBox_enableTray->checkState() == 0); ui->checkBox_startToTray->setDisabled(ui->checkBox_enableTray->checkState() == 0); } void SettingsWindow::restoreSettings() { if (debug) qDebug() << PDEBUG; setSettings(getSettings()); } void SettingsWindow::setDefault() { if (debug) qDebug() << PDEBUG; setSettings(getDefault()); if (sender() != ui->buttonBox->button(QDialogButtonBox::Reset)) saveSettings(); } void SettingsWindow::selectAbstractSomething() { if (debug) qDebug() << PDEBUG; bool isDir = false; QString path = QString("/usr/bin"); QString text = QApplication::translate("SettingsWindow", "Select helper command"); QLineEdit *lineEdit = ui->lineEdit_editorPath; if (sender() == ui->pushButton_editorPath) { text = QApplication::translate("SettingsWindow", "Select editor command"); lineEdit = ui->lineEdit_editorPath; } else if (sender() == ui->pushButton_helperPath) { text = QApplication::translate("SettingsWindow", "Select helper command"); lineEdit = ui->lineEdit_helperPath; } else if (sender() == ui->pushButton_interfacesDir) { isDir = true; text = QApplication::translate("SettingsWindow", "Select path to directory with interfaces"); path = QString("/sys"); lineEdit = ui->lineEdit_interfacesDir; } else if (sender() == ui->pushButton_netctlPath) { text = QApplication::translate("SettingsWindow", "Select netctl command"); lineEdit = ui->lineEdit_netctlPath; } else if (sender() == ui->pushButton_netctlAutoPath) { text = QApplication::translate("SettingsWindow", "Select netctl-auto command"); lineEdit = ui->lineEdit_netctlAutoPath; } else if (sender() == ui->pushButton_profilePath) { isDir = true; text = QApplication::translate("SettingsWindow", "Select path to profile directory"); path = QString("/etc"); lineEdit = ui->lineEdit_profilePath; } else if (sender() == ui->pushButton_rfkill) { isDir = true; text = QApplication::translate("SettingsWindow", "Select path to directory with rfkill devices"); path = QString("/sys"); lineEdit = ui->lineEdit_rfkill; } else if (sender() == ui->pushButton_sudo) { text = QApplication::translate("SettingsWindow", "Select sudo command"); lineEdit = ui->lineEdit_sudo; } else if (sender() == ui->pushButton_systemctlPath) { text = QApplication::translate("SettingsWindow", "Select systemctl command"); lineEdit = ui->lineEdit_systemctlPath; } else if (sender() == ui->pushButton_wpaCliPath) { text = QApplication::translate("SettingsWindow", "Select wpa_cli command"); lineEdit = ui->lineEdit_wpaCliPath; } else if (sender() == ui->pushButton_wpaSupPath) { text = QApplication::translate("SettingsWindow", "Select wpa_supplicant command"); lineEdit = ui->lineEdit_wpaSupPath; } QString filename; if (isDir) filename = QFileDialog::getExistingDirectory(this, text, path); else filename = QFileDialog::getOpenFileName(this, text, path, QApplication::translate("SettingsWindow", "All files (*)")); if (!filename.isEmpty()) lineEdit->setText(filename); } void SettingsWindow::showWindow() { if (debug) qDebug() << PDEBUG; setHelperGroup(); setSettings(getSettings()); setTray(); updateHelper(); show(); } QMap SettingsWindow::readSettings() { if (debug) qDebug() << PDEBUG; QMap config; if (ui->checkBox_helperClose->checkState() == 2) config[QString("CLOSE_HELPER")] = QString("true"); else config[QString("CLOSE_HELPER")] = QString("false"); if (ui->checkBox_closeToTray->checkState() == 2) config[QString("CLOSETOTRAY")] = QString("true"); else config[QString("CLOSETOTRAY")] = QString("false"); config[QString("CTRL_DIR")] = ui->lineEdit_wpaDir->text(); config[QString("CTRL_GROUP")] = ui->lineEdit_wpaGroup->text(); if (ui->checkBox_forceSudo->checkState() == 2) config[QString("FORCE_SUDO")] = QString("true"); else config[QString("FORCE_SUDO")] = QString("false"); config[QString("EDITOR_PATH")] = ui->lineEdit_editorPath->text(); config[QString("HELPER_PATH")] = ui->lineEdit_helperPath->text(); config[QString("HELPER_SERVICE")] = ui->lineEdit_helperService->text(); config[QString("IFACE_DIR")] = ui->lineEdit_interfacesDir->text(); config[QString("LANGUAGE")] = ui->comboBox_language->currentText(); config[QString("MAINUPDATE")] = QString::number(ui->spinBox_mainAutoUpdate->value()); config[QString("MAIN_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_mainToolbar->currentIndex())); 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_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("PREFERED_IFACE")] = ui->lineEdit_interface->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(); if (ui->checkBox_components->checkState() == 2) config[QString("SKIPCOMPONENTS")] = QString("true"); else config[QString("SKIPCOMPONENTS")] = QString("false"); if (ui->checkBox_startToTray->checkState() == 2) config[QString("STARTTOTRAY")] = QString("true"); else config[QString("STARTTOTRAY")] = QString("false"); config[QString("SUDO_PATH")] = ui->lineEdit_sudo->text(); config[QString("SYSTEMCTL_PATH")] = ui->lineEdit_systemctlPath->text(); if (ui->checkBox_enableTray->checkState() == 2) config[QString("SYSTRAY")] = QString("true"); else config[QString("SYSTRAY")] = QString("false"); if (ui->checkBox_useHelper->checkState() == 2) config[QString("USE_HELPER")] = QString("true"); else config[QString("USE_HELPER")] = QString("false"); config[QString("WIFIUPDATE")] = QString::number(ui->spinBox_wifiAutoUpdate->value()); config[QString("WIFI_TOOLBAR")] = QString::number(indexToToolBarPosition(ui->comboBox_wifiToolbar->currentIndex())); config[QString("WPACLI_PATH")] = ui->lineEdit_wpaCliPath->text(); config[QString("WPASUP_PATH")] = ui->lineEdit_wpaSupPath->text(); config[QString("WPA_DRIVERS")] = ui->lineEdit_wpaSupDrivers->text(); for (int i=0; i config) { if (debug) qDebug() << PDEBUG; if (config[QString("CLOSE_HELPER")] == QString("true")) ui->checkBox_helperClose->setCheckState(Qt::Checked); else ui->checkBox_helperClose->setCheckState(Qt::Unchecked); if (config[QString("CLOSETOTRAY")] == QString("true")) ui->checkBox_closeToTray->setCheckState(Qt::Checked); else ui->checkBox_closeToTray->setCheckState(Qt::Unchecked); ui->lineEdit_wpaDir->setText(config[QString("CTRL_DIR")]); ui->lineEdit_wpaGroup->setText(config[QString("CTRL_GROUP")]); if (config[QString("FORCE_SUDO")] == QString("true")) ui->checkBox_forceSudo->setCheckState(Qt::Checked); else ui->checkBox_forceSudo->setCheckState(Qt::Unchecked); ui->lineEdit_editorPath->setText(config[QString("EDITOR_PATH")]); ui->lineEdit_helperPath->setText(config[QString("HELPER_PATH")]); ui->lineEdit_helperService->setText(config[QString("HELPER_SERVICE")]); ui->lineEdit_interfacesDir->setText(config[QString("IFACE_DIR")]); int index = ui->comboBox_language->findText(config[QString("LANGUAGE")]); ui->comboBox_language->setCurrentIndex(index); ui->spinBox_mainAutoUpdate->setValue(config[QString("MAINUPDATE")].toInt()); index = indexByToolBarPosition(static_cast(config[QString("MAIN_TOOLBAR")].toInt())); ui->comboBox_mainToolbar->setCurrentIndex(index); ui->lineEdit_netctlPath->setText(config[QString("NETCTL_PATH")]); index = indexByToolBarPosition(static_cast(config[QString("NETCTL_TOOLBAR")].toInt())); ui->comboBox_netctlToolbar->setCurrentIndex(index); ui->lineEdit_netctlAutoPath->setText(config[QString("NETCTLAUTO_PATH")]); ui->lineEdit_netctlAutoService->setText(config[QString("NETCTLAUTO_SERVICE")]); index = indexByToolBarPosition(static_cast(config[QString("NETCTLAUTO_TOOLBAR")].toInt())); ui->comboBox_netctlAutoToolbar->setCurrentIndex(index); ui->lineEdit_pid->setText(config[QString("PID_FILE")]); ui->lineEdit_interface->setText(config[QString("PREFERED_IFACE")]); index = indexByToolBarPosition(static_cast(config[QString("PROFILE_TOOLBAR")].toInt())); ui->comboBox_profilesToolbar->setCurrentIndex(index); ui->lineEdit_profilePath->setText(config[QString("PROFILE_DIR")]); ui->lineEdit_rfkill->setText(config[QString("RFKILL_DIR")]); if (config[QString("SKIPCOMPONENTS")] == QString("true")) ui->checkBox_components->setCheckState(Qt::Checked); else ui->checkBox_components->setCheckState(Qt::Unchecked); if (config[QString("STARTTOTRAY")] == QString("true")) ui->checkBox_startToTray->setCheckState(Qt::Checked); else ui->checkBox_startToTray->setCheckState(Qt::Unchecked); ui->lineEdit_sudo->setText(config[QString("SUDO_PATH")]); ui->lineEdit_systemctlPath->setText(config[QString("SYSTEMCTL_PATH")]); if (config[QString("SYSTRAY")] == QString("true")) ui->checkBox_enableTray->setCheckState(Qt::Checked); else ui->checkBox_enableTray->setCheckState(Qt::Unchecked); if (config[QString("USE_HELPER")] == QString("true")) ui->checkBox_useHelper->setCheckState(Qt::Checked); else ui->checkBox_useHelper->setCheckState(Qt::Unchecked); ui->spinBox_wifiAutoUpdate->setValue(config[QString("WIFIUPDATE")].toInt()); index = indexByToolBarPosition(static_cast(config[QString("WIFI_TOOLBAR")].toInt())); ui->comboBox_wifiToolbar->setCurrentIndex(index); ui->lineEdit_wpaCliPath->setText(config[QString("WPACLI_PATH")]); ui->lineEdit_wpaSupPath->setText(config[QString("WPASUP_PATH")]); ui->lineEdit_wpaSupDrivers->setText(config[QString("WPA_DRIVERS")]); for (int i=0; i SettingsWindow::getDefault() { if (debug) qDebug() << PDEBUG; return getSettings(QString("/dev/null")); } QMap SettingsWindow::getSettings(QString fileName) { if (debug) qDebug() << PDEBUG; if (fileName.isEmpty()) fileName = file; QMap config; QSettings settings(fileName, QSettings::IniFormat); config[QString("LANGUAGE")] = Language::defineLanguage(fileName, QString()); settings.beginGroup(QString("Common")); config[QString("LANGUAGE")] = settings.value(QString("LANGUAGE"), config[QString("LANGUAGE")]).toString(); config[QString("MAINUPDATE")] = settings.value(QString("MAINUPDATE"), QString(MAINUPDATE)).toString(); config[QString("WIFIUPDATE")] = settings.value(QString("WIFIUPDATE"), QString(WIFIUPDATE)).toString(); config[QString("SYSTRAY")] = settings.value(QString("SYSTRAY"), QString(SYSTRAY)).toString(); config[QString("CLOSETOTRAY")] = settings.value(QString("CLOSETOTRAY"), QString(CLOSETOTRAY)).toString(); config[QString("STARTTOTRAY")] = settings.value(QString("STARTTOTRAY"), QString(STARTTOTRAY)).toString(); config[QString("SKIPCOMPONENTS")] = settings.value(QString("SKIPCOMPONENTS"), QString(SKIPCOMPONENTS)).toString(); settings.endGroup(); settings.beginGroup(QString("Helper")); config[QString("USE_HELPER")] = settings.value(QString("USE_HELPER"), QString(USE_HELPER)).toString(); config[QString("FORCE_SUDO")] = settings.value(QString("FORCE_SUDO"), QString(FORCE_SUDO)).toString(); config[QString("CLOSE_HELPER")] = settings.value(QString("CLOSE_HELPER"), QString(CLOSE_HELPER)).toString(); config[QString("HELPER_PATH")] = settings.value(QString("HELPER_PATH"), QString(HELPER_PATH)).toString(); config[QString("HELPER_SERVICE")] = settings.value(QString("HELPER_SERVICE"), QString(HELPER_SERVICE)).toString(); settings.endGroup(); settings.beginGroup(QString("netctl")); config[QString("SYSTEMCTL_PATH")] = settings.value(QString("SYSTEMCTL_PATH"), QString(SYSTEMCTL_PATH)).toString(); config[QString("NETCTL_PATH")] = settings.value(QString("NETCTL_PATH"), QString(NETCTL_PATH)).toString(); config[QString("NETCTLAUTO_PATH")] = settings.value(QString("NETCTLAUTO_PATH"), QString(NETCTLAUTO_PATH)).toString(); config[QString("NETCTLAUTO_SERVICE")] = settings.value(QString("NETCTLAUTO_SERVICE"), QString(NETCTLAUTO_SERVICE)).toString(); config[QString("PROFILE_DIR")] = settings.value(QString("PROFILE_DIR"), QString(PROFILE_DIR)).toString(); settings.endGroup(); settings.beginGroup(QString("sudo")); config[QString("SUDO_PATH")] = settings.value(QString("SUDO_PATH"), QString(SUDO_PATH)).toString(); settings.endGroup(); settings.beginGroup(QString("wpa_supplicant")); config[QString("WPASUP_PATH")] = settings.value(QString("WPASUP_PATH"), QString(WPASUP_PATH)).toString(); config[QString("WPACLI_PATH")] = settings.value(QString("WPACLI_PATH"), QString(WPACLI_PATH)).toString(); config[QString("PID_FILE")] = settings.value(QString("PID_FILE"), QString(PID_FILE)).toString(); config[QString("WPA_DRIVERS")] = settings.value(QString("WPA_DRIVERS"), QString(WPA_DRIVERS)).toString(); config[QString("CTRL_DIR")] = settings.value(QString("CTRL_DIR"), QString(CTRL_DIR)).toString(); config[QString("CTRL_GROUP")] = settings.value(QString("CTRL_GROUP"), QString(CTRL_GROUP)).toString(); settings.endGroup(); settings.beginGroup(QString("Other")); config[QString("EDITOR_PATH")] = settings.value(QString("EDITOR_PATH"), QString(EDITOR_PATH)).toString(); config[QString("IFACE_DIR")] = settings.value(QString("IFACE_DIR"), QString(IFACE_DIR)).toString(); config[QString("RFKILL_DIR")] = settings.value(QString("RFKILL_DIR"), QString(RFKILL_DIR)).toString(); config[QString("PREFERED_IFACE")] = settings.value(QString("PREFERED_IFACE"), QString(PREFERED_IFACE)).toString(); 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(parent())->startHelper(); updateHelper(); } void SettingsWindow::updateHelper() { if (debug) qDebug() << PDEBUG; if (dynamic_cast(parent())->isHelperServiceActive()) { ui->label_status->setText(QApplication::translate("SettingsWindow", "Active (systemd)")); ui->pushButton_status->setText(QApplication::translate("SettingsWindow", "Stop")); ui->pushButton_status->setIcon(QIcon::fromTheme("process-stop")); ui->pushButton_status->setDisabled(true); } else if (dynamic_cast(parent())->isHelperActive()) { ui->label_status->setText(QApplication::translate("SettingsWindow", "Active")); ui->pushButton_status->setText(QApplication::translate("SettingsWindow", "Stop")); ui->pushButton_status->setIcon(QIcon::fromTheme("process-stop")); ui->pushButton_status->setEnabled(true); } else { ui->label_status->setText(QApplication::translate("SettingsWindow", "Inactive")); ui->pushButton_status->setText(QApplication::translate("SettingsWindow", "Start")); ui->pushButton_status->setIcon(QIcon::fromTheme("system-run")); ui->pushButton_status->setEnabled(true); } }