diff --git a/include/library.h b/include/library.h index 5ed1d5cbc..3c79fed0e 100644 --- a/include/library.h +++ b/include/library.h @@ -208,7 +208,7 @@ class Library * * @return A list of bookmarks */ - const std::vector& getBookmarks() { return m_bookmarks; } + const std::vector getBookmarks(bool onlyValidBookmarks = true); /** * Get all book ids of the books in the library. diff --git a/src/library.cpp b/src/library.cpp index 446b5508f..46f1e86be 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -184,6 +184,21 @@ std::vector Library::getBooksPublishers() return booksPublishers; } +const std::vector Library::getBookmarks(bool onlyValidBookmarks) +{ + if (!onlyValidBookmarks) { + return m_bookmarks; + } + std::vector validBookmarks; + auto booksId = getBooksIds(); + for(auto& bookmark:m_bookmarks) { + if (std::find(booksId.begin(), booksId.end(), bookmark.getBookId()) != booksId.end()) { + validBookmarks.push_back(bookmark); + } + } + return validBookmarks; +} + std::vector Library::getBooksIds() { std::vector bookIds;