diff -r c84cf270c54f -r 8871b09be73b phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp --- a/phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp Tue Feb 02 00:10:04 2010 +0200 +++ b/phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp Fri Feb 19 22:50:26 2010 +0200 @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include "cphonecustomizationvoip.h" #include "tphonecmdparaminteger.h" @@ -207,7 +209,7 @@ { case EPhoneDialerCmdTouchInput: { - if ( !AllowAlphaNumericMode() ) + if ( !VoIPSupportedL() ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } @@ -232,7 +234,7 @@ case EPhoneInCallCmdNewCall: { if ( !FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) && - AllowAlphaNumericMode() && + VoIPSupportedL() && R_PHONEUI_NEW_CALL_MENU_VOIP != aResourceId ) { @@ -457,6 +459,11 @@ TBool alphaModeSupported( EFalse ); TRAP_IGNORE( alphaModeSupported = VoIPSupportedL() ); + + if ( !alphaModeSupported ) + { + alphaModeSupported = EasyDialingEnabled(); + } return alphaModeSupported; } @@ -680,6 +687,30 @@ return voipSupported; } +// ----------------------------------------------------------- +// CPhoneCustomizationVoip::EasyDialingEnabled +// ----------------------------------------------------------- +// +TBool CPhoneCustomizationVoip::EasyDialingEnabled() + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneCustomizationVoip::EasyDialingEnabled" ); + + TBool easyDialingEnabled( EFalse ); + if ( FeatureManager::FeatureSupported( KFeatureIdProductIncludesHomeScreenEasyDialing ) ) + { + TInt easyDialingSetting; + TInt err = CPhoneCenRepProxy::Instance()->GetInt( + KCRUidEasyDialSettings, + KEasyDialing, + easyDialingSetting); + if ( !err && easyDialingSetting ) + { + easyDialingEnabled = ETrue; + } + } + return easyDialingEnabled; + } // ----------------------------------------------------------- // CPhoneCustomizationVoip::ModifyInCallMenuL @@ -776,11 +807,12 @@ HBufC* phoneNumber = PhoneNumberFromEntryLC(); + TInt index(KErrNotFound); + if ( aResourceId == R_PHONEUI_NUMBERACQ_OPTIONS_CALL_MENU ) { if ( !CPhoneKeys::Validate( phoneNumber->Des() ) ) - { - TInt index(KErrNotFound); + { if ( aMenuPane.MenuItemExists( EPhoneNumberAcqCmdCall, index ) ) { aMenuPane.DeleteMenuItem( EPhoneNumberAcqCmdCall ); @@ -794,12 +826,12 @@ aMenuPane.AddMenuItemL( voipMenuItem->iData ); } - else if ( iStateMachine.PhoneEngineInfo()->PhoneNumberIsServiceCode() ) + else if ( !aMenuPane.MenuItemExists( EPhoneNumberAcqCmdCall, index ) ) { - // When user writes string recognized as service code (eg.*#31# -> clir off) - // call menu is not visible. Internet call must still be possible so - // internet call option is added here to the menu. - + // Call menu is removed if user inserts anything that is not + // a valid cs number, so must add Internet call option here where + // we know that voip is however supported. + // If number entry is empty don't add internet call option if ( phoneNumber->Length() ) { @@ -1089,7 +1121,16 @@ if( array[i].iCallState == CTelMenuExtension::EOutgoing || array[i].iCallState == CTelMenuExtension::EActive || array[i].iCallState == CTelMenuExtension::EOnHold ) - { + { + if( aFeature == EFeatureTransfer && + array[i].iCallState == CTelMenuExtension::EOutgoing && + array[i].iCallType == CTelMenuExtension::EPsVoice ) + { + // If there is outgoing VoIP call then transfer is not supported + supported = EFalse; + break; + } + if( firstCallType == CTelMenuExtension::EUninitialized ) { // Memorize first found call type @@ -1380,7 +1421,7 @@ "CPhoneCustomizationVoip::AddHandoverMenuItemIfNeededL" ); // Menu items to be added - if ( iVccHandler && AllowAlphaNumericMode() && + if ( iVccHandler && VoIPSupportedL() && ( aResourceId == R_PHONEUI_CALLHANDLING_INCALL_OPTIONS_MENU || aResourceId == R_PHONEUI_CALLWAITING_OPTIONS_MENU || aResourceId == R_PHONEUI_ACTIVEANDHELDCALL_OPTIONS_MENU ||