yacreader/YACReaderLibrary/yacreader_history_controller.cpp
Luis Ángel San Martín a47b706e29 Fix a bunch of warnings
2023-04-30 14:00:09 +02:00

105 lines
2.9 KiB
C++

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