diff -r 502e5d91ad42 -r 15e4dd19031c idlefw/plugins/wsplugin/src/numerickeyhandler.cpp --- a/idlefw/plugins/wsplugin/src/numerickeyhandler.cpp Mon Mar 15 12:41:53 2010 +0200 +++ b/idlefw/plugins/wsplugin/src/numerickeyhandler.cpp Wed Mar 31 22:04:35 2010 +0300 @@ -24,6 +24,10 @@ #include #include +#include +#include +#include + #include #include #include @@ -153,11 +157,11 @@ TBool CNumericKeyHandler::CheckPostToTarget(const TRawEvent& aRawEvent ) const { const TInt scanCode = aRawEvent.ScanCode(); + const TUint modifiers = iUiState->Modifiers(); if ( iQwertyMode ) { - // Don't pass the check if shift is pressed. - const TUint modifiers = iUiState->Modifiers(); + // Don't pass the check if shift is pressed. if(( modifiers & EModifierShift ) == 0 ) { TInt numericKeysCount = iNumericKeys.Count(); @@ -190,7 +194,15 @@ } } } - return EFalse; + + // Homescreen should open dialer also with alpha characters, if dialer is in + // mode that accepts alpha characters into number entry (ou1cimx1#299396) + + const TInt KPhoneKeyStart = 33; + const TInt KPhoneKeyEnd = 127; + + return ( ( AllowAlphaNumericMode() ) && ( ( scanCode >= KPhoneKeyStart && + scanCode <= KPhoneKeyEnd ) || modifiers & EModifierSpecial ) ); } @@ -296,15 +308,73 @@ iInputLanguage = aValue; } +/** + * Check alpha numeric mode. + */ +TBool CNumericKeyHandler::AllowAlphaNumericMode() const + { + return ( EasyDialingEnabled() || VoIPSupported() ); + } + +/** + * Check if voip supported. + */ +TBool CNumericKeyHandler::VoIPSupported() const + { + TBool voipSupported( EFalse ); + CSPSettings* serviceProviderSettings( NULL ); + + TRAP_IGNORE( serviceProviderSettings = CSPSettings::NewL() ); + + if ( serviceProviderSettings ) + { + voipSupported = serviceProviderSettings->IsFeatureSupported( + ESupportInternetCallFeature ); + + delete serviceProviderSettings; + } + + return voipSupported; + } + +/** + * Check if easy dialing enabled. + */ +TBool CNumericKeyHandler::EasyDialingEnabled() const + { + TBool easyDialingEnabled( EFalse ); + if ( FeatureManager::FeatureSupported( + KFeatureIdProductIncludesHomeScreenEasyDialing ) ) + { + CRepository* cenrep( NULL ); + TInt easyDialingSetting; + + TRAP_IGNORE( cenrep = CRepository::NewL( KCRUidEasyDialSettings ) ); + + if ( cenrep ) + { + TInt err = cenrep->Get( KEasyDialing, easyDialingSetting ); + if ( !err && easyDialingSetting ) + { + easyDialingEnabled = ETrue; + } + + delete cenrep; + } + } + + return easyDialingEnabled; + } + void CNumericKeyHandler::HandleNotifyGeneric(TUint32 aKey) - { - if( aKey == KAknFepInputTxtLang ) - { - TInt newValue = iInputLanguage; - iInputLanguageRepository->Get( KAknFepInputTxtLang, newValue ); - HandleInputLanguageChanged( newValue ); - } - } + { + if( aKey == KAknFepInputTxtLang ) + { + TInt newValue = iInputLanguage; + iInputLanguageRepository->Get( KAknFepInputTxtLang, newValue ); + HandleInputLanguageChanged( newValue ); + } + } void CNumericKeyHandler::HandleNotifyError (TUint32 /*aKey*/, TInt /*aError*/, CCenRepNotifyHandler* /*aHandler*/)