#ifndef YACREADER_HISTORY_CONTROLLER_H #define YACREADER_HISTORY_CONTROLLER_H #include #include class YACReaderHistoryController; class YACReaderLibrarySourceContainer { public: enum SourceType { None, Folder, List }; explicit YACReaderLibrarySourceContainer(); explicit YACReaderLibrarySourceContainer(const QModelIndex &sourceModelIndex, YACReaderLibrarySourceContainer::SourceType type); QModelIndex getSourceModelIndex() const; YACReaderLibrarySourceContainer::SourceType getType() const; bool operator==(const YACReaderLibrarySourceContainer &other) const; bool operator!=(const YACReaderLibrarySourceContainer &other) const; protected: QModelIndex sourceModelIndex; YACReaderLibrarySourceContainer::SourceType type; friend class YACReaderHistoryController; }; Q_DECLARE_METATYPE(YACReaderLibrarySourceContainer) class YACReaderHistoryController : public QObject { Q_OBJECT public: explicit YACReaderHistoryController(QObject *parent = nullptr); signals: void enabledForward(bool enabled); void enabledBackward(bool enabled); void modelIndexSelected(YACReaderLibrarySourceContainer); public slots: void clear(); void backward(); void forward(); void updateHistory(const YACReaderLibrarySourceContainer &source); YACReaderLibrarySourceContainer lastSourceContainer(); YACReaderLibrarySourceContainer currentSourceContainer(); protected: int currentFolderNavigation; QList history; }; #endif // YACREADER_HISTORY_CONTROLLER_H