--- a/fep/aknfep/src/AknFepInputStateInitialChineseGenericHalfQwerty.cpp Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,456 +0,0 @@
-/*
-* Copyright (c) 2002 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 AknFepUiInputStateInitialChineseGenericHalfQwerty methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-#include "AknFepUiInputStateInitialChineseGenericHalfQwerty.h"
-#include "AknFepUIManagerStateInterface.h"
-#include "AknFepManagerUIInterface.h"
-#include "AknFepManager.h" //FepMan flag
-
-#include <PtiEngine.h>
-#include <AknFepFnKeyManager.h>
-
-const TInt KFnMappedCharacters = 5;
-_LIT(KEmotionSmile, "\x003A\x0029");//:)
-_LIT(KEmotionLaugh, "\x003A\x0050");//:P
-_LIT(KEmotionSad, "\x003A\x0028");//:(
-_LIT(KSpace," ");
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::TAknFepInputStateInitialChineseGenericHalfQwerty
-// the construt funtion
-// ---------------------------------------------------------------------------
-//
-TAknFepInputStateInitialChineseGenericHalfQwerty
-::TAknFepInputStateInitialChineseGenericHalfQwerty(MAknFepUIManagerStateInterface* aOwner, TInt /*aMode*/)
- :TAknFepInputStateHalfQwerty(aOwner)
- {
- iState = EInitial;
- CPtiEngine* ptiengine = iOwner->PtiEngine();
- TPtiTextCase caseMode = ptiengine->Case();
- ptiengine->ClearCurrentWord();
- ptiengine->SetInputMode(EPtiEngineHalfQwerty);
- ptiengine->SetCase(caseMode);
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL
-// handle key event
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength)
- {
- CPtiEngine* ptiengine = iOwner->PtiEngine();
- TBool ret = EFalse;
- MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
- CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState();
- if ( !fepMan->EditorHasFreeSpace() && fnKeyState )
- {
- return EFalse;
- }
-
- if ( aKey == EPtiKeyQwerty0 )
- {
- aKey = EPtiKeyQwertySpace;
- }
-
- if (iData && (iData != aKey) && aKey != EStdKeyBackspace )
- {
- ptiengine->CancelTimerActivity();
- ptiengine->ClearCurrentWord();
- fepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction );
- iData = 0;
- if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext )
- {
- fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone );
- fnKeyState = CAknFepFnKeyManager::EFnKeyNone;
- }
- }
-
- if( aKey == EStdKeyLeftFunc && !fnKeyState) //chr key
- {
- fepMan->LaunchSelectModeMenuL();
- }
- else if ( HandleEmotionKeyL( aKey, aLength ) )
- {
- return ETrue;
- }
- else if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNone && (aKey
- == EPtiKeyQwertyLeftShift || aKey == EStdKeyF21 ) )
- {
- return EFalse;
- }
- else if ( aKey == EStdKeyLeftArrow || aKey == EStdKeyRightArrow || aKey
- == EStdKeyUpArrow || aKey == EStdKeyDownArrow || aKey
- == EStdKeyBackspace )
- {
- if ( fepMan->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed )
- && fnKeyState )
- {
- return ETrue;
- }
- else
- {
- if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext )
- {
- fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone );
- }
- return EFalse;
- }
- }
- else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice1 ||
- aKey == EStdKeyDevice2 )
- {
- return EFalse;
- }
- else if ( aLength == EShortKeyPress
- && fepMan->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed )
- && aKey != EStdKeyLeftShift )
- {
- return ETrue;
- }
- else if ( ( IsCharacter( aKey ) && aLength == EShortKeyPress )
- && !fepMan->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed )
- && !fepMan->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode )
- && !fnKeyState )
- {
- ptiengine->ClearCurrentWord();
- ptiengine->ResetToneMark();
- if ( iOwner->IsValidChineseInputKeyQwerty( aKey ) )
- {
- if(iOwner->ChangeState(EEntry) == EEntry)
- {
- iOwner->FepMan()->SendUIActivatedNotification();
- }
- }
- else if( aLength == EShortKeyPress )
- {
- iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone );
- return ETrue;
- }
- }
- else if ( fepMan->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode )
- && fepMan->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) )
- {
- ret = ETrue;
- }
- else if ( aKey == EPtiKeyQwertyApostrophe && aLength == ELongKeyPress )
- {
- ret = ETrue;
- }
- else if (IsSCTKey(aKey))
- {
- HandleKeyByShiftOrCharPressedL(aKey,aLength);
- if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress);
- }
- ret = ETrue;
- }
- else if( aKey == EStdKeySpace )
- {
- if ( aLength == EShortKeyPress)
- {
- fepMan->StartInlineEditL();
- fepMan->UpdateInlineEditL( KSpace, 0 );
- fepMan->CommitInlineEditL();
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- }
- }
- else
- {
- TPtrC text;
- TBuf<KFnMappedCharacters> allFnMappedCharacters;
- ptiengine->MappingDataForKey( (TPtiKey)aKey,
- allFnMappedCharacters, EPtiCaseFnLower );
- text.Set( allFnMappedCharacters );
- if ( text.Length() > 0 )
- {
- TBuf<1> chr;
- chr.Append( text[0] );
- fepMan->RemovePreviousCharacterL();
- fepMan->NewCharacterL( chr );
- fepMan->CommitInlineEditL();
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- }
- ptiengine->ClearCurrentWord();
- iData = 0;
- }
- }
- ret = ETrue;
- }
- else
- {
- ret = TAknFepInputStateHalfQwerty::HandleKeyL( aKey, aLength );
- if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext && !IsMultitapkey( aKey ) )
- {
- fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone );
- }
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::IsSCTKey
-// to check whether the key is sct key
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsSCTKey(TInt aKey)
- {
- TBool response = EFalse;
- switch (iOwner->FepMan()->InputMode())
- {
- case EPinyin:
- break;
- case EStroke:
- case EZhuyin:
- if (aKey == EPtiKeyQwertyQ ||aKey == EPtiKeyQwertyA ||aKey
- == EPtiKeyQwertyZ ||aKey == EPtiKeyQwertyO ||aKey
- == EPtiKeyQwertyL)
- {
- response = ETrue;
- }
- break;
- case EStrokeFind:
- case EZhuyinFind:
- if (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ)
- {
- response = ETrue;
- }
- break;
- }
- if ( (/*aKey == EStdKeyFullStop || */aKey == EStdKeySpace )
- && iOwner->FepMan()->FnKeyState() )
- {
- response = ETrue;
- }
- return response;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::IsCharacter
-// to check whether the key stroke is a character key or not
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsCharacter(TInt aKey)
- {
- TBool response = EFalse;
- switch (iOwner->FepMan()->InputMode())
- {
- case EPinyin:
- if (( aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ ) ||
- ( aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9 ) )
- {
- response = ETrue;
- }
- break;
- case EStroke:
- case EStrokeFind:
- if ((aKey == EPtiKeyQwertyE ||aKey == EPtiKeyQwertyT ||aKey
- == EPtiKeyQwertyU ||aKey == EPtiKeyQwertyD ||aKey
- == EPtiKeyQwertyG ||aKey == EPtiKeyQwertyJ ) ||
- (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty6))
- {
- response = ETrue;
- }
- break;
- case EZhuyin:
- if ( (aKey == EPtiKeyQwertyE ||aKey == EPtiKeyQwertyT ||aKey
- == EPtiKeyQwertyU ||aKey == EPtiKeyQwertyD ||aKey
- == EPtiKeyQwertyG ||aKey == EPtiKeyQwertyJ ||aKey
- == EPtiKeyQwertyC ||aKey == EPtiKeyQwertyB ||aKey
- == EPtiKeyQwertyM ||aKey == EPtiKeyQwertySpace ) ||
- (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9))
- {
- response = ETrue;
- }
- break;
- }
- return response;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyByShiftOrCharPressedL
-// Handle the shift key envent
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyByShiftOrCharPressedL(
- TInt aKey, TKeyPressLength aLength)
- {
- TBool ret = EFalse;
- CPtiEngine* ptiengine = iOwner->PtiEngine();
- MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
- fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress);
- TPtiTextCase caseMode = EPtiCaseLower;
- TBool setfnstate = EFalse;
- if (fepMan->IsOnlyNumericPermitted())
- {
- return ret;
- }
- TPtiTextCase shiftedCase = caseMode;
- if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode))
- {
- shiftedCase = EPtiCaseUpper;
- }
- if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) )
- {
- shiftedCase = EPtiCaseChrLower;
- }
- if ( fepMan->FnKeyState() )
- {
- shiftedCase = EPtiCaseFnLower;
- }
- if ( aKey == EPtiKeyQwertyQ ||aKey == EPtiKeyQwertyA ||aKey
- == EPtiKeyQwertyZ ||aKey == EPtiKeyQwertyO ||aKey == EPtiKeyQwertyL )
- {
- shiftedCase = EPtiCaseFnLower;
- setfnstate = ETrue;
- }
- ptiengine->SetCase(shiftedCase);
- TPtrC text;
- text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey));
- if (text.Length())
- {
- if ( aLength == ELongKeyPress && !iOwner->FepMan()->FnKeyState() )
- {
- fepMan->RemovePreviousCharacterL();
- }
- TBuf<1> chr;
- for (TInt jj = 0; jj < text.Length(); jj++)
- {
- chr.Zero();
- chr.Append( text[jj] );
- fepMan->NewCharacterL( chr );
- fepMan->CommitInlineEditL();
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- }
- ptiengine->ClearCurrentWord();
- }
- ret = ETrue;
- }
- if(setfnstate && fepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext )
- {
- ptiengine->SetCase(EPtiCaseLower);
- }
-
- CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState();
- if(fnKeyState == CAknFepFnKeyManager::EFnKeyNext)
- fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone);
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleEmotionKeyL
-// Handle the emotion key envent
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleEmotionKeyL( TInt aKey, TKeyPressLength aLength )
- {
- MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
- TBool ret = EFalse;
- TPtrC emotion;
- if ( ( aKey != EPtiKeyQwerty7 &&
- aKey != EPtiKeyQwerty8 &&
- aKey != EPtiKeyQwerty9 ) ||
- fepMan->FnKeyState())
- {
- return EFalse;
- }
- if ( EStroke == fepMan->InputMode() || EStrokeFind == fepMan->InputMode() )
- {
- if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) )
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- return ETrue;
- }
- else
- {
- switch ( aKey )
- {
- case EPtiKeyQwerty7:
- emotion.Set( KEmotionSmile );
- ret = ETrue;
- break;
- case EPtiKeyQwerty8:
- emotion.Set( KEmotionLaugh );
- ret = ETrue;
- break;
- case EPtiKeyQwerty9:
- emotion.Set( KEmotionSad );
- ret = ETrue;
- break;
- default:
- break;
- }
- }
- }
- if ( ret )
- {
- if ( aLength == EShortKeyPress)
- {
- fepMan->NewTextL(emotion);
- fepMan->CommitInlineEditL();
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- }
- }
- else
- {
- for( TInt i=0; i<emotion.Length(); i++ )
- {
- fepMan->RemovePreviousCharacterL();
- }
- fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNext );
- fepMan->PtiEngine()->SetCase( EPtiCaseFnLower );
- return EFalse;
- }
- }
- return ret;
- }
-
-TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsMultitapkey( TInt aKey )
- {
- TBool ret = EFalse;
- if ( aKey == EStdKeyLeftFunc || aKey == EPtiKeyQwertyLeftShift ||
- aKey == EStdKeyFullStop )
- {
- ret = ETrue;
- }
- return ret;
- }
-//end of the file