diff options
Diffstat (limited to 'wayland')
-rw-r--r-- | wayland/democompositor/apps/applistmodel.cpp | 18 | ||||
-rw-r--r-- | wayland/democompositor/apps/applistmodel.h | 2 |
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); |