summaryrefslogtreecommitdiffabout
path: root/libkcal/calendarlocal.cpp
Side-by-side diff
Diffstat (limited to 'libkcal/calendarlocal.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 5baa7dc..e8c969f 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -270,3 +270,16 @@ void CalendarLocal::close()
}
-
+ void CalendarLocal::clearUndo()
+{
+ if ( mUndoIncidence ) {
+ if ( mUndoIncidence->typeID() == eventID )
+ delete ((Event*) mUndoIncidence) ;
+ else if ( mUndoIncidence->typeID() == todoID )
+ delete ( (Todo*) mUndoIncidence );
+ else if ( mUndoIncidence->typeID() == journalID )
+ delete ( (Journal*) mUndoIncidence );
+ else
+ delete mUndoIncidence;
+ }
+ mUndoIncidence = 0;
+}
bool CalendarLocal::addAnniversaryNoDup( Event *event )
@@ -329,4 +342,4 @@ void CalendarLocal::deleteEvent( Event *event )
{
- if ( mUndoIncidence ) delete mUndoIncidence;
- mUndoIncidence = event->clone();
+ clearUndo();
+ mUndoIncidence = event;
if ( mEventList.removeRef( event ) ) {
@@ -384,5 +397,5 @@ void CalendarLocal::deleteTodo( Todo *todo )
// Handle orphaned children
- if ( mUndoIncidence ) delete mUndoIncidence;
+ clearUndo();
removeRelations( todo );
- mUndoIncidence = todo->clone();
+ mUndoIncidence = todo;
@@ -888,5 +901,4 @@ void CalendarLocal::deleteJournal( Journal *journal )
{
- if ( mUndoIncidence ) delete mUndoIncidence;
- mUndoIncidence = journal->clone();
- mUndoIncidence->setSummary( mUndoIncidence->description().left(25));
+ clearUndo();
+ mUndoIncidence = journal;
if ( mJournalList.removeRef(journal) ) {
@@ -969,4 +981,3 @@ void CalendarLocal::setCalendarRemove( int id )
- if ( mUndoIncidence ) delete mUndoIncidence;
- mUndoIncidence = 0;
+ clearUndo();