Added a signal so plugins know when we update the config

This commit is contained in:
Albert Vaca 2015-09-12 04:46:37 -07:00
parent cfe0e60eb9
commit 4230f4fb44
2 changed files with 21 additions and 1 deletions

View file

@ -22,6 +22,8 @@
#include <QDir> #include <QDir>
#include <QSettings> #include <QSettings>
#include <QDBusMessage>
#include <QDBusConnection>
#include "kdeconnectconfig.h" #include "kdeconnectconfig.h"
@ -29,6 +31,7 @@ struct KdeConnectPluginConfigPrivate
{ {
QDir mConfigDir; QDir mConfigDir;
QSettings* mConfig; QSettings* mConfig;
QDBusMessage signal;
}; };
KdeConnectPluginConfig::KdeConnectPluginConfig(const QString& deviceId, const QString& pluginName) KdeConnectPluginConfig::KdeConnectPluginConfig(const QString& deviceId, const QString& pluginName)
@ -38,6 +41,9 @@ KdeConnectPluginConfig::KdeConnectPluginConfig(const QString& deviceId, const QS
QDir().mkpath(d->mConfigDir.path()); QDir().mkpath(d->mConfigDir.path());
d->mConfig = new QSettings(d->mConfigDir.absoluteFilePath("config"), QSettings::IniFormat); d->mConfig = new QSettings(d->mConfigDir.absoluteFilePath("config"), QSettings::IniFormat);
d->signal = QDBusMessage::createSignal("/kdeconnect/"+deviceId+"/"+pluginName, "org.kde.kdeconnect.config", "configChanged");
QDBusConnection::sessionBus().connect("", "/kdeconnect/"+deviceId+"/"+pluginName, "org.kde.kdeconnect.config", "configChanged", this, SLOT(slotConfigChanged()));
} }
KdeConnectPluginConfig::~KdeConnectPluginConfig() KdeConnectPluginConfig::~KdeConnectPluginConfig()
@ -60,4 +66,10 @@ void KdeConnectPluginConfig::set(const QString& key, const QVariant& value)
{ {
d->mConfig->setValue(key, value); d->mConfig->setValue(key, value);
d->mConfig->sync(); d->mConfig->sync();
QDBusConnection::sessionBus().send(d->signal);
}
void KdeConnectPluginConfig::slotConfigChanged()
{
Q_EMIT configChanged();
} }

View file

@ -21,6 +21,7 @@
#ifndef KDECONNECTPLUGINCONFIG_H #ifndef KDECONNECTPLUGINCONFIG_H
#define KDECONNECTPLUGINCONFIG_H #define KDECONNECTPLUGINCONFIG_H
#include <QObject>
#include <QDir> #include <QDir>
#include <QString> #include <QString>
#include <QStringList> #include <QStringList>
@ -30,8 +31,10 @@
struct KdeConnectPluginConfigPrivate; struct KdeConnectPluginConfigPrivate;
class KDECONNECTCORE_EXPORT KdeConnectPluginConfig class KDECONNECTCORE_EXPORT KdeConnectPluginConfig : public QObject
{ {
Q_OBJECT
public: public:
KdeConnectPluginConfig(const QString& deviceId, const QString& pluginName); KdeConnectPluginConfig(const QString& deviceId, const QString& pluginName);
~KdeConnectPluginConfig(); ~KdeConnectPluginConfig();
@ -59,6 +62,11 @@ public:
return get(key, QVariant(defaultValue)).template value<T>(); //Important note: Awesome template syntax is awesome return get(key, QVariant(defaultValue)).template value<T>(); //Important note: Awesome template syntax is awesome
} }
private Q_SLOTS:
void slotConfigChanged();
Q_SIGNALS:
void configChanged();
private: private:
QScopedPointer<KdeConnectPluginConfigPrivate> d; QScopedPointer<KdeConnectPluginConfigPrivate> d;