diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 0e13700..79cdf09 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -898,23 +898,25 @@ ContentManager::QStringSet ContentManager::handleNewZimFiles(const QStringSet& z return successfullyAddedZims; } -void ContentManager::updateLibraryFromDir(QString monitorDir) +void ContentManager::updateLibraryFromDir(QString dirPath) { QMutexLocker locker(&m_updateFromDirMutex); - const QDir dir(monitorDir); - const QStringSet oldDirEntries = m_knownZimsInDir[monitorDir]; - QStringSet newDirEntries; + const QDir dir(dirPath); + const QStringSet zimsPresentInLib = m_knownZimsInDir[dirPath]; + + QStringSet zimsInDir; for (const auto &file : dir.entryList({"*.zim"})) { - newDirEntries.insert(QDir::toNativeSeparators(monitorDir + "/" + file)); + zimsInDir.insert(QDir::toNativeSeparators(dirPath + "/" + file)); } - const QStringSet addedZims = newDirEntries - oldDirEntries; - const QStringSet removedZims = oldDirEntries - newDirEntries; + + const QStringSet zimsNotInLib = zimsInDir - zimsPresentInLib; + const QStringSet removedZims = zimsPresentInLib - zimsInDir; handleDisappearedZimFiles(removedZims); - const auto successfullyAddedZims = handleNewZimFiles(addedZims); + const auto successfullyAddedZims = handleNewZimFiles(zimsNotInLib); if (!removedZims.empty() || !successfullyAddedZims.empty()) { mp_library->save(); emit(booksChanged()); - setMonitorDirZims(monitorDir, newDirEntries); + setMonitorDirZims(dirPath, zimsInDir); } }