subsurface/qt-ui/undocommands.h
Dirk Hohndel a94c84d598 Undo/redo of dive deletion needs to handle trips as well
If we delete dives that were part of a trip, that trip may get deleted as
well. So if we undo that operation we need to bring back the trip, too.

This also deals with a bug in the original code that did the delete both
in calling code (in divelistview.cpp) and in the redo function. Because of
the nature of the delete this didn't really matter but it is of course
wrong and with the new code it would in fact cause an issue.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-02 14:50:12 -04:00

50 lines
1,018 B
C++

#ifndef UNDOCOMMANDS_H
#define UNDOCOMMANDS_H
#include <QUndoCommand>
#include <QMap>
#include "dive.h"
class UndoDeleteDive : public QUndoCommand {
public:
UndoDeleteDive(QList<struct dive*> deletedDives);
virtual void undo();
virtual void redo();
private:
QList<struct dive*> diveList;
QList<struct dive_trip*> tripList;
};
class UndoShiftTime : public QUndoCommand {
public:
UndoShiftTime(QList<int> changedDives, int amount);
virtual void undo();
virtual void redo();
private:
QList<int> diveList;
int timeChanged;
};
class UndoRenumberDives : public QUndoCommand {
public:
UndoRenumberDives(QMap<int, QPair<int, int> > originalNumbers);
virtual void undo();
virtual void redo();
private:
QMap<int,QPair<int, int> > oldNumbers;
};
class UndoRemoveDivesFromTrip : public QUndoCommand {
public:
UndoRemoveDivesFromTrip(QMap<struct dive*, dive_trip*> removedDives);
virtual void undo();
virtual void redo();
private:
QMap<struct dive*, dive_trip*> divesToUndo;
};
#endif // UNDOCOMMANDS_H