00001 #ifndef COMMANDS_H 00002 #define COMMANDS_H 00003 00006 #include <QUndoCommand> 00007 00008 #include "xbytearray.h" 00009 00023 class CharCommand : public QUndoCommand 00024 { 00025 public: 00026 enum { Id = 1234 }; 00027 enum Cmd {insert, remove, replace}; 00028 00029 CharCommand(XByteArray * xData, Cmd cmd, int charPos, char newChar, 00030 QUndoCommand *parent=0); 00031 00032 void undo(); 00033 void redo(); 00034 bool mergeWith(const QUndoCommand *command); 00035 int id() const { return Id; } 00036 00037 private: 00038 XByteArray * _xData; 00039 int _charPos; 00040 bool _wasChanged; 00041 char _newChar; 00042 char _oldChar; 00043 Cmd _cmd; 00044 }; 00045 00049 class ArrayCommand : public QUndoCommand 00050 { 00051 public: 00052 enum Cmd {insert, remove, replace}; 00053 ArrayCommand(XByteArray * xData, Cmd cmd, int baPos, QByteArray newBa=QByteArray(), int len=0, 00054 QUndoCommand *parent=0); 00055 void undo(); 00056 void redo(); 00057 00058 private: 00059 Cmd _cmd; 00060 XByteArray * _xData; 00061 int _baPos; 00062 int _len; 00063 QByteArray _wasChanged; 00064 QByteArray _newBa; 00065 QByteArray _oldBa; 00066 }; 00067 00070 #endif // COMMANDS_H