#include "yacreader_history_controller.h" YACReaderHistoryController::YACReaderHistoryController(QObject *parent) : QObject(parent) { } void YACReaderHistoryController::clear() { currentFolderNavigation = 0; history.clear(); history.append(YACReaderLibrarySourceContainer(QModelIndex(), YACReaderLibrarySourceContainer::Folder)); // root folder is always the first item emit enabledBackward(false); emit enabledForward(false); } void YACReaderHistoryController::backward() { if (currentFolderNavigation > 0) { currentFolderNavigation--; emit modelIndexSelected(history.at(currentFolderNavigation)); emit enabledForward(true); } if (currentFolderNavigation == 0) emit enabledBackward(false); } void YACReaderHistoryController::forward() { if (currentFolderNavigation < history.count() - 1) { currentFolderNavigation++; emit modelIndexSelected(history.at(currentFolderNavigation)); emit enabledBackward(true); } if (currentFolderNavigation == history.count() - 1) emit enabledForward(false); } void YACReaderHistoryController::updateHistory(const YACReaderLibrarySourceContainer &source) { // remove history from current index if (!source.sourceModelIndex.isValid() && history.count() == 1) return; int numElementsToRemove = history.count() - (currentFolderNavigation + 1); while (numElementsToRemove > 0) { numElementsToRemove--; history.removeLast(); } if (source != history.at(currentFolderNavigation)) { history.append(source); emit enabledBackward(true); currentFolderNavigation++; } emit enabledForward(false); } YACReaderLibrarySourceContainer YACReaderHistoryController::lastSourceContainer() { return history.last(); } YACReaderLibrarySourceContainer YACReaderHistoryController::currentSourceContainer() { return history.at(currentFolderNavigation); } //------------------------------------------------------------------------------ YACReaderLibrarySourceContainer::YACReaderLibrarySourceContainer() : sourceModelIndex(QModelIndex()), type(None) { } YACReaderLibrarySourceContainer::YACReaderLibrarySourceContainer(const QModelIndex &sourceModelIndex, YACReaderLibrarySourceContainer::SourceType type) : sourceModelIndex(sourceModelIndex), type(type) { } QModelIndex YACReaderLibrarySourceContainer::getSourceModelIndex() const { return sourceModelIndex; } YACReaderLibrarySourceContainer::SourceType YACReaderLibrarySourceContainer::getType() const { return type; } bool YACReaderLibrarySourceContainer::operator==(const YACReaderLibrarySourceContainer &other) const { return sourceModelIndex == other.sourceModelIndex && type == other.type; } bool YACReaderLibrarySourceContainer::operator!=(const YACReaderLibrarySourceContainer &other) const { return !(*this == other); }