diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialFullNumber.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialFullNumber.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,356 +0,0 @@ -/* -* Copyright (c) 2002-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 TAknFepUiInputStateInitialFullNumber methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialFullNumber.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepManager.h" - -#include -#include //FeatureManager -#include // MPtiEngineCompositionDataInterface -#include - -// CONSTANTS -const TInt KNumAllowedIdleNumericChars = 21; - -_LIT(KAknFepPlainNumbers, "1234567890"); -const TUint16 KAllAllowedNumericChars[] = - {'*','+','p','w','#','1','2','3','4','5','6','7','8','9','0', ';','.',',','-','E','?'}; -const TKeyEvent KEventsForSecondPass[] = - { - {42, EStdKeyNkpAsterisk, 3, 0}, - {43, EStdKeyNkpPlus, 3, 0}, - {112, 80, EModifierAutorepeatable, 0}, - {119, 87, EModifierAutorepeatable, 0}, - {35, EStdKeyHash, EModifierAutorepeatable, 0}, - {EPtiKey1, EPtiKey1, EModifierAutorepeatable, 0}, - {EPtiKey2, EPtiKey2, EModifierAutorepeatable, 0}, - {EPtiKey3, EPtiKey3, EModifierAutorepeatable, 0}, - {EPtiKey4, EPtiKey4, EModifierAutorepeatable, 0}, - {EPtiKey5, EPtiKey5, EModifierAutorepeatable, 0}, - {EPtiKey6, EPtiKey6, EModifierAutorepeatable, 0}, - {EPtiKey7, EPtiKey7, EModifierAutorepeatable, 0}, - {EPtiKey8, EPtiKey8, EModifierAutorepeatable, 0}, - {EPtiKey9, EPtiKey9, EModifierAutorepeatable, 0}, - {EPtiKey0, EPtiKey0, EModifierAutorepeatable, 0}, - {59, EStdKeySemiColon, EModifierAutorepeatable, 0}, - {46, 122, EModifierAutorepeatable, 0}, - {44, 121, EModifierAutorepeatable, 0}, - {45, 130, EModifierAutorepeatable, 0}, - {101, 69, EModifierAutorepeatable|EModifierLeftShift, 0}, - {63, EStdKeyForwardSlash, EModifierAutorepeatable|EModifierLeftShift, 0} - }; - -/** - * AknFepUiInputStateInitialFullNumber class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialFullNumber::TAknFepUiInputStateInitialFullNumber -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialFullNumber::TAknFepUiInputStateInitialFullNumber( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialFullNumber::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialFullNumber::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const TWidthChar width = iOwner->FepMan()->CharacterWidth(); - TPtiEngineInputMode inputmode = EPtiEngineInputModeNone; - switch(width) - { - case EHalfWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineQwerty - : EPtiEngineNumeric; - break; - - case EFullWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineFullWidthNumericQwerty - : EPtiEngineFullWidthNumeric; - break; - - default: // no operation - break; - } - if (inputmode != EPtiEngineInputModeNone) - { - ptiEngine->SetInputMode(inputmode); - - if (inputmode == EPtiEngineNumeric) - { - TRAP_IGNORE(ptiEngine->SetExternalKeyMapL(EPtiEngineNumeric, EPtiKeyStar, - (TDesC&)iOwner->NumberModeKeyMapping(), - EPtiCaseLower)) - } - } - - ptiEngine->ClearCurrentWord(); - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool rtn = EFalse; - - switch(ptiengine->InputMode()) - { - case EPtiEngineNumeric: // non-Qwerty number input - rtn = HandleOwnKeyL(aKey, aLength); - break; - case EPtiEngineQwerty: // Qwerty number input - case EPtiEngineFullWidthNumericQwerty: // Qwerty full-width number input - rtn = HandleQwertyKeyL(aKey, aLength, fepMan->CharacterWidth()); - break; - case EPtiEngineFullWidthNumeric: // non-Qwerty full-width number input - rtn = TAknFepUiInputStateInitialJapaneseBase::HandleKeyL(aKey, aLength); - break; - default: - break; - } - return rtn; - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleOwnKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (aLength == ELongKeyPress) - { - switch (aKey) - { - case EKeyRightArrow: - case EKeyLeftArrow: - case EKeyDownArrow: - case EKeyUpArrow: - case EKeyBackspace: - return EFalse; - case EPtiKeyStar: - if (!fepMan->HashKeySelectionInUse() - && fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - default: - return ETrue; - } - } - - if(aKey == EPtiKeyStar) - { - TBool append = EFalse; - if (aLength == EShortKeyPress) - { - if (fepMan->EditSubmenuInUse()) - { - if (fepMan->IsOnlyNumericPermitted()) - { - append = ETrue; - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - else - { - append = ETrue; - } - } - } - else - { - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - if (append) - { - iData = aKey; - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - - // star key is inactive if keymapping is empty. - if (text.Length() > 0 && text[0] != 0) - { - fepMan->NewCharacterL(text); - - // Commit immediately if there is only one character associated to the key. - TBuf mapdata; - ptiengine->MappingDataForKey((TPtiKey)aKey, mapdata, ptiengine->Case()); - if (mapdata.Length() <= 1) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - } - } - - return ETrue; - } - - if(iData) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - return EFalse; - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleQwertyKeyL(TInt aKey, - TKeyPressLength /*aLength*/, const TWidthChar aWidth) - { - TBool rtn = EFalse; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - - if ( fepMan->IsOnlyNumericPermitted() ) - { - if (aKey == EStdKeySpace || aKey == EStdKeyEnter) - { - // return Consumed - return ETrue; - } - if (!IsQwertyKey(aKey)) - { - // return Not Consumed - return EFalse; - } - - TChar chr(0); - TKeyEvent numKey; - - ptiengine->AppendKeyPress((TPtiKey)aKey); - const MPtiEngineCompositionDataInterface* data = ptiengine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0 && text[0] != 0) - { - TChar compchar = text[0]; - if (aWidth == EFullWidthChar) - { - TBuf<2> halfstring; - TInt convlen = JPLangUtil::ConvertFullToHalfWidth( - text.Left(1), halfstring); - if (convlen > 0) - { - compchar = halfstring[0]; - } - } - for (TInt i = 0; i < KNumAllowedIdleNumericChars; i++) - { - - if (compchar == KAllAllowedNumericChars[i]) - { - numKey = KEventsForSecondPass[i]; - chr = KAllAllowedNumericChars[i]; - break; - } - } - } - - if ((chr != 0) && - ((iOwner->NumberModeKeyMapping().Locate(chr) != KErrNotFound) || - (KAknFepPlainNumbers().Locate(chr) != KErrNotFound)) || - fepMan->IsAllowedKeymappingForNumberMode(chr)) - { - if (aWidth == EFullWidthChar) - { - // Full-width characters are committed immediately. - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - } - else - { - // If editor is in number mode and incoming key press would produce - // any of the allowed number mode characters, - // resend suitable key event let it pass through FEP. That way phone idle - // receives the event too. This also takes care of remapping - // different qwerty keymap layouts to edwin events. - fepMan->SetFlag(CAknFepManager::EFlagPassNextKey); - CCoeEnv::Static()->SimulateKeyEventL(numKey, EEventKey); - } - } - ptiengine->ClearCurrentWord(); - - return ETrue; - } - - return rtn; - } - - - -// Functions from MPtiObserver interface -void TAknFepUiInputStateInitialFullNumber::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - } - -// End of file