aboutsummaryrefslogtreecommitdiff
path: root/src/core/kconfigwatcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/kconfigwatcher.h')
-rw-r--r--src/core/kconfigwatcher.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/core/kconfigwatcher.h b/src/core/kconfigwatcher.h
new file mode 100644
index 00000000..b73d3fc2
--- /dev/null
+++ b/src/core/kconfigwatcher.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2018 David Edmundson <davidedmundson@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KCONFIGWATCHER_H
+#define KCONFIGWATCHER_H
+
+#include <QObject>
+
+#include <KSharedConfig>
+#include <KConfigGroup>
+
+#include <kconfigcore_export.h>
+
+class KConfigWatcherPrivate;
+
+/*
+ * Notifies when another client has updated this config file with the Notify flag set.
+ * @since 5.51
+ */
+class KCONFIGCORE_EXPORT KConfigWatcher: public QObject
+{
+ Q_OBJECT
+public:
+ typedef QSharedPointer<KConfigWatcher> Ptr;
+
+ /*
+ * Instantiate a ConfigWatcher for a given config
+ *
+ * @note any additional config sources should be set before this point.
+ */
+ static Ptr create(const KSharedConfig::Ptr &config);
+
+Q_SIGNALS:
+ /**
+ * Emitted when a config group has changed
+ * The config will be reloaded before this signal is emitted
+ *
+ * @arg group the config group that has changed
+ * @arg names a list of entries that have changed within that group
+ */
+ void configChanged(const KConfigGroup &group, const QByteArrayList &names);
+
+private Q_SLOTS:
+ void onConfigChangeNotification(const QHash<QString, QByteArrayList> &changes);
+
+private:
+ KConfigWatcher(const KSharedConfig::Ptr &config);
+ Q_DISABLE_COPY(KConfigWatcher)
+ KConfigWatcherPrivate *const d;
+};
+
+#endif