20 #ifndef AKONADI_HISTORY_P_H
21 #define AKONADI_HISTORY_P_H
24 #include "incidencechanger.h"
25 #include <kcalcore/incidence.h>
26 #include <akonadi/collection.h>
32 using namespace Akonadi;
33 using namespace KCalCore;
50 Entry(
const Akonadi::Item &item,
const QString &description,
History *qq);
51 Entry(
const Akonadi::Item::List &items,
const QString &description,
History *qq);
52 virtual void updateIds(Item::Id oldId, Item::Id newId);
53 void doIt(OperationType);
55 Akonadi::Item::List mItems;
58 void finished(Akonadi::IncidenceChanger::ResultCode,
const QString &errorString);
60 virtual bool undo() = 0;
61 virtual bool redo() = 0;
62 void updateIdsGlobaly(Item::Id oldId, Item::Id newId);
64 IncidenceChanger *mChanger;
73 class History::Private :
public QObject {
78 void doIt(OperationType);
79 void stackEntry(
const Entry::Ptr &entry, uint atomicOperationId);
80 void updateIds(Item::Id oldId, Item::Id newId);
85 void undoOrRedo(OperationType,
QWidget *parent);
88 void setEnabled(
bool enabled);
90 bool isUndoAvailable()
const;
91 bool isRedoAvailable()
const;
93 int redoCount()
const;
94 int undoCount()
const;
96 IncidenceChanger *mChanger;
101 OperationType mOperationTypeInProgress;
106 bool mUndoAllInProgress;
117 void handleFinished(Akonadi::IncidenceChanger::ResultCode,
const QString &errorString);
123 class CreationEntry :
public Entry {
127 CreationEntry(
const Akonadi::Item &item,
const QString &description,
History *q);
137 Akonadi::IncidenceChanger::ResultCode resultCode,
140 void onCreateFinished(
int changeId,
const Akonadi::Item &item,
141 Akonadi::IncidenceChanger::ResultCode resultCode,
144 Q_DISABLE_COPY(CreationEntry)
147 class DeletionEntry :
public Entry {
150 DeletionEntry(
const Akonadi::Item::List &items,
const QString &description,
History *q);
bool undo();
bool redo();
156 Akonadi::IncidenceChanger::ResultCode resultCode,
159 void onCreateFinished(
int changeId,
const Akonadi::Item &item,
160 Akonadi::IncidenceChanger::ResultCode resultCode,
163 IncidenceChanger::ResultCode mResultCode;
166 int mNumPendingCreations;
167 Q_DISABLE_COPY(DeletionEntry)
170 class ModificationEntry :
public Entry {
173 ModificationEntry(
const Akonadi::Item &item,
174 const Incidence::Ptr &originalPayload,
177 bool undo();
bool redo();
182 void onModifyFinished(
int changeId,
const Akonadi::Item &item,
183 Akonadi::IncidenceChanger::ResultCode resultCode,
186 Q_DISABLE_COPY(ModificationEntry)
187 Incidence::Ptr mOriginalPayload;
190 class MultiEntry : public Entry {
196 void addEntry(
const Entry::Ptr &entry);
void updateIds(Item::Id oldId, Item::Id newId);
201 bool undo();
bool redo();
205 void onEntryFinished(Akonadi::IncidenceChanger::ResultCode resultCode,
208 const uint mAtomicOperationId;
211 int mFinishedEntries;
212 OperationType mOperationInProgress;
213 Q_DISABLE_COPY(MultiEntry)
History class for implementing undo/redo of calendar operations.
ResultCode
This enum describes the possible result codes (success/error values) for an undo or redo operation...