fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp
branchRCL_3
changeset 44 ecbabf52600f
child 50 5a1685599b76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,358 @@
+/*
+* Copyright (c) 2007 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  TAknFepInputStateEntryMiniQwertyPinyinPhrase methods.
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+#include "AknFepUIManagerStateInterface.h"  //MAknFepUIManagerStateInterface
+#include "AknFepUiCtrlContainerChinese.h"
+#include "AknFepManagerUIInterface.h"       //MAknFepManagerUIInterface
+#include "AknFepUICtrlCandidatePane.h"
+#include "AknFepUICtrlPinyinPopup.h"
+#include "AknFepUIInputStateEntryMiniQwertyPinyinPhrase.h"
+#include "aknfepuictrleditpane.h"           //pinyin phrase creation
+
+#include "AknFepManager.h"                  //FepMan flag
+#include "AknFepUICtrlInputPane.h"
+#include "AknFepUiCtrlContainerChinese.h"
+#include <aknfep.rsg>
+#include <PtiEngine.h>      //CPtiEngine
+#include <e32keys.h>        //keys  
+#include <avkon.rsg>
+
+const TInt KManualChangeState = 0; 
+//const TUint16 KSegment = 0x0020;
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEntryMiniQwertyPinyinPhrase::TAknFepInputStateEntryMiniQwertyPinyinPhrase
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+TAknFepInputStateEntryMiniQwertyPinyinPhrase::TAknFepInputStateEntryMiniQwertyPinyinPhrase(
+     MAknFepUIManagerStateInterface* aOwner,MAknFepUICtrlContainerChinese* aUIContainer ):
+     TAknFepInputMiniQwertyPinyinPhraseBase( aOwner, aUIContainer)
+    {
+    iState = EEntry;
+    iOwner->PtiEngine()->SetInputMode( EPtiEnginePinyinPhraseQwerty );
+    iOwner->PtiEngine()->SetCase( EPtiCaseLower );
+    UIContainer()->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke );
+    UIContainer()->FocusCandidatePane( ETrue );
+    UIContainer()->CandidatePane()->SelectFirstPhrase();
+    UIContainer()->CandidatePane()->ShowCandidateOrdinals( EFalse );
+    UIContainer()->EditPaneWindow()->DeactiveCursor();
+    UIContainer()->SetFepMan( iOwner->FepMan() );
+    // so that it could handle EKeyCBA1
+    iOwner->FepMan()->EntryPhrase( ETrue );
+    RefreshUI( ETrue );
+    }
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleKeyL
+// Handle system key press event.
+// ---------------------------------------------------------------------------
+//     
+TBool TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleKeyL( TInt aKey,
+    TKeyPressLength aLength )
+    {
+    TBool ret = ETrue;
+    MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane();
+    switch ( aKey )
+        {
+        case EStdKeyLeftFunc: //chr key
+        case EStdKeySpace:
+        case EStdKeyBackspace:
+        case EStdKeyEnter:
+            {
+            ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( aKey,
+                aLength );
+            break;
+            }
+        case EKeyLeftShift:
+        case EKeyRightShift:
+        case EKeyLeftCtrl:
+        case EKeyRightCtrl:
+        case EKeyRightFunc://fn 
+        case EKeyLeftFunc: // fn 
+            {
+            iOwner->FepMan()->TryCloseUiL();
+            ret =EFalse;
+            break;
+            }
+        case EStdKeyUpArrow:
+            {
+            if ( candidatePane->IsFirstPage() )
+                {
+                UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( KManualChangeState );
+                iOwner->ChangeState( EMiniQwertyEdit );
+                ret = ETrue;
+                }
+            else 
+                {
+                candidatePane->PreviousCandidatePage();
+                candidatePane->SetCandidateBuffer();
+                candidatePane->SelectFirst();
+                UpdateIndicator();
+                }
+            break;
+            }
+        case EStdKeyDownArrow:
+            {
+            ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( aKey, aLength );
+            break;
+            }
+        case EStdKeyRightArrow:
+            {
+            if ( candidatePane->VisibleCandidateCount()!= 1 )
+                {
+                iOwner->ChangeState( ECandidate );
+                candidatePane->SelectNext();
+                UpdateIndicator();
+                }
+            break;
+            }
+        case EStdKeyLeftArrow:
+            {
+            if ( candidatePane->VisibleCandidateCount()!= 1 )
+                {
+                iOwner->ChangeState( ECandidate );
+                TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount();
+                UIContainer()->CandidatePane()->SelectIndex( numbertotal - 1 );
+                UpdateIndicator();
+                }
+            break;
+            }
+        case EStdKeyDevice0: //select key 
+        case EStdKeyDevice3: // msk 
+            {
+            ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(
+               aKey, aLength );
+            break;
+            }
+        case EStdKeyDevice1:
+            {
+            iOwner->FepMan()->TryCloseUiL();
+            break;
+            }
+        case EStdKeySingleQuote:
+            {
+            iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick );
+            break;
+            }
+        default:
+               // chr + character 
+            if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed )
+                    || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) )
+                {
+                iOwner->FepMan()->TryCloseUiL();
+                ret = EFalse;
+                }
+            else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() 
+                    || CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState()
+                    || CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState()
+                    ||!iOwner->IsValidChineseInputKeyQwerty( aKey ) ) //fn play error tone
+                    {
+                    iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone );
+                    }
+            else
+                 {
+                  ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(
+                     aKey, aLength );
+                 }
+            break;
+        }
+    return ret;
+    };
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::TAknFepInputStateEditinigMiniQwertyPinyinPhrase
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+TAknFepInputStateEditinigMiniQwertyPinyinPhrase::TAknFepInputStateEditinigMiniQwertyPinyinPhrase( 
+    MAknFepUIManagerStateInterface* aOwner,MAknFepUICtrlContainerChinese* aUIContainer ):
+    TAknFepInputMiniQwertyPinyinPhraseBase( aOwner,aUIContainer )                           
+    {
+    iState = EMiniQwertyEdit;
+    iOwner->PtiEngine()->SetInputMode( EPtiEnginePinyinPhraseQwerty );
+    iOwner->PtiEngine()->SetCase( EPtiCaseLower );
+    RefreshUI( ETrue );
+    UIContainer()->FocusCandidatePane( EFalse );
+    UIContainer()->CandidatePane()->ShowCandidateOrdinals( EFalse );
+    UIContainer()->EditPaneWindow()->ActiveCursor();
+    }
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleKeyL
+// Handle system key press event.
+// ---------------------------------------------------------------------------
+// 
+TBool TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleKeyL( TInt aKey ,TKeyPressLength aLength )
+    {
+    TBool ret = ETrue;
+    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
+    MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane();
+    if ( iOwner->FepMan()->GetComposChrFlag() && aKey == EStdKeyLeftFunc )
+        {
+        iOwner->FepMan()->SetComposChrFlag(EFalse);
+        return ETrue;
+        }
+    switch ( aKey )
+        {
+        //the following key is handled by the base class 
+        case EStdKeyLeftFunc: //chr key
+        case EStdKeySpace:
+        case EStdKeyBackspace:
+        case EStdKeyEnter:
+        case EStdKeyRightArrow:
+        case EStdKeyLeftArrow:
+            {
+            ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(
+                aKey, aLength);
+            break;
+            }
+        case EKeyLeftShift:
+        case EKeyRightShift:
+        case EKeyLeftCtrl:
+        case EKeyRightCtrl:
+        case EKeyRightFunc://fn 
+        case EKeyLeftFunc: // fn 
+            {
+            if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag()
+                 || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0)
+                {
+                iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick );
+                ret = ETrue;
+                }
+            else
+                {
+                iOwner->FepMan()->TryCloseUiL();
+                ret = EFalse;
+                }
+            break;
+            }
+    // inactive 
+        case EStdKeyUpArrow:
+            {
+            break;
+            }
+            //if the canidate is empty ,inactive;else candiniate selecting state
+        case EStdKeyDownArrow:
+            {
+            if ( 0 != candidatePane->VisibleCandidateCount() )
+                {
+                uiContainer->EditPaneWindow()->SetChangeState( ETrue );
+                iOwner->ChangeState( ECandidate );
+                }
+            break;
+            }
+        case EStdKeyDevice0:
+        case EStdKeyDevice3:
+            {
+            ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(
+                aKey, aLength);
+            break;
+            }
+          
+        case EStdKeyDevice1:
+            {
+            iOwner->FepMan()->TryCloseUiL();
+            break;
+            }
+        case EStdKeySingleQuote:
+            {
+            iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick );
+            break;
+            }
+        default:
+            // chr + character 
+            if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed )
+                || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) )
+                {
+                iOwner->FepMan()->SetComposChrFlag( ETrue );
+                if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag()
+                      || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0)
+                    {
+                    iOwner->FepMan()->PlaySound(EAvkonSIDStandardKeyClick);
+                    return  ETrue;
+                    }
+                else
+                    {
+                    iOwner->FepMan()->TryCloseUiL();
+                    return EFalse;
+                    }
+                }
+            else
+                {
+                ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(
+                    aKey, aLength);
+                break;
+                }
+        }
+    return ret;
+    }
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleCommandL
+// Handling Command
+// ---------------------------------------------------------------------------
+//
+void TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleCommandL(
+    TInt aCommandId )
+    {
+    TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( );
+    MAknFepManagerUIInterface* fepMan = iOwner->FepMan( );
+    switch ( aCommandId )
+        {
+        // Handle the event frome command.
+        case EAknSoftkeySelect:
+    //    case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA
+            if ( text.Length( ) )
+                {
+                fepMan->NewTextL( text );
+                fepMan->CommitInlineEditL( );
+                iOwner->PtiEngine()->SetPredictiveChineseChar( text );
+                if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) )
+                    {
+                    fepMan->ClearFlag( CAknFepManager::EFlagEditorFull );
+                    iOwner->FepMan()->TryCloseUiL( );
+                    }
+                else
+                    {
+                    iOwner->ChangeState( EPredictiveCandidate );
+                    }
+                }
+            break;
+        default:
+            TAknFepInputStateChineseBase::HandleCommandL( aCommandId );
+            break;
+        }
+    }
+// ---------------------------------------------------------------------------
+// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleCommandL
+// Handling Command
+// ---------------------------------------------------------------------------
+//
+void TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleCommandL(
+    TInt aCommandId )
+    {
+    TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL( aCommandId );
+    }
+// End Of File
+