diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 2fb9459..f8f92df 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -118,6 +118,9 @@ ContentManager::ContentManager(Library* library) if ( DownloadManager::downloadingFunctionalityAvailable() ) { startDownloadUpdaterThread(); } + + connect(&m_watcher, &QFileSystemWatcher::directoryChanged, + this, &ContentManager::asyncUpdateLibraryFromDir); } void ContentManager::updateModel() diff --git a/src/contentmanager.h b/src/contentmanager.h index f5ab908..12c5bdd 100644 --- a/src/contentmanager.h +++ b/src/contentmanager.h @@ -70,6 +70,7 @@ public: // functions QStringList getCategories() const { return m_categories; } LanguageList getLanguages() const { return m_languages; } + void setMonitoredDirectories(QStringSet dirList); void setMonitorDirZims(QString monitorDir, QStringSet zimList); void asyncUpdateLibraryFromDir(QString dir); @@ -150,6 +151,7 @@ private: // data ContentManagerModel *managerModel; QMutex remoteLibraryLocker; + QFileSystemWatcher m_watcher; QMutex m_updateFromDirMutex; QMap m_knownZimsInDir; }; diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index d53b769..4594615 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -104,9 +104,6 @@ void KiwixApp::init() this->openZimFile(message); } }); - connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, [=](QString monitorDir) { - mp_manager->asyncUpdateLibraryFromDir(monitorDir); - }); /* Restore Tabs before directory monitoring to ensure we know what tabs user had. */ restoreTabs(); @@ -119,20 +116,20 @@ void KiwixApp::setupDirectoryMonitoring() QString monitorDir = m_settingsManager.getMonitorDir(); QString downloadDir = m_settingsManager.getDownloadDir(); auto dirList = QSet({monitorDir, downloadDir}); - setMonitoredDirectories(dirList); + mp_manager->setMonitoredDirectories(dirList); } -void KiwixApp::setMonitoredDirectories(QSet dirList) +void ContentManager::setMonitoredDirectories(QStringSet dirList) { for (auto path : m_watcher.directories()) { m_watcher.removePath(path); } for (auto dir : dirList) { if (dir != "") { - const auto zimsInDir = m_library.getLibraryZimsFromDir(dir); - mp_manager->setMonitorDirZims(dir, zimsInDir); + const auto zimsInDir = mp_library->getLibraryZimsFromDir(dir); + setMonitorDirZims(dir, zimsInDir); m_watcher.addPath(dir); - mp_manager->asyncUpdateLibraryFromDir(dir); + asyncUpdateLibraryFromDir(dir); } } } diff --git a/src/kiwixapp.h b/src/kiwixapp.h index ca178ac..c9ed3f7 100644 --- a/src/kiwixapp.h +++ b/src/kiwixapp.h @@ -122,13 +122,11 @@ private: std::shared_ptr mp_nameMapper; kiwix::Server m_server; Translation m_translation; - QFileSystemWatcher m_watcher; QSettings* mp_session; QAction* mpa_actions[MAX_ACTION]; void setupDirectoryMonitoring(); - void setMonitoredDirectories(QSet dirList); QString findLibraryDirectory(); void restoreTabs(); void loadAndInstallTranslations(QTranslator& translator, const QString& filename, const QString& directory);