mirror of
https://github.com/YACReader/yacreader
synced 2025-05-25 09:50:33 -04:00
105 lines
2.9 KiB
C++
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);
|
|
}
|