1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#pragma once
#include <QJsonObject>
#include "undo/undo_command.h"
class UndoDeleteMulti;
class GraphNode;
class UndoDeleteDatum : public UndoCommand
{
public:
/*
* UndoDeleteDatum constructor can only be called with a parent
* UndoDeleteMulti object, as deleting datums needs to be done
* along-side deleting their links.
*/
UndoDeleteDatum(Datum* d, UndoDeleteMulti* parent);
/*
* Actual commands to execute undo and redo
*/
void redo() override;
void undo() override;
/*
* Node and graph pointer swap
*/
void swapPointer(Datum* a, Datum* b) const override;
void swapPointer(Node* a, Node* b) const override;
protected:
/*
* Protected constructor used in UndoAddDatum subclass
*/
UndoDeleteDatum(Datum* d);
/* Pointer to the target datum and its parent node */
mutable Datum* d;
mutable GraphNode* n;
/* This object stores the serialized datum */
QJsonObject data;
};
|