From 5e9aa63b4587846acf00d0756669c08bd4becaf2 Mon Sep 17 00:00:00 2001 From: Nikhil Tanwar <2002nikhiltanwar@gmail.com> Date: Thu, 3 Feb 2022 16:36:59 +0530 Subject: [PATCH] Add real-time library monitoring Adds a QFileSystemWatcher to watch over monitor directory. Everytime directoryChange is emitted, it calls asyncLoadMonitorDir --- src/kiwixapp.cpp | 8 ++++++++ src/kiwixapp.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index ddd41a8..01de599 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -101,9 +101,13 @@ void KiwixApp::init() this->openZimFile(message); } }); + connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, [=](QString monitorDir) { + m_library.asyncLoadMonitorDir(monitorDir); + }); QString monitorDir = m_settingsManager.getMonitorDir(); if (monitorDir != "") { m_library.setMonitorDirZims(m_library.getLibraryZimsFromDir(monitorDir)); + m_watcher.addPath(monitorDir); m_library.asyncLoadMonitorDir(monitorDir); } } @@ -281,7 +285,11 @@ bool KiwixApp::isCurrentArticleBookmarked() void KiwixApp::setMonitorDir(const QString &dir) { m_settingsManager.setMonitorDir(dir); m_library.setMonitorDirZims(QStringList()); + for (auto path : m_watcher.directories()) { + m_watcher.removePath(path); + } if (dir != "") { + m_watcher.addPath(dir); m_library.asyncLoadMonitorDir(dir); } } diff --git a/src/kiwixapp.h b/src/kiwixapp.h index 79534a3..268e544 100644 --- a/src/kiwixapp.h +++ b/src/kiwixapp.h @@ -108,6 +108,7 @@ private: kiwix::UpdatableNameMapper m_nameMapper; kiwix::Server m_server; Translation m_translation; + QFileSystemWatcher m_watcher; QAction* mpa_actions[MAX_ACTION];