diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -/* -* Copyright (c) 2005 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 TAknFepInputStateInitialVietnameseMultitap methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIInputStateInitialVietnameseMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" -#include "AknFepVietnameseToneManager.h" - -#include - -#include -#include -#include -#include -#include - -#include "AknFepUiManagerWestern.h" - -TAknFepInputStateInitialVietnameseMultitap:: -TAknFepInputStateInitialVietnameseMultitap(MAknFepUIManagerStateInterface* aOwner) -:TAknFepInputStateInitialMultitapBase(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialVietnameseMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool bHandled = EFalse; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepUIManagerWestern* uiMan = static_cast(iOwner); - CAknFepVietnameseToneManager* toneMgr = uiMan->VietnameseToneManager(); - CPtiEngine* ptiEng = fepMan->PtiEngine(); - - toneMgr->SetFepManager(fepMan); - - if (aKey == EPtiKeyStar) - { - if (aLength == EShortKeyPress) - { - if (!toneMgr->IsLooping()) - { - // Start looping status - if (toneMgr->StartToneMarkLooping()) - { - // Save the vowel for undo back deletion - toneMgr->SetDeletedVowel(fepMan->PreviousChar()); - - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); // remove previous char - } - } - - // Process the interim looping state - if (toneMgr->IsLooping()) - { - // Get current tone mark - TText toneVowel = toneMgr->GetVowelWithToneMark(); - toneMgr->IncrementToneMark(); - - TBuf aChr; - aChr.Append(toneVowel); - - // Update inline character(s) - fepMan->CancelInlineEdit(); - fepMan->NewCharacterL(aChr); - - // Reset the engine timer so that we can get timer expired message - // We send the * key, and clear it in the next loop - ptiEng->ClearCurrentWord(); - ptiEng->AppendKeyPress((TPtiKey)aKey); - - bHandled = ETrue; - - if (fepMan->EditSubmenuInUse()) - { - // Looping tone marks, supress edit-menu. - fepMan->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - } - else if (aLength == ELongKeyPress) - { - // Reset the key event so that the TAknFepInputStateInitialMultitapBase will - // parse this event as a short key event, default reaction is to launch SCT - aLength = EShortKeyPress; - - if (toneMgr->IsLooping()) - { - // Remove the previous EShortKeyPress message - fepMan->CancelInlineEdit(); - toneMgr->StopToneMarkLooping(); - - // Undo the backdeletion - TText bkChr = toneMgr->GetDeletedVowel(); - - TBuf aChr; - aChr.Append(bkChr); - - fepMan->NewCharacterL(aChr); - fepMan->CommitInlineEditL(); - - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - return ETrue; - } - } - else if (fepMan->EditSubmenuInUse()) - { - aLength = ELongKeyPress; - } - } - } - - // Implementation for the Vietnamese back deletion - if (aKey == EKeyBackspace) - { - TBuf<2> newText; - // Get the last character from the current editor - TText prevChar = fepMan->PreviousChar(); - - // Judge if the last character needs to be converted - if ( NeedsVietnameseBkDelSupport(prevChar, newText) ) - { - // Delete the prev character and send the new character to editor - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - fepMan->NewCharacterL(newText); - fepMan->CommitInlineEditL(); - // Stop looping for backspace operation - if( toneMgr->IsLooping() ) - { - toneMgr->StopToneMarkLooping(); - } - return ETrue; - } - else - { - if ( prevChar ) - { - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - } - else - { - return EFalse; - } - - bHandled = EFalse; - } - } - - if(!bHandled && toneMgr->IsLooping()) - { - toneMgr->StopToneMarkLooping(); - } - - return bHandled ? ETrue : TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength); - } - -void TAknFepInputStateInitialVietnameseMultitap::KeyTimerExpired() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepUIManagerWestern* uiMan = static_cast(iOwner); - CAknFepVietnameseToneManager* toneMgr = uiMan->VietnameseToneManager(); - CPtiEngine* ptiEng = fepMan->PtiEngine(); - - // Try commit inline editting and clean up for future input attemps - TRAP_IGNORE(fepMan->CommitInlineEditL()); - - toneMgr->StopToneMarkLooping(); - ptiEng->ClearCurrentWord(); - } - -TBool TAknFepInputStateInitialVietnameseMultitap::NeedsVietnameseBkDelSupport( - TText aGlyphToDelete, TDes& aNewText) - { - TBool needBkDelSupport(EFalse); - - const TInt KMatrixColumn = sizeof(VietToneMatrix) / sizeof(TText) / KNumberOfToneMarks; - - aNewText.Zero(); - - // Loop of the ToneMatrix columns starts from 1 because the first column of the ToneMatrix stores the vowels - for (TUint i = 1; (i < KMatrixColumn) && (!needBkDelSupport); ++i) - { - for (TUint j = 0; j < KNumberOfToneMarks; ++j) - { - if (VietToneMatrix[i][j] == aGlyphToDelete) - { - needBkDelSupport = ETrue; - aNewText.Append(VietVowelList[i - 1]); - break; - } - } - } - - return needBkDelSupport; - } - -// End of file