#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); }