Even simpler Library::updateFromDir()

This commit is contained in:
Veloman Yunkan 2024-07-22 17:31:26 +04:00 committed by Kelson
parent 8b2e6d23dd
commit ce40f5eff6

View File

@ -218,19 +218,13 @@ void Library::updateFromDir(QString monitorDir)
{ {
QMutexLocker locker(&m_updateFromDirMutex); QMutexLocker locker(&m_updateFromDirMutex);
const QDir dir(monitorDir); const QDir dir(monitorDir);
QStringList newDirEntries = dir.entryList({"*.zim"});
const QStringSet oldDirEntries = m_knownZimsInDir[monitorDir]; const QStringSet oldDirEntries = m_knownZimsInDir[monitorDir];
for (auto &str : newDirEntries) { QStringSet newDirEntries;
str = QDir::toNativeSeparators(monitorDir + "/" + str); for (const auto &file : dir.entryList({"*.zim"})) {
newDirEntries.insert(QDir::toNativeSeparators(monitorDir + "/" + file));
} }
QSet<QString> newDir; QStringList addedZims = (newDirEntries - oldDirEntries).values();
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) QStringList removedZims = (oldDirEntries - newDirEntries).values();
newDir = QSet<QString>::fromList(newDirEntries);
#else
newDir = QSet<QString>(newDirEntries.begin(), newDirEntries.end());
#endif
QStringList addedZims = (newDir - oldDirEntries).values();
QStringList removedZims = (oldDirEntries - newDir).values();
auto manager = kiwix::Manager(LibraryManipulator(this)); auto manager = kiwix::Manager(LibraryManipulator(this));
bool needsRefresh = !removedZims.empty(); bool needsRefresh = !removedZims.empty();
for (auto bookPath : addedZims) { for (auto bookPath : addedZims) {
@ -249,7 +243,7 @@ void Library::updateFromDir(QString monitorDir)
} }
if (needsRefresh) { if (needsRefresh) {
emit(booksChanged()); emit(booksChanged());
setMonitorDirZims(monitorDir, newDir); setMonitorDirZims(monitorDir, newDirEntries);
} }
} }