Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
/home/iurt/rpm/BUILD/canorus-0.7.R1002/src/core/undo.h
Go to the documentation of this file.
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_ */