calendarui/controller/src/calenalarmmanager.cpp
branchRCL_3
changeset 27 aba12c885d83
parent 25 bf573002ff72
child 28 96907930389d
--- 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();