emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp
branchRCL_3
changeset 20 efd4f1afd43e
parent 17 67369d1b217f
equal deleted inserted replaced
18:6b8f3b30d0ec 20:efd4f1afd43e
  1019 			{
  1019 			{
  1020  			if ( iSearchList->Count() )
  1020  			if ( iSearchList->Count() )
  1021 				{
  1021 				{
  1022 				CFSEmailUiMailListModelItem* item =
  1022 				CFSEmailUiMailListModelItem* item =
  1023 					static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
  1023 					static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
  1024 				CFSMailMessage& msg = item->MessagePtr();
  1024                 if ( item ) // Safety
  1025 
  1025                     {
  1026 	  			TMsgDetailsActivationData msgDetailsData;
  1026                     CFSMailMessage& msg = item->MessagePtr();
  1027 	  			msgDetailsData.iMailBoxId = msg.GetMailBoxId();
  1027                     
  1028 	  			msgDetailsData.iFolderId = msg.GetFolderId();
  1028                     TMsgDetailsActivationData msgDetailsData;
  1029 	  			msgDetailsData.iMessageId = msg.GetMessageId();
  1029                     msgDetailsData.iMailBoxId = msg.GetMailBoxId();
  1030 
  1030                     msgDetailsData.iFolderId = msg.GetFolderId();
  1031 				const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
  1031                     msgDetailsData.iMessageId = msg.GetMessageId();
  1032 				iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);
  1032                     
  1033 				}
  1033                     const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
       
  1034                     iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);					
       
  1035                     }
       
  1036                 }
  1034 			}
  1037 			}
  1035 			break;
  1038 			break;
  1036        	case EFsEmailUiCmdHelp:
  1039        	case EFsEmailUiCmdHelp:
  1037   			{
  1040   			{
  1038 			TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
  1041 			TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
  1317                     }
  1320                     }
  1318                 }
  1321                 }
  1319                 break;
  1322                 break;
  1320             }
  1323             }
  1321         }
  1324         }
  1322     else if (aEvent.IsPointerEvent())
  1325     else if ( aEvent.IsPointerEvent() )
  1323         {
  1326         {
  1324         iSearchList->TreeControl()->OfferEventL(aEvent);
  1327         // event should be forwarded to list only if it 
       
  1328         // contains at least one item
       
  1329         if ( iModel->Count() )
       
  1330             {
       
  1331             result = iSearchList->TreeControl()->OfferEventL( aEvent );
       
  1332             }
       
  1333         else
       
  1334             {
       
  1335             // otherwise we consume it so no other ALF controls gets it
       
  1336             // e.g. ControlBar
       
  1337             result = ETrue;
       
  1338             }
  1325         }
  1339         }
  1326 
  1340 
  1327     return result;
  1341     return result;
  1328     }
  1342     }
  1329 
  1343 
  1393 	TFSMailMsgId msgId; // constructs null ID
  1407 	TFSMailMsgId msgId; // constructs null ID
  1394     if ( 0 <= aItemIdx && aItemIdx < iModel->Count() )
  1408     if ( 0 <= aItemIdx && aItemIdx < iModel->Count() )
  1395         {
  1409         {
  1396         CFSEmailUiMailListModelItem* item =
  1410         CFSEmailUiMailListModelItem* item =
  1397     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx));
  1411     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx));
  1398     	if ( item->ModelItemType() == ETypeMailItem )
  1412     	if ( item && item->ModelItemType() == ETypeMailItem )
  1399     	    {
  1413     	    {
  1400     	    msgId = item->MessagePtr().GetMessageId();
  1414     	    msgId = item->MessagePtr().GetMessageId();
  1401     	    }
  1415     	    }
  1402         }
  1416         }
  1403 
  1417 
  1410 	TFSMailMsgId msgId;
  1424 	TFSMailMsgId msgId;
  1411 	for ( TInt i=0; i<iModel->Count();i++)
  1425 	for ( TInt i=0; i<iModel->Count();i++)
  1412 		{
  1426 		{
  1413 		CFSEmailUiMailListModelItem* item =
  1427 		CFSEmailUiMailListModelItem* item =
  1414 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1428 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1415 		if ( item->ModelItemType() == ETypeMailItem &&
  1429 		if ( item && item->ModelItemType() == ETypeMailItem &&
  1416 		     aListId == item->CorrespondingListId() )
  1430 		     aListId == item->CorrespondingListId() )
  1417 			{
  1431 			{
  1418 			msgId = item->MessagePtr().GetMessageId();
  1432 			msgId = item->MessagePtr().GetMessageId();
  1419 			break;
  1433 			break;
  1420 			}
  1434 			}
  1428 	CFSMailMessage* msgPtr(NULL);
  1442 	CFSMailMessage* msgPtr(NULL);
  1429 	for ( TInt i=0; i<iModel->Count();i++)
  1443 	for ( TInt i=0; i<iModel->Count();i++)
  1430 		{
  1444 		{
  1431 		CFSEmailUiMailListModelItem* item =
  1445 		CFSEmailUiMailListModelItem* item =
  1432 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1446 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1433 		if ( aListId == item->CorrespondingListId() )
  1447 		if ( item && aListId == item->CorrespondingListId() )
  1434 			{
  1448 			{
  1435 			msgPtr = &item->MessagePtr();
  1449 			msgPtr = &item->MessagePtr();
  1436 			}
  1450 			}
  1437 		}
  1451 		}
  1438 	return *msgPtr;
  1452 	return *msgPtr;
  1477 
  1491 
  1478 	for ( TInt i=0; i<iModel->Count() ; i++ )
  1492 	for ( TInt i=0; i<iModel->Count() ; i++ )
  1479 		{
  1493 		{
  1480 		CFSEmailUiMailListModelItem* item =
  1494 		CFSEmailUiMailListModelItem* item =
  1481 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1495 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
  1482 		if ( item->ModelItemType() == ETypeMailItem &&
  1496 		if ( item && item->ModelItemType() == ETypeMailItem &&
  1483 		     aMessageId == item->MessagePtr().GetMessageId() )
  1497 		     aMessageId == item->MessagePtr().GetMessageId() )
  1484 			{
  1498 			{
  1485 			idx = i;
  1499 			idx = i;
  1486 			break;
  1500 			break;
  1487 			}
  1501 			}
  1540 		StopSearchL();
  1554 		StopSearchL();
  1541 		}
  1555 		}
  1542 
  1556 
  1543 	CFSEmailUiMailListModelItem* item =
  1557 	CFSEmailUiMailListModelItem* item =
  1544 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
  1558 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
  1545 	if ( item->ModelItemType() == ETypeMailItem )
  1559 	if ( item && item->ModelItemType() == ETypeMailItem )
  1546 		{
  1560 		{
  1547 		// First make sure that the highlighted message really exists in the store
  1561 		// First make sure that the highlighted message really exists in the store
  1548 		// Get confirmed msg ptr
  1562 		// Get confirmed msg ptr
  1549 		CFSMailMessage* confirmedMsgPtr(0);
  1563 		CFSMailMessage* confirmedMsgPtr(0);
  1550 		TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
  1564 		TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
  2045     FUNC_LOG;
  2059     FUNC_LOG;
  2046 	if ( iSearchList->Count() )
  2060 	if ( iSearchList->Count() )
  2047 		{
  2061 		{
  2048 		CFSEmailUiMailListModelItem* selectedItem =
  2062 		CFSEmailUiMailListModelItem* selectedItem =
  2049 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
  2063 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
  2050 
  2064         if ( selectedItem ) // Safety
  2051 	 	TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
  2065             {
  2052 	 	if ( (wasRead && !aRead) || (!wasRead && aRead) )
  2066             TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
  2053 	 	    {
  2067             if ( (wasRead && !aRead) || (!wasRead && aRead) )
  2054 	 	    // Read status is changed
  2068                 {
  2055 	 	    iMsgDataCouldBeChanged = ETrue;
  2069                 // Read status is changed
  2056 
  2070                 iMsgDataCouldBeChanged = ETrue;
  2057     		if ( aRead )
  2071 
  2058      			{
  2072                 if ( aRead )
  2059     			// Send flags, local and server
  2073                     {
  2060      			selectedItem->MessagePtr().SetFlag( EFSMsgFlag_Read );
  2074                     // Send flags, local and server
  2061     			}
  2075                     selectedItem->MessagePtr().SetFlag( EFSMsgFlag_Read );
  2062     		else
  2076                     }
  2063     			{
  2077                 else
  2064     			// Send flags, local and server
  2078                     {
  2065      			selectedItem->MessagePtr().ResetFlag( EFSMsgFlag_Read );
  2079                     // Send flags, local and server
  2066     			}
  2080                     selectedItem->MessagePtr().ResetFlag( EFSMsgFlag_Read );
  2067     		selectedItem->MessagePtr().SaveMessageL();	// Save flag
  2081                     }
  2068     		// Switch icon to correct one
  2082                 selectedItem->MessagePtr().SaveMessageL();	// Save flag
  2069     		UpdateMsgIconAndBoldingL( HighlightedIndex() );
  2083                 // Switch icon to correct one
  2070 	 	    }
  2084                 UpdateMsgIconAndBoldingL( HighlightedIndex() );
  2071 		}
  2085                 }
  2072 	}
  2086             }
  2073 
  2087         }
       
  2088 	} 
       
  2089 	
  2074 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL()
  2090 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL()
  2075 	{
  2091 	{
  2076     FUNC_LOG;
  2092     FUNC_LOG;
  2077 	if ( iModel && iModel->Count() ) // Needed safety check
  2093 	if ( iModel && iModel->Count() ) // Needed safety check
  2078 		{
  2094 		{
  2079 		TInt highlightedIndex = HighlightedIndex();
  2095 		TInt highlightedIndex = HighlightedIndex();
  2080 		CFSEmailUiMailListModelItem* selectedItem =
  2096 		CFSEmailUiMailListModelItem* selectedItem =
  2081 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
  2097 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
  2082 		if ( selectedItem->ModelItemType() == ETypeMailItem )
  2098 		if ( selectedItem && selectedItem->ModelItemType() == ETypeMailItem )
  2083 			{
  2099 			{
  2084 			CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
  2100 			CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
  2085 			if ( msgPtr )
  2101 			if ( msgPtr )
  2086 				{
  2102 				{
  2087 				CFSMailFolder* folderPtr =
  2103 				CFSMailFolder* folderPtr =