diff -r fbb813aef148 -r 7e4e4bcc75b6 messagingappbase/mce/src/MceMessageListView.cpp --- a/messagingappbase/mce/src/MceMessageListView.cpp Tue May 11 16:10:04 2010 +0300 +++ b/messagingappbase/mce/src/MceMessageListView.cpp Tue May 25 12:38:02 2010 +0300 @@ -221,24 +221,24 @@ // Set the default sort order iSortOrder = EMceCmdSortByDate; iOrdering = EFalse; - if ( iMsgListContainer ) - { - TMsvId fId = iMsgListContainer->CurrentFolderId(); - for( TInt loop = 0; loop < iFolderItemArray->Count() ; loop++ ) - { - TMceFolderItem item = ((*iFolderItemArray)[loop]); - if ( item.iFolderId == fId && aPrevViewId == TDRVIEWID) - { - iSortOrder = item.iSortOrder; - iOrdering = item.iOrdering; - } + if ( iMsgListContainer ) + { + TMsvId fId = iMsgListContainer->CurrentFolderId(); + for( TInt loop = 0; loop < iFolderItemArray->Count() ; loop++ ) + { + TMceFolderItem item = ((*iFolderItemArray)[loop]); + if ( item.iFolderId == fId && aPrevViewId == TDRVIEWID) + { + iSortOrder = item.iSortOrder; + iOrdering = item.iOrdering; } - } - if (aPrevViewId != TDRVIEWID ) + } + } + if (aPrevViewId != TDRVIEWID ) { - // Reset the sort order - iFolderItemArray->Reset(); - } + // Reset the sort order + iFolderItemArray->Reset(); + } if ( iMsgListContainer ) { @@ -249,47 +249,51 @@ TBool editorLaunched = EFalse; TBool launchingFromOutside = EFalse; TMsvId service = KMsvLocalServiceIndexEntryId; - TMsvEntry entry; + TMsvEntry entry; + TInt msgMtmUid = 0; if ( aCustomMessageId.iUid > KMsvRootIndexEntryId ) { - + if ( iSession->GetEntry( aCustomMessageId.iUid, service, entry ) != KErrNone ) { iSession->GetEntry( KMsvGlobalInBoxIndexEntryId, service, entry ); // this should always succeed! } - + // outside the app. launchingFromOutside = ETrue; - //check, if message store has been changed from MMC to phone - iMceUi->ToPhoneMemoryQueryL( ETrue ); - // Set the forder containing the entry - if ( entry.iType == KUidMsvMessageEntry ) - { - // The aCustomMessageId is an ID of a message, set Inbox - SetFolderL( entry.Parent() ); - id = aCustomMessageId.iUid; - } - else - { + if ( entry.iType == KUidMsvMessageEntry ) + { + // The aCustomMessageId is an ID of a message, set Inbox + SetFolderL( entry.Parent() ); + id = aCustomMessageId.iUid; + } + else + { // Set the folder based on the given ID iFolderId = aCustomMessageId.iUid; - - } + // this is performance optimization, start to launch viewer before container creation + if ( !iMsgListContainer && entry.Id() == KMsvGlobalInBoxIndexEntryId ) + { + if ( LaunchViewerWhenOneUnreadL( msgMtmUid ) > KErrNotFound ) + { + editorLaunched = ETrue; + } + } + } iMceUi->SetDontExitOnNextOperationComplete(); } - if ( iMsgListContainer && - iCurrentListType != GetFolderListBoxType()) - { - ListboxTypeChangedL(); - } - else - { - CreateListboxL(); - } - + if ( iMsgListContainer && + iCurrentListType != GetFolderListBoxType()) + { + ListboxTypeChangedL(); + } + else + { + CreateListboxL(); + } if ( iMsgListContainer && aPrevViewId == TDRVIEWID ) { // Save the sort ordering in the message store @@ -977,6 +981,16 @@ TInt aResourceId, CEikMenuPane* aMenuPane ) { + TInt listPopulated = 1; + //Get the value, accordingly we can dim/undim mark/unmark for one row list only + if ( iCurrentListType == EMceListTypeOneRow ) + { + TInt r = RProperty::Get(KPSUidMuiu, KMuiuOneRowListPopulated,listPopulated); + if ( r!= KErrNone ) + { + User::LeaveIfError(r); + } + } if ( !iMceViewActivated ) { return; @@ -1001,6 +1015,10 @@ switch ( aResourceId ) { case R_MCE_FOLDER_MENU: + if(!listPopulated) + { + aMenuPane->SetItemDimmed( EMceCmdEditList, ETrue ); + } aMenuPane->SetItemDimmed( EAknCmdHelp, !FeatureManager::FeatureSupported( KFeatureIdHelp ) ); @@ -1834,8 +1852,6 @@ // Coverty change, NULL Return, http://ousrv057/cov.cgi?cid=101800 if ( uiData ) { - aMenuPane->SetItemDimmed( EAknCmdOpen, - uiData->OperationSupportedL( KMtmUiFunctionOpenMessage, currentEntry ) ); aMenuPane->SetItemDimmed( EMceCmdDelete, uiData->OperationSupportedL( KMtmUiFunctionDeleteMessage, currentEntry ) ); } @@ -2294,18 +2310,8 @@ // ---------------------------------------------------- void CMceMessageListView::EditMenuL( CEikMenuPane* aMenuPane ) const { - TInt listPopulated =1; - //Get the value, accordingly we can dim/undim mark all for one row list only - if(!iCurrentListType) - { - TInt r = RProperty::Get( KPSUidMuiu, KMuiuOneRowListPopulated, listPopulated ); - if ( r != KErrNone ) - { - User::LeaveIfError( r ); - } - } - // This function is not called if empty folder because in that case - // EditMenu is hidden + // This function is not called if empty folder/list is yet to be populated + // because in that case EditMenu is hidden aMenuPane->SetItemDimmed( EAknCmdMarkReadMsgs, ETrue ); TInt count = iMsgListContainer->SelectionCount(); @@ -2326,7 +2332,7 @@ } } - if ( ( count + SubfolderCount() ) == iMsgListContainer->Count() || !listPopulated) + if ( ( count + SubfolderCount() ) == iMsgListContainer->Count()) { //if all selected, disable markall aMenuPane->SetItemDimmed( EAknMarkAll, ETrue );