summaryrefslogtreecommitdiffstats
path: root/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'wayland')
-rw-r--r--wayland/democompositor/apps/applistmodel.cpp18
-rw-r--r--wayland/democompositor/apps/applistmodel.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/wayland/democompositor/apps/applistmodel.cpp b/wayland/democompositor/apps/applistmodel.cpp
index 10c4c15..8602588 100644
--- a/wayland/democompositor/apps/applistmodel.cpp
+++ b/wayland/democompositor/apps/applistmodel.cpp
@@ -53,6 +53,7 @@
#include "applog.h"
#include <QtCore/QDirIterator>
+#include <QtCore/QFileSystemWatcher>
static QHash<int, QByteArray> modelRoles()
{
@@ -111,6 +112,23 @@ QHash<int, QByteArray> AppListModel::roleNames() const
return m_roles;
}
+/*!
+ * Returns true if the directory can be watched
+ *
+ * Parse all JSON application files from the given directory
+ * and monitor it for changes.
+ */
+bool AppListModel::addAndWatchDir(const QString& dirName)
+{
+ auto watcher = new QFileSystemWatcher(this);
+ connect(watcher, &QFileSystemWatcher::directoryChanged, this, &AppListModel::addDir);
+ auto res = watcher->addPath(dirName);
+ addDir(dirName);
+
+ qCDebug(apps) << "addAndWatchDir" << dirName << "result: " << res;
+ return res;
+}
+
void AppListModel::addFile(const QString& fileName)
{
beginResetModel();
diff --git a/wayland/democompositor/apps/applistmodel.h b/wayland/democompositor/apps/applistmodel.h
index 1cd79b4..b177ece 100644
--- a/wayland/democompositor/apps/applistmodel.h
+++ b/wayland/democompositor/apps/applistmodel.h
@@ -79,6 +79,8 @@ public:
QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
public Q_SLOTS:
+ bool addAndWatchDir(const QString& dirName);
+
void addFile(const QString& fileName);
void addDir(const QString& dirName);