Add real-time library monitoring

Adds a QFileSystemWatcher to watch over monitor directory.
Everytime directoryChange is emitted, it calls asyncLoadMonitorDir
This commit is contained in:
Nikhil Tanwar 2022-02-03 16:36:59 +05:30 committed by Emmanuel Engelhart
parent e0337d0caf
commit 5e9aa63b45
No known key found for this signature in database
GPG Key ID: 120B30D020B553D3
2 changed files with 9 additions and 0 deletions

View File

@ -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);
}
}

View File

@ -108,6 +108,7 @@ private:
kiwix::UpdatableNameMapper m_nameMapper;
kiwix::Server m_server;
Translation m_translation;
QFileSystemWatcher m_watcher;
QAction* mpa_actions[MAX_ACTION];