diff -r 0f326f2e628e -r a7632c26d895 fep/aknfep/src/aknfepuiinputstateindicphoneticqwerty.cpp --- a/fep/aknfep/src/aknfepuiinputstateindicphoneticqwerty.cpp Fri Jul 23 16:49:01 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateIndicPhoneticQwerty methods. -* -*/ - - - - - - - - - - - - -#include "aknfepuiinputstateindicphoneticqwerty.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" -#include "AknFepPanic.h" - -#include -#include -#include -#include -#include -#include - -TAknFepInputStateIndicPhoneticQwerty:: -TAknFepInputStateIndicPhoneticQwerty(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateQwerty(aOwner) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - TRAP_IGNORE(ptiengine->ActivateLanguageL(KLangHindiPhonetic, - EPtiEngineInputModeIndicPhoneticQwerty));//KLangHindiPhonetic - ptiengine->SetCase(EPtiCaseLower); - } - -TBool TAknFepInputStateIndicPhoneticQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - __ASSERT_DEBUG(ptiengine != NULL,AknFepPanic(EAknFepPanicNoValidPtiEngine)); - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - __ASSERT_DEBUG(fepMan != NULL,AknFepPanic(EAknFepPanicNoValidFepManager)); - - if(!IsQwertyKey(aKey)|| - fepMan->IsOnlyNumericPermitted()|| - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - fepMan->CommitInlineEditL(); - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - ret = TAknFepInputStateQwerty::HandleKeyL(aKey, aLength); - } - else if (aKey == EPtiKeyQwertySpace ||aKey == EStdKeyEnter) - { - TInt languageCode = 0; - MPtiLanguage* curlang = ptiengine->CurrentLanguage(); - if (curlang) - { - languageCode = curlang->LanguageCode(); - } - - // Space clears Explicite halant for North Indian Languages. - if(IsToRemoveHalantForLanguage(languageCode)) - { - RemoveHalantL(TLanguage(languageCode)); - fepMan->CommitInlineEditL(); - } - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - ret = EFalse; - } - else - { - TBool isCharacter = ETrue; - if (!iData) - { - isCharacter = IsCharacterKey(aKey); - } - - HandleCaseChange(aKey,isCharacter); - iData = aKey; - - TBool keyEventHandledByFep = ETrue; - - TPhoneticArg arg; - TBuf destinationbuf; - destinationbuf.Zero(); - - TInt errorcode = 0; - - if(!((aKey == EPtiKeyStar) || - (aKey == EPtiKeyQwerty8 && fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) || - (aKey == EPtiKeyQwertySpace))) - { - TPtrC string = ptiengine->AppendKeyPress((TPtiKey)aKey); - arg.iChar = string[0]; - arg.iDest = & destinationbuf; - errorcode = ptiengine->HandleCommandL(EPtiCommandGetPhoneticText,REINTERPRET_CAST( TAny*, &arg)); - } - else - { - errorcode = ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - } - - switch(errorcode) - { - case KErrNone: - { - switch(arg.iState) - { - case EIndicSyllableStateInsideSyllable: - { - if (destinationbuf.Length()) - { - fepMan->NewCharacterSequenceL(destinationbuf, - EIndicInputResponsePhoneticQwertyText); - } - } - break; - case EIndicSyllableStateSyllableBroken: - { - fepMan->CommitInlineEditL(); - if (destinationbuf.Length()) - { - fepMan->NewCharacterSequenceL(destinationbuf, - EIndicInputResponsePhoneticQwertyText); - } - } - break; - default: - break; - } - } - break; - case KErrOverflow: - { - fepMan->NewCharacterSequenceL(destinationbuf,EIndicInputResponsePhoneticQwertyText); - fepMan->CommitInlineEditL(); - ptiengine->HandleCommandL(EPtiCommandClearPhoneticBuffer,NULL); - } - break; - default: - break; - } - ptiengine->ClearCurrentWord(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - - return ret; - } - -TBool TAknFepInputStateIndicPhoneticQwerty::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ)|| - (aKey == EPtiKeyQwertyFullstop) || - (aKey == EPtiKeyStar || - (aKey == EPtiKeyQwerty8 && - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode))) || - aKey == EPtiKeyQwertySpace || - aKey == EStdKeyEnter) - { - response = ETrue; - } - return response; - } - -void TAknFepInputStateIndicPhoneticQwerty::RemoveHalantL(TLanguage aLanguage) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if(TAknFepUiIndicInputManager::IsCharVirama(fepMan->PreviousChar(), aLanguage)) - { - fepMan->RemovePreviousCharacterL(); - } - } - -TBool TAknFepInputStateIndicPhoneticQwerty::IsToRemoveHalantForLanguage(TInt aLanguage) - { - TBool ret = EFalse; - switch(aLanguage) - { - case KLangHindiPhonetic: - ret = ETrue; - break; - } - return ret; - } - - -// End of file