mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
8d05c71ca2
The implementation in commit 182fe790c9
("Add ability to undo
renumbering of dives") looks perfectly reasonable, but it depends on an
implementation detail: it assumes that the keys of the QMap are returned
in the same order in which they were placed there. Which apparently isn't
the case for some version of Qt.
With this commit we simply remember both the old and the new number for
each dive and therefore the order in which they are processed doesn't
matter.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
49 lines
982 B
C++
49 lines
982 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;
|
|
};
|
|
|
|
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
|