From 8b2e6d23dd24f09da56b2b5b8283b9dcef929cfa Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Mon, 22 Jul 2024 17:18:11 +0400 Subject: [PATCH] Better return type of Library::getLibraryZimsFromDir() ... which results in slightly simpler Library::updateFromDir(). --- src/library.cpp | 20 +++++++++----------- src/library.h | 8 +++++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/library.cpp b/src/library.cpp index 8ce7451..4759338 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -194,21 +194,21 @@ void Library::save() mp_library->writeBookmarksToFile(kiwix::appendToDirectory(m_libraryDirectory.toStdString(), "library.bookmarks.xml")); } -void Library::setMonitorDirZims(QString monitorDir, QStringList zimList) +void Library::setMonitorDirZims(QString monitorDir, QStringSet zimList) { m_knownZimsInDir[monitorDir] = zimList; } -QStringList Library::getLibraryZimsFromDir(QString dir) const +Library::QStringSet Library::getLibraryZimsFromDir(QString dir) const { - QStringList zimsInDir; + QStringSet zimsInDir; for (auto str : getBookIds()) { auto filePath = QString::fromStdString(getBookById(str).getPath()); if ( filePath.endsWith(BEINGDOWNLOADEDSUFFIX) ) continue; QDir absoluteDir = QFileInfo(filePath).absoluteDir(); if (absoluteDir == dir) { - zimsInDir.push_back(filePath); + zimsInDir.insert(filePath); } } return zimsInDir; @@ -219,20 +219,18 @@ void Library::updateFromDir(QString monitorDir) QMutexLocker locker(&m_updateFromDirMutex); const QDir dir(monitorDir); QStringList newDirEntries = dir.entryList({"*.zim"}); - QStringList oldDirEntries = m_knownZimsInDir[monitorDir]; + const QStringSet oldDirEntries = m_knownZimsInDir[monitorDir]; for (auto &str : newDirEntries) { str = QDir::toNativeSeparators(monitorDir + "/" + str); } - QSet newDir, oldDir; + QSet newDir; #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) newDir = QSet::fromList(newDirEntries); - oldDir = QSet::fromList(oldDirEntries); #else newDir = QSet(newDirEntries.begin(), newDirEntries.end()); - oldDir = QSet(oldDirEntries.begin(), oldDirEntries.end()); #endif - QStringList addedZims = (newDir - oldDir).values(); - QStringList removedZims = (oldDir - newDir).values(); + QStringList addedZims = (newDir - oldDirEntries).values(); + QStringList removedZims = (oldDirEntries - newDir).values(); auto manager = kiwix::Manager(LibraryManipulator(this)); bool needsRefresh = !removedZims.empty(); for (auto bookPath : addedZims) { @@ -251,7 +249,7 @@ void Library::updateFromDir(QString monitorDir) } if (needsRefresh) { emit(booksChanged()); - setMonitorDirZims(monitorDir, newDir.values()); + setMonitorDirZims(monitorDir, newDir); } } diff --git a/src/library.h b/src/library.h index b6af1be..3644b08 100644 --- a/src/library.h +++ b/src/library.h @@ -26,6 +26,8 @@ class Library : public QObject Q_OBJECT Q_PROPERTY(QStringList bookIds READ getBookIds NOTIFY booksChanged) public: + typedef QSet QStringSet; + Library(const QString& libraryDirectory); virtual ~Library(); QString openBookFromPath(const QString& zimPath); @@ -34,8 +36,8 @@ public: QStringList getBookIds() const; QStringList listBookIds(const kiwix::Filter& filter, kiwix::supportedListSortBy sortBy, bool ascending) const; const std::vector getBookmarks(bool onlyValidBookmarks = false) const { return mp_library->getBookmarks(onlyValidBookmarks); } - QStringList getLibraryZimsFromDir(QString dir) const; - void setMonitorDirZims(QString monitorDir, QStringList zimList); + QStringSet getLibraryZimsFromDir(QString dir) const; + void setMonitorDirZims(QString monitorDir, QStringSet zimList); void addBookToLibrary(kiwix::Book& book); void addBookBeingDownloaded(const kiwix::Book& book, QString downloadDir); bool isBeingDownloadedByUs(QString path) const; @@ -59,7 +61,7 @@ private: QMutex m_updateFromDirMutex; kiwix::LibraryPtr mp_library; QString m_libraryDirectory; - QMap m_knownZimsInDir; + QMap m_knownZimsInDir; friend class LibraryManipulator; };