diff options
Diffstat (limited to 'libsowatch')
-rw-r--r-- | libsowatch/configkey.h | 7 | ||||
-rw-r--r-- | libsowatch/declarativewatchlet.cpp | 3 | ||||
-rw-r--r-- | libsowatch/gconfkey.cpp | 10 | ||||
-rw-r--r-- | libsowatch/gconfkey.h | 3 | ||||
-rw-r--r-- | libsowatch/watchplugininterface.h | 1 |
5 files changed, 22 insertions, 2 deletions
diff --git a/libsowatch/configkey.h b/libsowatch/configkey.h index ef7665e..a30ae67 100644 --- a/libsowatch/configkey.h +++ b/libsowatch/configkey.h @@ -12,7 +12,7 @@ namespace sowatch class SOWATCH_EXPORT ConfigKey : public QObject { Q_OBJECT - Q_PROPERTY(QString key READ key CONSTANT) + Q_PROPERTY(QString key READ key WRITE setKey NOTIFY keyChanged) Q_PROPERTY(QVariant value READ value WRITE set RESET unset NOTIFY changed USER true) Q_PROPERTY(QStringList dirs READ dirs) Q_PROPERTY(QStringList keys READ keys) @@ -21,6 +21,7 @@ public: ConfigKey(QObject *parent = 0); virtual QString key() const = 0; + virtual void setKey(const QString& key) = 0; virtual QVariant value() const = 0; virtual void set(const QVariant& value) = 0; @@ -43,7 +44,11 @@ public: virtual ConfigKey* getSubkey(const QString& subkey, QObject *parent = 0) const = 0; signals: + /** Key property changed (via setKey) */ + void keyChanged(); + /** Value changed. */ void changed(); + /** A value of a subkey changed. */ void subkeyChanged(const QString& subkey); }; diff --git a/libsowatch/declarativewatchlet.cpp b/libsowatch/declarativewatchlet.cpp index 275af2a..68d6c28 100644 --- a/libsowatch/declarativewatchlet.cpp +++ b/libsowatch/declarativewatchlet.cpp @@ -1,6 +1,7 @@ #include <QtCore/QDebug> #include <QtDeclarative/QtDeclarative> #include "watchserver.h" +#include "gconfkey.h" #include "declarativewatchwrapper.h" #include "declarativewatchlet.h" @@ -20,6 +21,8 @@ DeclarativeWatchlet::DeclarativeWatchlet(WatchServer* server, const QString& id) if (!_registered) { qmlRegisterUncreatableType<DeclarativeWatchWrapper>("com.javispedro.sowatch", 1, 0, "Watch", "Watch is only available via the 'watch' object"); + qmlRegisterType<ConfigKey>(); + qmlRegisterType<GConfKey>("com.javispedro.sowatch", 1, 0, "GConfKey"); _registered = true; } diff --git a/libsowatch/gconfkey.cpp b/libsowatch/gconfkey.cpp index c6becc4..da6aeff 100644 --- a/libsowatch/gconfkey.cpp +++ b/libsowatch/gconfkey.cpp @@ -141,6 +141,16 @@ QString GConfKey::key() const return _key; } +void GConfKey::setKey(const QString &key) +{ + _key = key; + if (_key.endsWith("/")) { + _key.chop(1); + } + emit keyChanged(); + emit changed(); +} + QVariant GConfKey::value() const { return value(QString()); diff --git a/libsowatch/gconfkey.h b/libsowatch/gconfkey.h index c9074ea..d2bf088 100644 --- a/libsowatch/gconfkey.h +++ b/libsowatch/gconfkey.h @@ -11,10 +11,11 @@ class SOWATCH_EXPORT GConfKey : public ConfigKey Q_OBJECT public: - GConfKey(const QString& key, QObject *parent = 0); + GConfKey(const QString& key = QString(), QObject *parent = 0); ~GConfKey(); QString key() const; + void setKey(const QString &key); QVariant value() const; void set(const QVariant& value); diff --git a/libsowatch/watchplugininterface.h b/libsowatch/watchplugininterface.h index 804f7f5..0ab2c4b 100644 --- a/libsowatch/watchplugininterface.h +++ b/libsowatch/watchplugininterface.h @@ -20,6 +20,7 @@ public: virtual QStringList drivers() = 0; virtual WatchScanner* getScanner(QObject *parent = 0) = 0; + virtual QUrl getConfigQmlUrl(const QString& driver) = 0; virtual Watch* getWatch(const QString& driver, ConfigKey* settings, QObject *parent = 0) = 0; }; |