#ifndef STATES_H
#define STATES_H

#include <QVector>
#include "ItemManager.h"


class States
{
public:
    States();
    void appendState(ItemManager  Item);   //добавить состояние
    ItemManager undo();    //откат на 1 шаг назад
    ItemManager redo();    //откат на 1 шаг вперед
    bool isFirst();     //является это состояние смым первым?
    bool isLast();      //является это состояние смым последним?
    void clear();       //обнуляет массив состояний(states, indexHistory, currentIndex=0)

    int  countStates()
    {return states.count();}
private:
    int currentIndex;               //текущий индекс в массиве QVector<int> indexHistory;
    QVector<int> indexHistory;      //последовательность состояний ItemManager-a. Хранит цепочку индексов
                                    // массива QVector<ItemManager *> states;
    QVector<ItemManager > states;  //В менеджере хранится все, что необходимо для сохранения / загрузки.
                                    //А, следовательно, для откатов тоже.
};

#endif // STATES_H
