From bc32662b22ee56bc1b0685ce1f48b107c70947b7 Mon Sep 17 00:00:00 2001 From: Raine Makelainen Date: Mon, 8 Apr 2019 15:36:17 +0300 Subject: [PATCH] [nemo-systemsettings] Add readonly autoConnect property to the Vpn model. Contributes to JB#41419 The autoConnect property of VpnModel is true if there's at least one vpn connection that has autoConnect true. --- src/vpnmodel.cpp | 16 ++++++++++++++++ src/vpnmodel.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/src/vpnmodel.cpp b/src/vpnmodel.cpp index dbaf163..c4fbdeb 100644 --- a/src/vpnmodel.cpp +++ b/src/vpnmodel.cpp @@ -319,6 +319,7 @@ VpnModel::VpnModel(QObject *parent) , credentials_(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/system/privileged/vpn-data")) , provisioningOutputPath_(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/system/privileged/vpn-provisioning")) , bestState_(VpnModel::Idle) + , autoConnect_(false) { qDBusRegisterMetaType(); qDBusRegisterMetaType(); @@ -390,6 +391,11 @@ int VpnModel::bestState() const return static_cast(bestState_); } +bool VpnModel::autoConnect() const +{ + return autoConnect_; +} + void VpnModel::createConnection(const QVariantMap &createProperties) { const QString path(createProperties.value(QString("path")).toString()); @@ -883,6 +889,16 @@ void VpnModel::updateConnection(VpnConnection *conn, const QVariantMap &updatePr } } } + + bool autoConnect = false; + for (int i = 0; i < count(); ++i) { + autoConnect = autoConnect || get(i)->autoConnect(); + } + + if (autoConnect_ != autoConnect) { + autoConnect_ = autoConnect; + autoConnectChanged(); + } } QVariantMap VpnModel::processOpenVpnProvisioningFile(QFile &provisioningFile) diff --git a/src/vpnmodel.h b/src/vpnmodel.h index 4fe7366..2fa08a9 100644 --- a/src/vpnmodel.h +++ b/src/vpnmodel.h @@ -51,6 +51,7 @@ class SYSTEMSETTINGS_EXPORT VpnModel : public ObjectListModel Q_OBJECT Q_PROPERTY(int bestState READ bestState NOTIFY bestStateChanged) + Q_PROPERTY(bool autoConnect READ autoConnect NOTIFY autoConnectChanged) public: enum ConnectionState { @@ -66,6 +67,7 @@ class SYSTEMSETTINGS_EXPORT VpnModel : public ObjectListModel virtual ~VpnModel(); int bestState() const; + bool autoConnect() const; Q_INVOKABLE void createConnection(const QVariantMap &properties); Q_INVOKABLE void modifyConnection(const QString &path, const QVariantMap &properties); @@ -88,6 +90,7 @@ class SYSTEMSETTINGS_EXPORT VpnModel : public ObjectListModel signals: void bestStateChanged(); + void autoConnectChanged(); void connectionStateChanged(const QString &path, int state); private: @@ -130,6 +133,8 @@ class SYSTEMSETTINGS_EXPORT VpnModel : public ObjectListModel CredentialsRepository credentials_; QString provisioningOutputPath_; ConnectionState bestState_; + // True if there's one VPN that has autoConnect true + bool autoConnect_; }; class SYSTEMSETTINGS_EXPORT VpnConnection : public QObject