From ee3968ffa08d4e0fcbad87765efa3aeb32ff0554 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 9 Mar 2014 23:31:41 +0000 Subject: [PATCH] Settings stored persistently using QSettings. --- qml/pages/ConfigurePage.qml | 1 - qml/pages/ConnectPage.qml | 1 - src/OpenVPNUI.cpp | 7 ++++ src/vpncontrol.cpp | 69 ++++++++++++++++++++++++++++--------- src/vpncontrol.h | 5 +++ 5 files changed, 65 insertions(+), 18 deletions(-) diff --git a/qml/pages/ConfigurePage.qml b/qml/pages/ConfigurePage.qml index ecb75da..1692d1e 100644 --- a/qml/pages/ConfigurePage.qml +++ b/qml/pages/ConfigurePage.qml @@ -34,7 +34,6 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 -import QtQuick.Dialogs 1.0 Dialog { id: configurePage diff --git a/qml/pages/ConnectPage.qml b/qml/pages/ConnectPage.qml index fcc2222..23bd65b 100644 --- a/qml/pages/ConnectPage.qml +++ b/qml/pages/ConnectPage.qml @@ -35,7 +35,6 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 - Page { id: connectPage diff --git a/src/OpenVPNUI.cpp b/src/OpenVPNUI.cpp index c998750..40e28ef 100644 --- a/src/OpenVPNUI.cpp +++ b/src/OpenVPNUI.cpp @@ -56,6 +56,13 @@ int main(int argc, char *argv[]) // To display the view, call "show()" (will show fullscreen on device). QScopedPointer app(SailfishApp::application(argc, argv)); + + // These values are used by QSettings to access the config file in + // /home/nemo/.local/share/flypig/OpenVPNUI.conf + QCoreApplication::setOrganizationName("flypig"); + QCoreApplication::setOrganizationDomain("www.flypig.co.uk"); + QCoreApplication::setApplicationName("OpenVPNUI"); + QScopedPointer view(SailfishApp::createView()); view->setSource(SailfishApp::pathTo("qml/OpenVPNUI.qml")); diff --git a/src/vpncontrol.cpp b/src/vpncontrol.cpp index 1935194..7bd002f 100644 --- a/src/vpncontrol.cpp +++ b/src/vpncontrol.cpp @@ -1,16 +1,26 @@ #include "vpncontrol.h" #include "stdio.h" +#include + VPNControl::VPNControl(QObject *parent) : QObject(parent), vpnProcess(NULL), vpnStatus(VPNSTATUS_INVALID), server(""), - port(1174), + port(1194), compressed(true), useTLS(true), tlsDirection(1) { + // Read in the settings + QSettings settings; + + server = settings.value("server", "127.0.0.1").toString(); + port = settings.value("port", 1194).toInt(); + compressed = settings.value("compressed", true).toBool(); + useTLS = settings.value("useTLS", true).toBool(); + tlsDirection = settings.value("tlsDirection", 1).toInt(); } void VPNControl::initialise() @@ -33,9 +43,12 @@ int VPNControl::getTlsDirection() const void VPNControl::setTlsDirection(int value) { - printf ("TLS direction set to %d\n", value); - tlsDirection = value; - emit tlsDirectionChanged (value); + if (value != tlsDirection) { + printf ("TLS direction set to %d\n", value); + tlsDirection = value; + settingsSetValue("tlsDirection", value); + emit tlsDirectionChanged (value); + } } bool VPNControl::getUseTLS() const @@ -45,9 +58,12 @@ bool VPNControl::getUseTLS() const void VPNControl::setUseTLS(bool value) { - printf ("Use TLS set to %d\n", value); - useTLS = value; - emit useTLSChanged(useTLS); + if (value != useTLS) { + printf ("Use TLS set to %d\n", value); + useTLS = value; + settingsSetValue("useTLS", value); + emit useTLSChanged(useTLS); + } } bool VPNControl::getCompressed() const @@ -57,9 +73,12 @@ bool VPNControl::getCompressed() const void VPNControl::setCompressed(bool value) { - printf ("Use compression set to %d\n", value); - compressed = value; - emit compressedChanged(compressed); + if (value != compressed) { + printf ("Use compression set to %d\n", value); + compressed = value; + settingsSetValue("compressed", value); + emit compressedChanged(compressed); + } } unsigned int VPNControl::getPort() const @@ -69,9 +88,12 @@ unsigned int VPNControl::getPort() const void VPNControl::setPort(unsigned int value) { - printf ("Port set to %d\n", value); - port = value; - emit portChanged(port); + if (value != port) { + printf ("Port set to %d\n", value); + port = value; + settingsSetValue("port", value); + emit portChanged(port); + } } QString VPNControl::getServer() const @@ -81,9 +103,24 @@ QString VPNControl::getServer() const void VPNControl::setServer(const QString &value) { - printf ("Server set to %s\n", value.toUtf8().constData()); - server = value; - emit serverChanged(server); + if (value != server) { + printf ("Server set to %s\n", value.toUtf8().constData()); + server = value; + settingsSetValue("server", value); + emit serverChanged(server); + } +} + +void VPNControl::settingsSetValue (QString key, QString value) { + QSettings settings; + + settings.setValue(key, value); +} + +void VPNControl::settingsSetValue (QString key, int value) { + QSettings settings; + + settings.setValue(key, value); } void VPNControl::vpnConnect() { diff --git a/src/vpncontrol.h b/src/vpncontrol.h index 909f3b2..542ec95 100644 --- a/src/vpncontrol.h +++ b/src/vpncontrol.h @@ -30,17 +30,22 @@ private: QProcess * vpnProcess; VPNSTATUS vpnStatus; QStringList arguments; + + // Configuration options QString server; unsigned int port; bool compressed; bool useTLS; int tlsDirection; + void collectArguments (); void setStatus (VPNSTATUS newStatus); void addArgument (QString key, QString value); void addArgument (QString key); void addOption (QString key, bool add); void addValue (QString key); + void settingsSetValue (QString key, QString value); + void settingsSetValue (QString key, int value); public: explicit VPNControl(QObject *parent = 0); -- 2.25.1