undo.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef UNDO_H
00025 #define UNDO_H
00026
00027 #include <qobject.h>
00028 #include <qptrstack.h>
00029 #include <qstring.h>
00030
00031 #include <kabc/addressbook.h>
00032
00033 #include "kablock.h"
00034
00035 class Command
00036 {
00037 public:
00038 Command( KABC::AddressBook *addressBook ) { mAddressBook = addressBook; }
00039 virtual ~Command() {};
00040
00041 virtual QString name() = 0;
00042 virtual bool redo() = 0;
00043 virtual bool undo() = 0;
00044
00045 protected:
00046 KABC::AddressBook *addressBook() const { return mAddressBook; }
00047 KABLock *lock() const { return KABLock::self( mAddressBook ); }
00048
00049 private:
00050 KABC::AddressBook *mAddressBook;
00051 };
00052
00061 class StackBase : public QObject
00062 {
00063 Q_OBJECT
00064
00065 public:
00066 StackBase() : QObject() {}
00067
00068 void push( Command *c );
00069 bool isEmpty();
00070 Command *top();
00071 void clear();
00072
00073 signals:
00074 void changed();
00075
00076 protected:
00081 Command *pop();
00082
00083 QPtrStack<Command> mCommandStack;
00084 };
00085
00086 class UndoStack : public StackBase
00087 {
00088 public:
00089 static UndoStack *instance();
00090 void undo();
00091
00092 protected:
00093 UndoStack();
00094 static UndoStack* instance_;
00095 };
00096
00097 class RedoStack : public StackBase
00098 {
00099 public:
00100 static RedoStack *instance();
00101 void redo();
00102
00103 protected:
00104 RedoStack();
00105 static RedoStack* instance_;
00106 };
00107
00108 #endif
This file is part of the documentation for kaddressbook Library Version 3.2.2.