summaryrefslogtreecommitdiffstats
path: root/kalarm/undo.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /kalarm/undo.h
downloadtdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz
tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kalarm/undo.h')
-rw-r--r--kalarm/undo.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/kalarm/undo.h b/kalarm/undo.h
new file mode 100644
index 000000000..99e06f979
--- /dev/null
+++ b/kalarm/undo.h
@@ -0,0 +1,93 @@
+/*
+ * undo.h - undo/redo facility
+ * Program: kalarm
+ * Copyright (C) 2005 by David Jarvie <software@astrojar.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef UNDO_H
+#define UNDO_H
+
+/** @file undo.h - undo/redo facility */
+
+#include <qvaluelist.h>
+#include <qstringlist.h>
+
+class KAEvent;
+class UndoItem;
+
+
+class Undo : public QObject
+{
+ Q_OBJECT
+ public:
+ enum Type { NONE, UNDO, REDO };
+
+ static Undo* instance();
+ static void saveAdd(const KAEvent&);
+ static void saveEdit(const KAEvent& oldEvent, const KAEvent& newEvent);
+ static void saveDelete(const KAEvent&);
+ static void saveDeletes(const QValueList<KAEvent>&);
+ static void saveReactivate(const KAEvent&);
+ static void saveReactivates(const QValueList<KAEvent>&);
+ static bool undo(QWidget* parent, const QString& action)
+ { return undo(mUndoList.begin(), UNDO, parent, action); }
+ static bool undo(int id, QWidget* parent, const QString& action)
+ { return undo(findItem(id, UNDO), UNDO, parent, action); }
+ static bool redo(QWidget* parent, const QString& action)
+ { return undo(mRedoList.begin(), REDO, parent, action); }
+ static bool redo(int id, QWidget* parent, const QString& action)
+ { return undo(findItem(id, REDO), REDO, parent, action); }
+ static void clear();
+ static bool haveUndo() { return !mUndoList.isEmpty(); }
+ static bool haveRedo() { return !mRedoList.isEmpty(); }
+ static QString actionText(Type);
+ static QString actionText(Type, int id);
+ static QString description(Type, int id);
+ static QValueList<int> ids(Type);
+ static void emitChanged();
+
+ // Types for use by UndoItem class and its descendants
+ typedef QValueList<UndoItem*> List;
+
+ signals:
+ void changed(const QString& undo, const QString& redo);
+
+ protected:
+ // Methods for use by UndoItem class
+ static void add(UndoItem*, bool undo);
+ static void remove(UndoItem*, bool undo);
+ static void replace(UndoItem* old, UndoItem* New);
+
+ private:
+ typedef QValueList<UndoItem*>::Iterator Iterator;
+
+ Undo(QObject* parent) : QObject(parent) { }
+ static void removeRedos(const QString& eventID);
+ static bool undo(Iterator, Type, QWidget* parent, const QString& action);
+ static UndoItem* getItem(int id, Type);
+ static Iterator findItem(int id, Type);
+ void emitChanged(const QString& undo, const QString& redo)
+ { emit changed(undo, redo); }
+
+ static Undo* mInstance; // the one and only Undo instance
+ static List mUndoList; // edit history for undo, latest undo first
+ static List mRedoList; // edit history for redo, latest redo first
+
+ friend class UndoItem;
+};
+
+#endif // UNDO_H