diff -r 978afdc0236f -r 85902f042028 commonuis/CommonUi/src/FindItemMenu.cpp --- a/commonuis/CommonUi/src/FindItemMenu.cpp Tue Sep 14 21:48:24 2010 +0300 +++ b/commonuis/CommonUi/src/FindItemMenu.cpp Wed Sep 15 12:29:17 2010 +0300 @@ -882,18 +882,54 @@ // Replace cmd call with AIW menu if more than one option available in AIW // menu // Note: count of VoIP profiles is not static. If phone contains VoIP - // profiles there must be Internet call command in call submenu. + // profiles there must be Internet call command in call submenu. + // No context sensitive menu now. And new requirement is to show + // call menu for normal item and voip menu for sip address if voip is enabled. TInt dummy = 0; - if ( ( !iHideCallMenu || - ( iFindItemVoIPExtension->IsVoIPSupported() && - iFindItemVoIPExtension->VoIPProfilesExistL() ) ) && + if ( itemType == CItemFinder::EEmailAddress && + iFindItemVoIPExtension->IsVoIPSupported() && + iFindItemVoIPExtension->VoIPProfilesExistL() && iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) && - !iHideCallSubMenu ) - { + !( iMenuItemFlags & CFindItemMenu::ECallItem ) + ) + { + // CMyMenuPane is used only to get the aiw menu item + // for sip address, as it is an argument of the InitializeMenuPaneL + CMyMenuPane* aiwVoipMenu = + new ( ELeave ) CMyMenuPane( ( MEikMenuObserver* )this ); // not used really + CleanupStack::PushL( aiwVoipMenu ); + TResourceReader callUiReader; + iCoeEnv->CreateResourceReaderLC( + callUiReader, R_FINDMENU_CALLUI_AIW_SUBMENU ); + aiwVoipMenu->ConstructFromResourceL( callUiReader ); + CleanupStack::PopAndDestroy(); // callUiReader + + CAiwGenericParamList* inList = CAiwGenericParamList::NewLC(); + + // For SIP Address, use sip parameters + TAiwGenericParam param( EGenericParamSIPAddress ); + + // get the aiw menu item for sip address + inList->AppendL( param ); + iServiceHandler->InitializeMenuPaneL( + *( CEikMenuPane* )aiwVoipMenu, + R_FINDMENU_CALLUI_AIW_SUBMENU, + EFindMenuPlaceHolderCallUI, + *inList ); + + // Add all the menus for aiw to context main menu now. + for ( TInt i = 0; i < aiwVoipMenu->NumberOfItemsInPane(); i++ ) + { + iMenuPane->AddMenuItemL( aiwVoipMenu->ItemDataByIndexL( i ), EFindItemCmdCall ); + } + + // Now options of VOIP call and voice call are exclusive. + // For email( sip ) address, voip is used. So set the call + // menu to dimmed. iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue ); - iMenuPane->AddMenuItemsL( - R_FINDMENU_CALLUI_AIW_ITEM, - EFindItemCmdCall ); + + CleanupStack::PopAndDestroy( inList ); + CleanupStack::PopAndDestroy( aiwVoipMenu ); } } @@ -932,7 +968,7 @@ #ifndef RD_UNIFIED_EDITOR if ( !iEmailOverSmsFeatureSupported ) { - mtmFilter->AppendL(KSenduiMtmSmsUid); + mtmFilter->AppendL(KSenduiMtmSmsUid); } // Hide MMS if not supported if (!iMMSFeatureSupported) @@ -944,7 +980,7 @@ // Hide E-Mail if nosupported or phonenumber if ( !iEmailUiFeatureSupported || itemType == CItemFinder::EPhoneNumber ) { - mtmFilter->AppendL(KSenduiMtmSmtpUid); + mtmFilter->AppendL(KSenduiMtmSmtpUid); mtmFilter->AppendL(KSenduiMtmImap4Uid); mtmFilter->AppendL(KSenduiMtmPop3Uid); mtmFilter->AppendL(KSenduiMtmSyncMLEmailUid); @@ -952,7 +988,7 @@ // Hide Audio if not supported or E-mail address if( !iAudioMessagingFeatureSupported || itemType == CItemFinder::EEmailAddress) { - mtmFilter->AppendL(KSenduiMtmAudioMessageUid); + mtmFilter->AppendL(KSenduiMtmAudioMessageUid); } TUid uid = iSendUi->ShowTypedQueryL( CSendUi::EWriteMenu, NULL, sendingCapabilities, mtmFilter ); @@ -1302,7 +1338,7 @@ else if ( itemType == CItemFinder::EEmailAddress && ( fieldInfo->FieldId() == EPbkFieldIdEmailAddress || #ifdef __VOIP - iFindItemVoIPExtension->IsVoIPSupported() && + iFindItemVoIPExtension->IsVoIPSupported() && #else iVoIPFeatureSupported && #endif @@ -1561,6 +1597,18 @@ // sets call type for VoIP iDialData->SetCallType( CAiwDialData::EAIWVoiP ); } + else + { + // sets call type for call, as now only voice call + // exists in menu now. + iDialData->SetCallType( CAiwDialData::EAIWVoice ); + } + } + else + { + // sets call type for call, as now only voice call + // exists in menu now. + iDialData->SetCallType( CAiwDialData::EAIWVoice ); } #endif // RD_VOIP_REL_2_2 iDialData->SetPhoneNumberL( numberPtr );