korganizer
history.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef KORG_HISTORY_H
00025 #define KORG_HISTORY_H
00026
00027 #include <qobject.h>
00028 #include <qptrlist.h>
00029
00030 namespace KCal {
00031
00032 class Calendar;
00033 class Incidence;
00034
00035 }
00036
00037 namespace KOrg {
00038
00039 class History : public QObject
00040 {
00041 Q_OBJECT
00042 public:
00043 History( KCal::Calendar * );
00044
00045 void recordDelete( KCal::Incidence * );
00046 void recordAdd( KCal::Incidence * );
00047 void recordEdit( KCal::Incidence *oldIncidence,
00048 KCal::Incidence *newIncidence );
00049 void startMultiModify( const QString &description );
00050 void endMultiModify();
00051
00052 public slots:
00053 void undo();
00054 void redo();
00055
00056 signals:
00057 void undone();
00058 void redone();
00059
00060 void undoAvailable( const QString & );
00061 void redoAvailable( const QString & );
00062
00063 protected:
00064 void truncate();
00065
00066 private:
00067
00068 class Entry
00069 {
00070 public:
00071 Entry( KCal::Calendar * );
00072 virtual ~Entry();
00073
00074 virtual void undo() = 0;
00075 virtual void redo() = 0;
00076
00077 virtual QString text() = 0;
00078
00079 protected:
00080 KCal::Calendar *mCalendar;
00081 };
00082
00083 class EntryDelete : public Entry
00084 {
00085 public:
00086 EntryDelete( KCal::Calendar *, KCal::Incidence * );
00087 ~EntryDelete();
00088
00089 void undo();
00090 void redo();
00091
00092 QString text();
00093
00094 private:
00095 KCal::Incidence *mIncidence;
00096 };
00097
00098 class EntryAdd : public Entry
00099 {
00100 public:
00101 EntryAdd( KCal::Calendar *, KCal::Incidence * );
00102 ~EntryAdd();
00103
00104 void undo();
00105 void redo();
00106
00107 QString text();
00108
00109 private:
00110 KCal::Incidence *mIncidence;
00111 };
00112
00113 class EntryEdit : public Entry
00114 {
00115 public:
00116 EntryEdit( KCal::Calendar *calendar, KCal::Incidence *oldIncidence,
00117 KCal::Incidence *newIncidence );
00118 ~EntryEdit();
00119
00120 void undo();
00121 void redo();
00122
00123 QString text();
00124
00125 private:
00126 KCal::Incidence *mOldIncidence;
00127 KCal::Incidence *mNewIncidence;
00128 };
00129
00130 class MultiEntry : public Entry
00131 {
00132 public:
00133 MultiEntry( KCal::Calendar *calendar, const QString &text );
00134 ~MultiEntry();
00135
00136 void appendEntry( Entry* entry );
00137 void undo();
00138 void redo();
00139
00140 QString text();
00141
00142 private:
00143 QPtrList<Entry> mEntries;
00144 QString mText;
00145 };
00146
00147 KCal::Calendar *mCalendar;
00148 MultiEntry *mCurrentMultiEntry;
00149
00150 QPtrList<Entry> mEntries;
00151 QPtrListIterator<Entry> mUndoEntry;
00152 QPtrListIterator<Entry> mRedoEntry;
00153 };
00154
00155 }
00156 #endif
|