fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +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 TAknFepUiInputStateEntryVietnamesePredictive methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#include "AknFepUiInputStateEntryVietnamesePredictive.h"
-#include "AknFepUIInputStateInitialVietnameseMultitap.h"
-#include "AknFepUIManagerStateInterface.h"      //MAknFepUIManagerStateInterface
-#include "AknFepCaseManager.h"
-#include "AknFepVietnameseToneManager.h"
-
-#include <uikon.hrh>
-#include <PtiEngine.h>                          //CPtiEngine
-#include <PtiDefs.h>                            //keys
-#include <aknSctDialog.h>
-#include <avkon.rsg>
-#include <aknfep.rsg>
-
-#include "AknFepUiManagerWestern.h"
-TAknFepInputStateEntryVietnamesePredictive::
-TAknFepInputStateEntryVietnamesePredictive(MAknFepUIManagerStateInterface* aOwner)
-: TAknFepInputStateEntryWesternPredictive(aOwner)   
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    if (ptiengine->CurrentLanguage()->LanguageCode() != ELangVietnamese)
-        {
-        TRAP_IGNORE(ptiengine->ActivateLanguageL(ELangVietnamese));
-        }
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-        if(fepMan->IsAutoCompleteOn())
-    	{
-    	   ptiengine->SetInputMode(EPtiEngineWordCompletion);
-    	}
-    	else
-#endif
-        {
-        ptiengine->SetInputMode(EPtiEnginePredictive);
-        }
-    }
-
-TBool TAknFepInputStateEntryVietnamesePredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength)
-    {
-    
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-
-    TBool response = ETrue;
-
-    switch (aKey)
-        {
-    case EPtiKey1: //fall through
-    case EPtiKey2:
-    case EPtiKey3:
-    case EPtiKey4:
-    case EPtiKey5:
-    case EPtiKey6:
-    case EPtiKey7:
-    case EPtiKey8:
-    case EPtiKey9:
-        response = HandleStandardNumericKeysL(aKey, aLength);
-        break;
-    case EPtiKey0:
-        if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) )
-            {
-            fepMan->TryRemoveNoMatchesIndicatorL();
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-            if(fepMan->IsAutoCompleteOn())
-					{
-					fepMan->RemoveSuggestedCompletionL();
-					}
-#endif
-            }
-        fepMan->UpdateCbaL(NULL);
-        if (fepMan->IsFlagSet(CAknFepManager::EFlagCompoundWord))
-            { 
-            if (fepMan->IsCursorAtEndOfWord())
-                {            
-                fepMan->AddCompoundWordToUdbL();
-                }
-            fepMan->ClearFlag(CAknFepManager::EFlagCompoundWord);
-            }
-        ptiengine->CommitCurrentWord();  // commit word after calling TryCloseUiL().
-        fepMan->TryCloseUiL();
-        response = EFalse;  //pass to initial state to handle key
-        break;
-    case EKeyLeftArrow: // fall through
-    case EKeyRightArrow:
-        response = HandleNaviKeysL(aKey, aLength);
-        break;    
-    case EKeyBackspace:
-        response = HandleDeleteKeysL(aKey, aLength);
-        break;
-    case EPtiKeyStar:
-        response = HandleStarKeyL(aLength);
-        break;
-    case EKeyDownArrow: // Japanese input required
-        if (fepMan->IsAbleScrollLatinPredictive())
-            {
-            if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-                {
-                DoNextMatch();
-                }
-            else
-                {
-                response = EFalse;
-                }
-            }
-        else
-            {
-            response = EFalse;
-            }
-        break;
-    case EKeyUpArrow: // Japanese input required
-        if (fepMan->IsAbleScrollLatinPredictive())
-            {
-            if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-                {
-                DoPreviousMatchL();
-                }
-            else
-                {
-                response = EFalse;
-                }
-            }
-        else
-            {
-            response = EFalse;
-            }
-        break;
-    default:
-        response = EFalse;
-        break;
-        }
-    return response;
-    }
-
-TBool TAknFepInputStateEntryVietnamesePredictive::HandleStarKeyL(TKeyPressLength aLength)
-    {
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-
-    if (aLength == ELongKeyPress)
-        { 
-        if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-            {
-            // replace with previous match
-            fepMan->TryRemoveNoMatchesIndicatorL();
-            iMatchState = EWordMatchStd;
-            TPtrC newText = ptiengine->PreviousCandidate();
-            fepMan->UpdateInlineEditL(newText, newText.Length());
-            }
-            
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        	// to rip off suggested completion when SCT is launched
-		if(fepMan->IsAutoCompleteOn()) 
-			{
-			fepMan->RemoveSuggestedCompletionL();	
-			}
-#endif
-       	if (!fepMan->EditSubmenuInUse())
-        	{
-        	fepMan->LaunchSpecialCharacterTableL();
-        	}            
-        }
-    else 
-        {
-        if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-            {
-            if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches))
-                {
-                //no more matches
-                fepMan->PlaySound(EAvkonSIDWarningTone);
-                }
-            else if (ptiengine->NumberOfCandidates()<=1)
-                { 
-                // only one match
-                if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone)
-                    {
-                    fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY);
-                    iMatchState = EWordMatchLast;
-                    }
-                }
-            else
-                { 
-                // > 1 match
-                if (iMatchState == EWordMatchLast && !(ptiengine->LastEnteredKey() == EPtiKey1))
-                    {
-                    fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS);
-                    }
-                else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone)
-                    {
-                    fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS);
-                    iMatchState = EWordMatchStd;
-                    }
-                TPtrC newText = ptiengine->NextCandidate();
-           		if(newText.Length() == 1)
-           			{
-	            	TDigitType digittype = fepMan->LocalDigit();
-	                TChar chchar(newText[0]);
-	                if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype))
-	                	{ 	
-	                	fepMan->UpdateInlineEditL(newText, newText.Length());    
-    	            	}
-	                else 
-	                	{
-	                	TBuf<1> tempbuf;
-	                	switch(digittype)
-		                	{
-		                	case EDigitTypeDevanagari:
-			                	{
-			                	chchar = (newText[0] + KLatinToDevanagariDigitsDelta);
-	            		    	}
-			                	break;	
-			                case EDigitTypeArabicIndic:
-				                {
-			                	chchar = (newText[0] + KLatinToArabicIndicDigitsDelta);
-	            		        }
-				                break;
-		                	case EDigitTypeEasternArabicIndic:
-			                	{
-			                	chchar = (newText[0] + KLatinToEasternArabicIndicDigitsDelta);
-			                	}
-		                	}
-	            		tempbuf.Append(chchar);				                	
-		                fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length());	
-	                	}
-           			}
-           		else 
-           			{
-           			fepMan->UpdateInlineEditL(newText, newText.Length());	
-           			}
-                }
-            }
-        else
-            {
-  			if (!fepMan->EditSubmenuInUse())
-        		{
-        		fepMan->LaunchSpecialCharacterTableL();
-        		}
-            }
-        }
-    return ETrue;
-    }
-
-TBool TAknFepInputStateEntryVietnamesePredictive::HandleDeleteKeysL(TInt aKey, TKeyPressLength /*aLength*/)
-    {
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-
-    if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)))
-        {
-        if(fepMan->PreviousChar() == TText(0x0020))      // 0x0020 is space 
-        {
-        	return EFalse;
-        }
-        TBuf<CAknFepManager::EMaximumFepWordLength> textToUncommit;
-        TBool comsumeKey;
-        if (!(fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey)))
-            {
-            // If T9 word length > 32, the navi key is consumed without action.
-            // Maybe should navigate inside word.
-            return comsumeKey;
-            }
-        ptiengine->SetCurrentWord(textToUncommit);
-		fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem);           
-        if (ptiengine->NumberOfCandidates() <= 1)
-        	{
-			fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem);           	
-        	}        
-        fepMan->StartInlineEditL(fepMan->UncommittedText(), textToUncommit, 
-                                 textToUncommit.Length(), EFalse);
-        }
-  
-    if (aKey == EKeyBackspace)
-        {
-        if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches))
-            {
-            fepMan->TryRemoveNoMatchesIndicatorL();
-            fepMan->UpdateCbaL(NULL);
-            return ETrue;
-            }
-        else if (iMatchState != EWordMatchFirst)
-            {
-            //let FirstWordInSelectionList() reset the CBA
-            iMatchState = EWordMatchNone;
-            }
-        
-        TBuf<2> newText;
-        // Get the last character from the current editor
-        TText prevChar = fepMan->PreviousChar();
-        TBool vowelList = EFalse;
-        for (TInt index = 0; index < KNumberOfToneMarks; index ++)
-            {
-            if (VietToneMatrix[0][index] == prevChar)
-                {
-                vowelList = ETrue;
-                break;
-                }
-            }
-        
-        if (vowelList)
-            {
-                ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
-            }
-        else
-            {
-            if (prevChar <= 0)
-                {
-                return EFalse;
-                }
-            
-            // Judge if the last character needs to be converted
-            if ( TAknFepInputStateInitialVietnameseMultitap::NeedsVietnameseBkDelSupport(prevChar,
-                                                                                         newText) )
-                {
-                ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
-                }
-            else
-                {
-                TPtrC  updatedText = ptiengine->DeleteKeyPress();
-                if(ptiengine->InputMode() != EPtiEngineWordCompletion && newText.Length())
-                	{
-                	fepMan->UpdateInlineEditL(updatedText, newText.Length());
-                	}
-                else
-                	{
-                	fepMan->UpdateInlineEditL(updatedText, updatedText.Length());	
-                	}
-                }
-            }
-
-		fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem);           
-        if (ptiengine->NumberOfCandidates() <= 1)
-        	{
-			fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem);           	
-        	}
-
-        iOwner->CaseMan()->UpdateCase(EBackspaceEvent);
-        fepMan->CloseUiIfWordDeletedL();
-        }
-        
-    return ETrue;
-    }
-
-// End of file