diff -r 6b8f3b30d0ec -r efd4f1afd43e emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp --- 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( Model()->Item( HighlightedIndex() ) ); - CFSMailMessage& msg = item->MessagePtr(); - - TMsgDetailsActivationData msgDetailsData; - msgDetailsData.iMailBoxId = msg.GetMailBoxId(); - msgDetailsData.iFolderId = msg.GetFolderId(); - msgDetailsData.iMessageId = msg.GetMessageId(); - - const TPckgBuf 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 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(iModel->Item(aItemIdx)); - if ( item->ModelItemType() == ETypeMailItem ) + if ( item && item->ModelItemType() == ETypeMailItem ) { msgId = item->MessagePtr().GetMessageId(); } @@ -1412,7 +1426,7 @@ { CFSEmailUiMailListModelItem* item = static_cast(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(iModel->Item(i)); - if ( aListId == item->CorrespondingListId() ) + if ( item && aListId == item->CorrespondingListId() ) { msgPtr = &item->MessagePtr(); } @@ -1479,7 +1493,7 @@ { CFSEmailUiMailListModelItem* item = static_cast(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( 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( 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( iModel->Item( highlightedIndex )); - if ( selectedItem->ModelItemType() == ETypeMailItem ) + if ( selectedItem && selectedItem->ModelItemType() == ETypeMailItem ) { CFSMailMessage* msgPtr = &selectedItem->MessagePtr(); if ( msgPtr )