diff -r 0f326f2e628e -r a7632c26d895 fep/aknfep/src/AknFepUiInputStateEntryJapaneseMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryJapaneseMultitap.cpp Fri Jul 23 16:49:01 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,333 +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 TAknFepUiInputStateEntryJapaneseMultitap methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateEntryJapaneseMultitap.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" -#include "AknFepManager.h" -#include "AknFepUICtrlCandidatePaneInterface.h" // MAknFepUICtrlCandidatePaneInterface - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -// CONSTANTS -const TText KAknFEPLineFeedSymbol = 0x21B2; -const TText KAknFEPMirroredLineFeedSymbol = 0x21B3; - -/** - * TAknFepUiInputStateEntryJapaneseMultitap class. - * - */ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap:: -// TAknFepUiInputStateEntryJapaneseMultitap -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateEntryJapaneseMultitap:: - TAknFepUiInputStateEntryJapaneseMultitap( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapaneseBase(aOwner, aUIContainer) - { - iState = EEntry; - } - -/** - * MPtiObserver interface. - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::KeyTimerExpired -// Call this function when Multitap timer of PtiEngine was time-out -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap::KeyTimerExpired() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - - if (text.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - TRAP_IGNORE(fepMan->CommitInlineEditL()); - iOwner->ChangeState(EInitial); - } - else - { - TPtrC text2 = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text2.Length() > 0) - { - if (text2[0] == KAknFEPLineFeedSymbol - || text2[0] == KAknFEPMirroredLineFeedSymbol) - { - iOwner->ChangeState(EInitial); - } - else - { - // Set on cursor visibility in inline editing - TRAPD(err, fepMan->SetInlineEditingCursorVisibilityL(ETrue)); - if (err == KErrNone) - { - TRAP(err, fepMan->UpdateInlineEditL(text2, cursorpos)); - } - if (err != KErrNone) - { - TRAP_IGNORE(iOwner->FepMan()->SimulateKeyEventL(EKeyEscape, ETrue)); - } - } - } - } - } - -/** - * TAknFepUiInputStateEntryJapaneseMultitap class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericShortKeyL -// HHandling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericShortKeyL(TInt aKey) - { - TBool cursorVisibility = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - if (aKey == EPtiKeyStar) - { - cursorVisibility = ETrue; - } - fepMan->SetInlineEditingCursorVisibilityL(cursorVisibility); - ptiEngine->AppendKeyPress((TPtiKey)aKey); - ret = UpdateInlineEditingCharacterL(); - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericLongKeyL(TInt /*aKey*/) - { - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNaviKeyL -// Handling navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNaviKeyL(TInt /*aKey*/, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - ret = UpdateInlineEditingCharacterL(); - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - switch(aKey) - { - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiEngine->DeleteKeyPress(); - ret = UpdateInlineEditingCharacterL(); - } - break; - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - iOwner->ChangeState(EMultiCompletion); - } - break; - default: - break; - } - - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (!CommitInlineEditingCharacterL()) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text.Length() > 0) - { - if (State() == EConversion - || State() == ECandidate - || State() == ECandidateRetroActive - || State() == EPredictiveInput) - { - if (data->NumberOfPhrase() > 0) - { - TPtrC8 clauseChar = data->LengthOfPhrase(); - cursorpos = clauseChar[0]; - } - } - fepMan->UpdateInlineEditL(text, cursorpos); - } - else - { - __ASSERT_DEBUG(text.Length() == 0, - RDebug::Print( - _L("In TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL,\nINVALID DATA: ConvertingString. Roll back to initial State!"))); - ptiEngine->ClearCurrentWord(); - fepMan->CancelInlineEdit(); - iOwner->ChangeState(EInitial); - } - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::CommitInlineEditingCharacterL() - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - ret = ETrue; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap:: - HandleCommandL(TInt aCommandId) - { - if(aCommandId == EAknFepSoftkeyCommit) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC textConv = data->ConvertingString(); - TPtrC textComp = data->CompletedString(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TInt curr = candidatePane->CurrentItemIndexOfCandidate(); - if (curr > -1) - { - TInt old = 0; - ptiEngine->HandleCommandL(EPtiCommandUserActionGetCurrentIndexOfCandidates, &old); - while(curr > old) - { - ++old; - ptiEngine->HandleCommandL(EPtiCommandUserActionConvert); - } - while(curr < old) - { - --old; - ptiEngine->HandleCommandL(EPtiCommandUserActionPrevious); - } - } - candidatePane->HideWindow(); - if (textConv.Length() > 0 || textComp.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - } - else - { - iOwner->ChangeState(EInitial); - } - } - } - -// End of file