|
Canorus
0.7
|
00001 00008 #ifndef UNDO_H_ 00009 #define UNDO_H_ 00010 00011 class CAUndoCommand; 00012 class CADocument; 00013 00014 #include <QHash> 00015 #include <QList> 00016 00017 class CAUndo { 00018 public: 00019 CAUndo(); 00020 virtual ~CAUndo(); 00021 00022 bool canUndo( CADocument* ); 00023 bool canRedo( CADocument* ); 00024 void undo( CADocument* ); 00025 void redo( CADocument* ); 00026 inline bool containsUndoStack( CADocument *d ) { return _undoStack.contains(d); } 00027 void createUndoStack( CADocument *d ); 00028 inline QList<CAUndoCommand*> *undoStack( CADocument* d ) { return _undoStack[d]; } 00029 inline int& undoIndex( CADocument* d ) { return _undoIndex[undoStack(d)]; } 00030 inline void removeUndoStack( CADocument *d ) { _undoStack.remove(d); } 00031 void deleteUndoStack( CADocument *doc ); 00032 void createUndoCommand( CADocument *d, QString text ); 00033 void pushUndoCommand(); 00034 CAUndoCommand *undoCommand( CADocument *d ); 00035 CAUndoCommand *redoCommand( CADocument *d ); 00036 void updateLastUndoCommand( CAUndoCommand *c ); 00037 void changeDocument( CADocument*, CADocument* ); 00038 QList<CADocument*> getAllDocuments( CADocument *d ); 00039 private: 00040 void clearUndoCommand(); 00041 CAUndoCommand *_undoCommand; // current undo command created to be put on the undo stack 00042 00043 QHash< CADocument*, QList<CAUndoCommand*>* > _undoStack; 00044 QHash< QList<CAUndoCommand*>*, int > _undoIndex; 00045 }; 00046 00047 #endif /* UNDO_H_ */
1.8.0