#include "yacreader_history_controller.h"

YACReaderHistoryController::YACReaderHistoryController(QObject *parent) :
    QObject(parent)
{
}

void YACReaderHistoryController::clear()
{
    currentFolderNavigation = 0;
    history.clear();
    history.append(QModelIndex()); //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 QModelIndex &mi)
{
    //remove history from current index
    if(!mi.isValid() && history.count() == 1)
        return;

    int numElementsToRemove = history.count() - (currentFolderNavigation+1);
    while(numElementsToRemove>0)
    {
        numElementsToRemove--;
        history.removeLast();
    }

    if(mi!=history.at(currentFolderNavigation))
    {
        history.append(mi);

        emit(enabledBackward(true));
        currentFolderNavigation++;
    }

    emit(enabledForward(false));
}