summaryrefslogtreecommitdiffabout
path: root/libkcal/calendarlocal.cpp
authorzautrix <zautrix>2005-07-30 08:08:47 (UTC)
committer zautrix <zautrix>2005-07-30 08:08:47 (UTC)
commit055928e26613f4ab249bd82be86890ed278372f6 (patch) (side-by-side diff)
tree0dfc4cba815a2ba0b30c71fbd74b340e2bcc8572 /libkcal/calendarlocal.cpp
parent9cbd19485635dc0edacd14403e4c63d6d469bfce (diff)
downloadkdepimpi-055928e26613f4ab249bd82be86890ed278372f6.zip
kdepimpi-055928e26613f4ab249bd82be86890ed278372f6.tar.gz
kdepimpi-055928e26613f4ab249bd82be86890ed278372f6.tar.bz2
fixxx
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
@@ -265,13 +265,26 @@ void CalendarLocal::close()
mEventList.setAutoDelete( false );
mTodoList.setAutoDelete( false );
mJournalList.setAutoDelete( false );
setModified( false );
}
-
+ 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 )
{
QString cat;
bool isBirthday = true;
if( event->categoriesStr() == i18n( "Anniversary" ) ) {
isBirthday = false;
@@ -324,14 +337,14 @@ bool CalendarLocal::addEvent( Event *event )
return true;
}
void CalendarLocal::deleteEvent( Event *event )
{
- if ( mUndoIncidence ) delete mUndoIncidence;
- mUndoIncidence = event->clone();
+ clearUndo();
+ mUndoIncidence = event;
if ( mEventList.removeRef( event ) ) {
setModified( true );
}
}
@@ -379,15 +392,15 @@ bool CalendarLocal::addTodo( Todo *todo )
return true;
}
void CalendarLocal::deleteTodo( Todo *todo )
{
// Handle orphaned children
- if ( mUndoIncidence ) delete mUndoIncidence;
+ clearUndo();
removeRelations( todo );
- mUndoIncidence = todo->clone();
+ mUndoIncidence = todo;
if ( mTodoList.removeRef( todo ) ) {
setModified( true );
}
}
@@ -883,15 +896,14 @@ bool CalendarLocal::addJournal(Journal *journal)
journal->setCalEnabled( true );
return true;
}
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) ) {
setModified( true );
}
}
QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date )
@@ -964,14 +976,13 @@ void CalendarLocal::setCalendarRemove( int id )
if ( ev->calID() == id )
deleteJournal( ev );
ev = JournalList.next();
}
}
- if ( mUndoIncidence ) delete mUndoIncidence;
- mUndoIncidence = 0;
+ clearUndo();
}
void CalendarLocal::setCalendarEnabled( int id, bool enable )
{
for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )