#ifndef BOOKMARKS_H #define BOOKMARKS_H #include #include #include #include #include #include class BookmarksList { public: struct Bookmark { int lastPage; QList bookmarks; QDateTime added; Bookmark():lastPage(0){}; friend QDataStream & operator<< ( QDataStream & out, const Bookmark & bm ) { out << bm.lastPage; out << bm.bookmarks; out << bm.added; return out; } friend QDataStream & operator>> ( QDataStream & in, Bookmark & bm ) { in >> bm.lastPage; in >> bm.bookmarks; in >> bm.added; return in; } }; BookmarksList():numMaxBookmarks(400){} void load(); void save(); void add(const QString & comicID, const Bookmark & b); Bookmark get(const QString & comicID); protected: QMap list; void deleteOldest(int num); private: int numMaxBookmarks; }; class Bookmarks : public QObject { Q_OBJECT protected: QString comicPath; //bookmarks setted by the user QMap bookmarks; QList latestBookmarks; //last page readed int lastPageIndex; QImage lastPage; BookmarksList list; QDateTime added; public: Bookmarks(); void setLastPage(int index,const QImage & page); void setBookmark(int index,const QImage & page); void removeBookmark(int index); QList getBookmarkPages() const; QImage getBookmarkPixmap(int page) const; QImage getLastPagePixmap() const; int getLastPage() const; bool isBookmark(int page); bool imageLoaded(int page); void newComic(const QString & path); void clear(); void save(); bool load(const QList & bookmarkIndexes, int lastPage); }; #endif // BOOKMARKS_H