--- a/calendarui/controller/src/calenalarmmanager.cpp Mon Jun 21 15:38:59 2010 +0300
+++ b/calendarui/controller/src/calenalarmmanager.cpp Thu Jul 15 18:37:27 2010 +0300
@@ -393,14 +393,21 @@
entryLocalUid = missedAlarm->iLuid;
instanceTime = missedAlarm->iInstanceTime;
-
- CCalSession &session = iController.Services().SessionL( missedAlarm->iCalFileName );
-
- // pack instance ids of the missed alarm instances
- TRAP_IGNORE(instanceId = TCalenInstanceId::CreateL( entryLocalUid, instanceTime, 0 ));
- instanceId.iColId = session.CollectionIdL();
-
- iMissedAlarmList.Append(instanceId);
+ CCalSession *session = NULL;
+ TRAPD(err,session = &iController.Services().SessionL( missedAlarm->iCalFileName ));
+ //missed alarm belongs to existing calendar
+ if(err != KErrNotFound)
+ {
+ // pack instance ids of the missed alarm instances
+ TRAP_IGNORE(instanceId = TCalenInstanceId::CreateL( entryLocalUid, instanceTime, 0 ));
+ instanceId.iColId = session->CollectionIdL();
+ iMissedAlarmList.Append(instanceId);
+ }
+ else
+ {
+ //missed alarm does not belong to any calendar so delete it, since user has deleted the calendar
+ iMissedAlarmStore->RemoveL(*missedAlarm);
+ }
}
CleanupStack::PopAndDestroy(); // missedAlarmStorelist
@@ -685,6 +692,8 @@
RPointerArray<CMissedAlarm> aMissedAlarmArray;
CleanupResetAndDestroyPushL( aMissedAlarmArray );
iMissedAlarmStore->GetL(aMissedAlarmArray);
+ if (aMissedAlarmArray.Count())
+ {
CCalSession &session = iController.Services().SessionL(aMissedAlarmArray[0]->iCalFileName);
CCalEntry* entry = iController.Services().EntryViewL(session.CollectionIdL())->FetchL(
aMissedAlarmArray[0]->iLuid);
@@ -704,6 +713,7 @@
CleanupStack::PopAndDestroy( entry );
iMissedAlarmList.Remove(0); //Clear the alarm list
iMissedAlarmStore->RemoveL(*aMissedAlarmArray[0]);
+ }
CleanupStack::PopAndDestroy(); // aMissedAlarmArray
iViewManager.StartActiveStepL();