implement autoupdate feature

fix bug with invalid profile path using by external editor
This commit is contained in:
arcan1s 2015-06-03 14:31:09 +03:00
parent e26da85b5f
commit c3aa3f0c8f
24 changed files with 132 additions and 32 deletions

View File

@ -1,3 +1,7 @@
* gui
+ implement autoupdate feature
- fix invalid profile path for the external editor
Ver.1.4.5
---------
* plasmoid

View File

@ -62,7 +62,7 @@ unsigned int getUidFromSession(const int type = 0)
int main(int argc, char *argv[])
{
QMap<QString, QVariant> args = getArgs();
QVariantMap args = getArgs();
// reading
for (int i=1; i<argc; i++) {
if (QString(argv[i]) == QString("--detached")) {

View File

@ -52,6 +52,10 @@ MainWidget::MainWidget(QWidget *parent, const QMap<QString, QString> 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()));

View File

@ -20,6 +20,7 @@
#include <QMainWindow>
#include <QTableWidgetItem>
#include <QTimer>
#include <netctlgui/netctlgui.h>
@ -68,6 +69,7 @@ private:
void createActions();
QString configPath;
bool debug = false;
QTimer timer;
bool useHelper = true;
// configuration
QMap<QString, QString> configuration;

View File

@ -51,10 +51,8 @@
#include "wifimenuwidget.h"
MainWindow::MainWindow(QWidget *parent,
const QMap<QString, QVariant> 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<QString, QVariant> args)
void MainWindow::updateConfiguration(const QVariantMap args)
{
if (debug) qDebug() << PDEBUG;

View File

@ -43,7 +43,7 @@ class MainWindow : public QMainWindow
public:
explicit MainWindow(QWidget *parent = 0,
const QMap<QString, QVariant> args = QMap<QString, QVariant>(),
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<QString, QVariant> args = QMap<QString, QVariant>());
void updateConfiguration(const QVariantMap args = QVariantMap());
void updateToolBarState(const Qt::ToolBarArea area = Qt::TopToolBarArea);
signals:

View File

@ -29,9 +29,9 @@ QString errorMessage()
}
QMap<QString, QVariant> getArgs()
QVariantMap getArgs()
{
QMap<QString, QVariant> args;
QVariantMap args;
// windows
args[QString("detached")] = false;
args[QString("minimized")] = static_cast<int>(0);

View File

@ -25,7 +25,7 @@
QString errorMessage();
QMap<QString, QVariant> getArgs();
QVariantMap getArgs();
QString helpMessage();
QString infoMessage();
QString versionMessage();

View File

@ -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);

View File

@ -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<QString, QString> 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<QString, QString> 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<QString, QString> 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<Qt::ToolBarArea>(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<QString, QString> 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<Qt::ToolBarArea>(config[QString("WIFI_TOOLBAR")].toInt()));
ui->comboBox_wifiToolbar->setCurrentIndex(index);
ui->lineEdit_wpaCliPath->setText(config[QString("WPACLI_PATH")]);
@ -586,6 +592,8 @@ QMap<QString, QString> 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();

View File

@ -190,6 +190,66 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_mainAutoUpdate">
<item>
<widget class="QLabel" name="label_mainAutoUpdate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Main tab autoupdate, sec</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_mainAutoUpdate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>2</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_wifiAutoUpdate">
<item>
<widget class="QLabel" name="label_wifiAutoUpdate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>WiFi tab autoupdate, sec</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_wifiAutoUpdate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>2</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_enableTray">
<item>
@ -642,8 +702,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>436</width>
<height>173</height>
<width>542</width>
<height>330</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@ -898,8 +958,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>436</width>
<height>45</height>
<width>542</width>
<height>330</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@ -983,8 +1043,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>239</width>
<height>194</height>
<width>542</width>
<height>330</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">

View File

@ -47,6 +47,10 @@ WiFiMenuWidget::WiFiMenuWidget(QWidget *parent, const QMap<QString, QString> set
ui->tableWidget_wifi->setColumnHidden(6, true);
updateToolBarState(static_cast<Qt::ToolBarArea>(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()));

View File

@ -20,6 +20,7 @@
#include <QApplication>
#include <QMainWindow>
#include <QTimer>
#include <netctlgui/netctlgui.h>
@ -70,6 +71,7 @@ private:
void createActions();
bool debug = false;
bool hiddenNetwork = false;
QTimer timer;
bool useHelper = true;
// configuration
QMap<QString, QString> configuration;

View File

@ -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

View File

@ -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)

View File

@ -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;
}

View File

@ -50,7 +50,7 @@ bool existingSessionOperation(const QString operation)
int main(int argc, char *argv[])
{
QMap<QString, QVariant> args = getArgs();
QVariantMap args = getArgs();
// reading
for (int i=1; i<argc; i++) {
if ((QString(argv[i]) == QString("-c")) || (QString(argv[i]) == QString("--config"))) {

View File

@ -29,9 +29,9 @@ QString errorMessage()
}
QMap<QString, QVariant> getArgs()
QVariantMap getArgs()
{
QMap<QString, QVariant> args;
QVariantMap args;
args[QString("config")] = QString("%1/.config/netctl-gui.conf").arg(QDir::homePath());
args[QString("debug")] = false;
args[QString("nodaemon")] = false;

View File

@ -25,7 +25,7 @@
QString errorMessage();
QMap<QString, QVariant> getArgs();
QVariantMap getArgs();
QString helpMessage();
QString infoMessage();
QString versionMessage();

View File

@ -34,7 +34,7 @@
#include "version.h"
NetctlHelper::NetctlHelper(QObject *parent, QMap<QString, QVariant> args)
NetctlHelper::NetctlHelper(QObject *parent, QVariantMap args)
: QObject(parent),
configPath(args[QString("config")].toString()),
debug(args[QString("debug")].toBool()),

View File

@ -29,7 +29,7 @@ class NetctlHelper : public QObject
public:
explicit NetctlHelper(QObject *parent = 0,
QMap<QString, QVariant> args = QMap<QString, QVariant>());
QVariantMap args = QVariantMap());
~NetctlHelper();
QStringList printSettings();

View File

@ -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=

View File

@ -148,7 +148,7 @@ void NetctlAdds::runCmd(const QString cmd)
}
void NetctlAdds::setDataBySource(const QString sourceName, const QMap<QString, QVariant> 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<QString, QVariant> NetctlAdds::readDataEngineConfiguration()
QVariantMap NetctlAdds::readDataEngineConfiguration()
{
if (debug) qDebug() << PDEBUG;
QMap<QString, QVariant> 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<QString, QVariant> NetctlAdds::readDataEngineConfiguration()
}
void NetctlAdds::writeDataEngineConfiguration(const QMap<QString, QVariant> configuration)
void NetctlAdds::writeDataEngineConfiguration(const QVariantMap configuration)
{
if (debug) qDebug() << PDEBUG;

View File

@ -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<QString, QVariant> 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<QString, QVariant> readDataEngineConfiguration();
Q_INVOKABLE void writeDataEngineConfiguration(const QMap<QString, QVariant> configuration);
Q_INVOKABLE QVariantMap readDataEngineConfiguration();
Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration);
signals:
void needToBeUpdated();