emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp
branchRCL_3
changeset 20 efd4f1afd43e
parent 17 67369d1b217f
--- a/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Wed Jun 09 09:22:57 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Mon Jun 21 15:20:54 2010 +0300
@@ -1021,16 +1021,19 @@
 				{
 				CFSEmailUiMailListModelItem* item =
 					static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
-				CFSMailMessage& msg = item->MessagePtr();
-
-	  			TMsgDetailsActivationData msgDetailsData;
-	  			msgDetailsData.iMailBoxId = msg.GetMailBoxId();
-	  			msgDetailsData.iFolderId = msg.GetFolderId();
-	  			msgDetailsData.iMessageId = msg.GetMessageId();
-
-				const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
-				iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);
-				}
+                if ( item ) // Safety
+                    {
+                    CFSMailMessage& msg = item->MessagePtr();
+                    
+                    TMsgDetailsActivationData msgDetailsData;
+                    msgDetailsData.iMailBoxId = msg.GetMailBoxId();
+                    msgDetailsData.iFolderId = msg.GetFolderId();
+                    msgDetailsData.iMessageId = msg.GetMessageId();
+                    
+                    const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
+                    iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);					
+                    }
+                }
 			}
 			break;
        	case EFsEmailUiCmdHelp:
@@ -1319,9 +1322,20 @@
                 break;
             }
         }
-    else if (aEvent.IsPointerEvent())
+    else if ( aEvent.IsPointerEvent() )
         {
-        iSearchList->TreeControl()->OfferEventL(aEvent);
+        // event should be forwarded to list only if it 
+        // contains at least one item
+        if ( iModel->Count() )
+            {
+            result = iSearchList->TreeControl()->OfferEventL( aEvent );
+            }
+        else
+            {
+            // otherwise we consume it so no other ALF controls gets it
+            // e.g. ControlBar
+            result = ETrue;
+            }
         }
 
     return result;
@@ -1395,7 +1409,7 @@
         {
         CFSEmailUiMailListModelItem* item =
     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx));
-    	if ( item->ModelItemType() == ETypeMailItem )
+    	if ( item && item->ModelItemType() == ETypeMailItem )
     	    {
     	    msgId = item->MessagePtr().GetMessageId();
     	    }
@@ -1412,7 +1426,7 @@
 		{
 		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
-		if ( item->ModelItemType() == ETypeMailItem &&
+		if ( item && item->ModelItemType() == ETypeMailItem &&
 		     aListId == item->CorrespondingListId() )
 			{
 			msgId = item->MessagePtr().GetMessageId();
@@ -1430,7 +1444,7 @@
 		{
 		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
-		if ( aListId == item->CorrespondingListId() )
+		if ( item && aListId == item->CorrespondingListId() )
 			{
 			msgPtr = &item->MessagePtr();
 			}
@@ -1479,7 +1493,7 @@
 		{
 		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
-		if ( item->ModelItemType() == ETypeMailItem &&
+		if ( item && item->ModelItemType() == ETypeMailItem &&
 		     aMessageId == item->MessagePtr().GetMessageId() )
 			{
 			idx = i;
@@ -1542,7 +1556,7 @@
 
 	CFSEmailUiMailListModelItem* item =
 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
-	if ( item->ModelItemType() == ETypeMailItem )
+	if ( item && item->ModelItemType() == ETypeMailItem )
 		{
 		// First make sure that the highlighted message really exists in the store
 		// Get confirmed msg ptr
@@ -2047,30 +2061,32 @@
 		{
 		CFSEmailUiMailListModelItem* selectedItem =
 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
-
-	 	TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
-	 	if ( (wasRead && !aRead) || (!wasRead && aRead) )
-	 	    {
-	 	    // Read status is changed
-	 	    iMsgDataCouldBeChanged = ETrue;
+        if ( selectedItem ) // Safety
+            {
+            TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
+            if ( (wasRead && !aRead) || (!wasRead && aRead) )
+                {
+                // Read status is changed
+                iMsgDataCouldBeChanged = ETrue;
 
-    		if ( aRead )
-     			{
-    			// Send flags, local and server
-     			selectedItem->MessagePtr().SetFlag( EFSMsgFlag_Read );
-    			}
-    		else
-    			{
-    			// Send flags, local and server
-     			selectedItem->MessagePtr().ResetFlag( EFSMsgFlag_Read );
-    			}
-    		selectedItem->MessagePtr().SaveMessageL();	// Save flag
-    		// Switch icon to correct one
-    		UpdateMsgIconAndBoldingL( HighlightedIndex() );
-	 	    }
-		}
-	}
-
+                if ( aRead )
+                    {
+                    // Send flags, local and server
+                    selectedItem->MessagePtr().SetFlag( EFSMsgFlag_Read );
+                    }
+                else
+                    {
+                    // Send flags, local and server
+                    selectedItem->MessagePtr().ResetFlag( EFSMsgFlag_Read );
+                    }
+                selectedItem->MessagePtr().SaveMessageL();	// Save flag
+                // Switch icon to correct one
+                UpdateMsgIconAndBoldingL( HighlightedIndex() );
+                }
+            }
+        }
+	} 
+	
 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL()
 	{
     FUNC_LOG;
@@ -2079,7 +2095,7 @@
 		TInt highlightedIndex = HighlightedIndex();
 		CFSEmailUiMailListModelItem* selectedItem =
 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
-		if ( selectedItem->ModelItemType() == ETypeMailItem )
+		if ( selectedItem && selectedItem->ModelItemType() == ETypeMailItem )
 			{
 			CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
 			if ( msgPtr )