diff --git a/CHANGELOG b/CHANGELOG index d1a03c3..71dbe2f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +* gui + + implement autoupdate feature + - fix invalid profile path for the external editor + Ver.1.4.5 --------- * plasmoid diff --git a/sources/gui/src/main.cpp b/sources/gui/src/main.cpp index 7c8b500..86a6a85 100644 --- a/sources/gui/src/main.cpp +++ b/sources/gui/src/main.cpp @@ -62,7 +62,7 @@ unsigned int getUidFromSession(const int type = 0) int main(int argc, char *argv[]) { - QMap args = getArgs(); + QVariantMap args = getArgs(); // reading for (int i=1; i settings, c actionMenu->addAction(ui->actionEnable); ui->actionStart->setMenu(actionMenu); + // auto update + timer.setSingleShot(true); + timer.setInterval(configuration[QString("MAINUPDATE")].toInt() * 1000); + createActions(); } @@ -92,6 +96,8 @@ void MainWidget::update() updateMainTab(); updateMenuMain(); + + if (timer.interval() != 0) return timer.start(); } @@ -411,6 +417,7 @@ void MainWidget::createActions() if (debug) qDebug() << PDEBUG; // menu actions + connect(&timer, SIGNAL(timeout()), this, SLOT(update())); connect(ui->actionEnable, SIGNAL(triggered(bool)), this, SLOT(mainTabEnableProfile())); connect(ui->actionEdit, SIGNAL(triggered(bool)), this, SLOT(mainTabEditProfile())); connect(ui->actionRefresh, SIGNAL(triggered(bool)), this, SLOT(updateMainTab())); diff --git a/sources/gui/src/mainwidget.h b/sources/gui/src/mainwidget.h index cc83e5f..aac7f25 100644 --- a/sources/gui/src/mainwidget.h +++ b/sources/gui/src/mainwidget.h @@ -20,6 +20,7 @@ #include #include +#include #include @@ -68,6 +69,7 @@ private: void createActions(); QString configPath; bool debug = false; + QTimer timer; bool useHelper = true; // configuration QMap configuration; diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index ca5ac4a..d055eb0 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -51,10 +51,8 @@ #include "wifimenuwidget.h" -MainWindow::MainWindow(QWidget *parent, - const QMap args, - QTranslator *qtAppTranslator, - QTranslator *appTranslator) +MainWindow::MainWindow(QWidget *parent, const QVariantMap args, + QTranslator *qtAppTranslator, QTranslator *appTranslator) : QMainWindow(parent), configPath(args[QString("config")].toString()), debug(args[QString("debug")].toBool()), @@ -369,7 +367,7 @@ void MainWindow::storeToolBars() } -void MainWindow::updateConfiguration(const QMap args) +void MainWindow::updateConfiguration(const QVariantMap args) { if (debug) qDebug() << PDEBUG; diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index 12c4a55..5974233 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -43,7 +43,7 @@ class MainWindow : public QMainWindow public: explicit MainWindow(QWidget *parent = 0, - const QMap args = QMap(), + const QVariantMap args = QVariantMap(), QTranslator *qtAppTranslator = 0, QTranslator *appTranslator = 0); ~MainWindow(); @@ -82,7 +82,7 @@ public slots: void setTab(int tab); void showMessage(const bool status); void storeToolBars(); - void updateConfiguration(const QMap args = QMap()); + void updateConfiguration(const QVariantMap args = QVariantMap()); void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea); signals: diff --git a/sources/gui/src/messages.cpp b/sources/gui/src/messages.cpp index 0d7dff9..a049c08 100644 --- a/sources/gui/src/messages.cpp +++ b/sources/gui/src/messages.cpp @@ -29,9 +29,9 @@ QString errorMessage() } -QMap getArgs() +QVariantMap getArgs() { - QMap args; + QVariantMap args; // windows args[QString("detached")] = false; args[QString("minimized")] = static_cast(0); diff --git a/sources/gui/src/messages.h b/sources/gui/src/messages.h index 6535478..3835dc3 100644 --- a/sources/gui/src/messages.h +++ b/sources/gui/src/messages.h @@ -25,7 +25,7 @@ QString errorMessage(); -QMap getArgs(); +QVariantMap getArgs(); QString helpMessage(); QString infoMessage(); QString versionMessage(); diff --git a/sources/gui/src/newprofilewidget.cpp b/sources/gui/src/newprofilewidget.cpp index 93346b6..ca726dc 100644 --- a/sources/gui/src/newprofilewidget.cpp +++ b/sources/gui/src/newprofilewidget.cpp @@ -425,7 +425,9 @@ void NewProfileWidget::profileTabOpenInEditor() return mainWindow->emitNeedToBeConfigured(); } + QString directory = QDir(configuration[QString("PROFILE_DIR")]).absolutePath(); QString profile = QFileInfo(ui->comboBox_profile->currentText()).fileName(); + profile = QString("%1/%2").arg(directory).arg(profile); QString cmd = QString("%1 %2 %3").arg(configuration[QString("SUDO_PATH")]) .arg(configuration[QString("EDITOR_PATH")]) .arg(profile); diff --git a/sources/gui/src/settingswindow.cpp b/sources/gui/src/settingswindow.cpp index 53ca994..3c455a2 100644 --- a/sources/gui/src/settingswindow.cpp +++ b/sources/gui/src/settingswindow.cpp @@ -247,6 +247,8 @@ void SettingsWindow::saveSettings() 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")]); @@ -458,6 +460,7 @@ QMap SettingsWindow::readSettings() 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())); @@ -487,6 +490,7 @@ QMap SettingsWindow::readSettings() 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(); @@ -523,6 +527,7 @@ void SettingsWindow::setSettings(const QMap config) 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")]); @@ -556,6 +561,7 @@ void SettingsWindow::setSettings(const QMap config) 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")]); @@ -586,6 +592,8 @@ QMap SettingsWindow::getSettings(QString fileName) config[QString("LANGUAGE")] = Language::defineLanguage(fileName, QString()); settings.beginGroup(QString("Common")); config[QString("LANGUAGE")] = settings.value(QString("LANGUAGE"), QString("en")).toString(); + config[QString("MAINUPDATE")] = settings.value(QString("MAINUPDATE"), QString("0")).toString(); + config[QString("WIFIUPDATE")] = settings.value(QString("WIFIUPDATE"), QString("0")).toString(); config[QString("SYSTRAY")] = settings.value(QString("SYSTRAY"), QString("true")).toString(); config[QString("CLOSETOTRAY")] = settings.value(QString("CLOSETOTRAY"), QString("true")).toString(); config[QString("STARTTOTRAY")] = settings.value(QString("STARTTOTRAY"), QString("false")).toString(); diff --git a/sources/gui/src/settingswindow.ui b/sources/gui/src/settingswindow.ui index 76881f6..b95765d 100644 --- a/sources/gui/src/settingswindow.ui +++ b/sources/gui/src/settingswindow.ui @@ -190,6 +190,66 @@ + + + + + + + 1 + 0 + + + + Main tab autoupdate, sec + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 2 + 0 + + + + + + + + + + + + + 1 + 0 + + + + WiFi tab autoupdate, sec + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 2 + 0 + + + + + + @@ -642,8 +702,8 @@ 0 0 - 436 - 173 + 542 + 330 @@ -898,8 +958,8 @@ 0 0 - 436 - 45 + 542 + 330 @@ -983,8 +1043,8 @@ 0 0 - 239 - 194 + 542 + 330 diff --git a/sources/gui/src/wifimenuwidget.cpp b/sources/gui/src/wifimenuwidget.cpp index 21a09d0..5d9d6a9 100644 --- a/sources/gui/src/wifimenuwidget.cpp +++ b/sources/gui/src/wifimenuwidget.cpp @@ -47,6 +47,10 @@ WiFiMenuWidget::WiFiMenuWidget(QWidget *parent, const QMap set ui->tableWidget_wifi->setColumnHidden(6, true); updateToolBarState(static_cast(configuration[QString("WIFI_TOOLBAR")].toInt())); + // auto update + timer.setSingleShot(true); + timer.setInterval(configuration[QString("WIFIUPDATE")].toInt() * 1000); + createActions(); } @@ -73,6 +77,8 @@ void WiFiMenuWidget::update() updateWifiTab(); updateMenuWifi(); + + if (timer.interval() != 0) return timer.start(); } @@ -430,6 +436,7 @@ void WiFiMenuWidget::createActions() if (debug) qDebug() << PDEBUG; // menu actions + connect(&timer, SIGNAL(timeout()), this, SLOT(update())); connect(ui->actionFunc, SIGNAL(triggered(bool)), this, SLOT(wifiTabShowInfo())); connect(ui->actionRefresh, SIGNAL(triggered(bool)), this, SLOT(updateWifiTab())); connect(ui->actionStart, SIGNAL(triggered(bool)), this, SLOT(wifiTabStart())); diff --git a/sources/gui/src/wifimenuwidget.h b/sources/gui/src/wifimenuwidget.h index 2976bf7..48e3f78 100644 --- a/sources/gui/src/wifimenuwidget.h +++ b/sources/gui/src/wifimenuwidget.h @@ -20,6 +20,7 @@ #include #include +#include #include @@ -70,6 +71,7 @@ private: void createActions(); bool debug = false; bool hiddenNetwork = false; + QTimer timer; bool useHelper = true; // configuration QMap configuration; diff --git a/sources/helper/netctl-gui.conf b/sources/helper/netctl-gui.conf index 7138b80..7fc3368 100644 --- a/sources/helper/netctl-gui.conf +++ b/sources/helper/netctl-gui.conf @@ -6,6 +6,12 @@ [Common] # application language LANGUAGE=en +# auto update interval for main tab in seconds +# 0 means there is no updates +MAINUPDATE=0 +# auto update interval for wifi tab in seconds +# 0 means there is no updates +WIFIUPDATE=0 # create system tray icon. # This option is not recognized by netctlgui-helper SYSTRAY=true diff --git a/sources/helper/netctl-gui.conf.5 b/sources/helper/netctl-gui.conf.5 index 46913e9..e48933a 100644 --- a/sources/helper/netctl-gui.conf.5 +++ b/sources/helper/netctl-gui.conf.5 @@ -48,6 +48,8 @@ service name. This option is not recognized by path to directory which contains interface information .IP "LANGUAGE=en" application language +.IP "MAINUPDATE=0" +main tab autoupdate interval in seconds. 0 is disable autoupdate .IP "NETCTL_PATH=/usr/bin/netctl" path to .BR netctl (1) @@ -96,6 +98,8 @@ use .BR netctlgui-helper (1) if it is available. This option is not recognized by .BR netctlgui-helper (1) +.IP "WIFIUPDATE=0" +WiFi tab autoupdate interval in seconds. 0 is disable autoupdate .IP "WPACLI_PATH=/usr/bin/wpa_cli" path to .BR wpa_cli (8) diff --git a/sources/helper/src/controladaptor.cpp b/sources/helper/src/controladaptor.cpp index 5e72c75..93341f6 100644 --- a/sources/helper/src/controladaptor.cpp +++ b/sources/helper/src/controladaptor.cpp @@ -112,7 +112,7 @@ QString ControlAdaptor::SecurityDocs() bool ControlAdaptor::SelfDestruct(const QString approve) { - if (approve == QString("Yes, please")) return SelfDestruct(approve); + if (approve == QString("Yes please")) return SelfDestruct(approve); return false; } diff --git a/sources/helper/src/main.cpp b/sources/helper/src/main.cpp index 412af8c..32a5fd1 100644 --- a/sources/helper/src/main.cpp +++ b/sources/helper/src/main.cpp @@ -50,7 +50,7 @@ bool existingSessionOperation(const QString operation) int main(int argc, char *argv[]) { - QMap args = getArgs(); + QVariantMap args = getArgs(); // reading for (int i=1; i getArgs() +QVariantMap getArgs() { - QMap args; + QVariantMap args; args[QString("config")] = QString("%1/.config/netctl-gui.conf").arg(QDir::homePath()); args[QString("debug")] = false; args[QString("nodaemon")] = false; diff --git a/sources/helper/src/messages.h b/sources/helper/src/messages.h index 6535478..3835dc3 100644 --- a/sources/helper/src/messages.h +++ b/sources/helper/src/messages.h @@ -25,7 +25,7 @@ QString errorMessage(); -QMap getArgs(); +QVariantMap getArgs(); QString helpMessage(); QString infoMessage(); QString versionMessage(); diff --git a/sources/helper/src/netctlhelper.cpp b/sources/helper/src/netctlhelper.cpp index b8838ec..3e01fc6 100644 --- a/sources/helper/src/netctlhelper.cpp +++ b/sources/helper/src/netctlhelper.cpp @@ -34,7 +34,7 @@ #include "version.h" -NetctlHelper::NetctlHelper(QObject *parent, QMap args) +NetctlHelper::NetctlHelper(QObject *parent, QVariantMap args) : QObject(parent), configPath(args[QString("config")].toString()), debug(args[QString("debug")].toBool()), diff --git a/sources/helper/src/netctlhelper.h b/sources/helper/src/netctlhelper.h index c46ed1f..f6c500e 100644 --- a/sources/helper/src/netctlhelper.h +++ b/sources/helper/src/netctlhelper.h @@ -29,7 +29,7 @@ class NetctlHelper : public QObject public: explicit NetctlHelper(QObject *parent = 0, - QMap args = QMap()); + QVariantMap args = QVariantMap()); ~NetctlHelper(); QStringList printSettings(); diff --git a/sources/plasmoid-kf5/package/metadata.desktop b/sources/plasmoid-kf5/package/metadata.desktop index f2c34dc..9ef36a0 100644 --- a/sources/plasmoid-kf5/package/metadata.desktop +++ b/sources/plasmoid-kf5/package/metadata.desktop @@ -14,7 +14,7 @@ X-Plasma-RemoteLocation= X-KDE-PluginInfo-Author=Evgeniy Alekseev X-KDE-PluginInfo-Email=esalexeev@gmail.com X-KDE-PluginInfo-Name=org.kde.plasma.netctl -X-KDE-PluginInfo-Version=1.4.4 +X-KDE-PluginInfo-Version=1.4.5 X-KDE-PluginInfo-Website=http://arcanis.name/projects/netctl-gui X-KDE-PluginInfo-Category=Network X-KDE-PluginInfo-Depends= diff --git a/sources/plasmoid-kf5/plugin/netctladds.cpp b/sources/plasmoid-kf5/plugin/netctladds.cpp index a93df59..4a9b5a5 100644 --- a/sources/plasmoid-kf5/plugin/netctladds.cpp +++ b/sources/plasmoid-kf5/plugin/netctladds.cpp @@ -148,7 +148,7 @@ void NetctlAdds::runCmd(const QString cmd) } -void NetctlAdds::setDataBySource(const QString sourceName, const QMap data) +void NetctlAdds::setDataBySource(const QString sourceName, const QVariantMap data) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Source" << sourceName; @@ -310,11 +310,11 @@ void NetctlAdds::switchToProfileSlot(const bool useHelper, const QString cmd) } -QMap NetctlAdds::readDataEngineConfiguration() +QVariantMap NetctlAdds::readDataEngineConfiguration() { if (debug) qDebug() << PDEBUG; - QMap configuration; + QVariantMap configuration; QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString("plasma-dataengine-netctl.conf")); if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; @@ -336,7 +336,7 @@ QMap NetctlAdds::readDataEngineConfiguration() } -void NetctlAdds::writeDataEngineConfiguration(const QMap configuration) +void NetctlAdds::writeDataEngineConfiguration(const QVariantMap configuration) { if (debug) qDebug() << PDEBUG; diff --git a/sources/plasmoid-kf5/plugin/netctladds.h b/sources/plasmoid-kf5/plugin/netctladds.h index 4b45041..84fd9bb 100644 --- a/sources/plasmoid-kf5/plugin/netctladds.h +++ b/sources/plasmoid-kf5/plugin/netctladds.h @@ -37,7 +37,7 @@ public: Q_INVOKABLE bool isDebugEnabled(); Q_INVOKABLE QString parsePattern(const QString pattern); Q_INVOKABLE void runCmd(const QString cmd); - Q_INVOKABLE void setDataBySource(const QString sourceName, const QMap data); + Q_INVOKABLE void setDataBySource(const QString sourceName, const QVariantMap data); Q_INVOKABLE static void sendNotification(const QString eventId, const QString message); Q_INVOKABLE QString valueByKey(const QString key); // context menu @@ -59,8 +59,8 @@ public: Q_INVOKABLE void switchToProfileSlot(const bool useHelper = true, const QString cmd = QString("/usr/bin/netctl-auto")); // dataengine - Q_INVOKABLE QMap readDataEngineConfiguration(); - Q_INVOKABLE void writeDataEngineConfiguration(const QMap configuration); + Q_INVOKABLE QVariantMap readDataEngineConfiguration(); + Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration); signals: void needToBeUpdated();