fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp
changeset 36 a7632c26d895
parent 35 0f326f2e628e
child 42 b3eaa440ab06
--- a/fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp	Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-/*
-* Copyright (c) 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 CAknFepUIInputStatePinyinPhrase methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-#include <PtiEngine.h>                          //CPtiEngine
-#include <PtiDefs.h>                            //keys
-#include <avkon.rsg>
-#include <aknfep.rsg>
-#include <aknnotewrappers.h>
-
-#include "AknFepPanic.h"
-#include "aknfepinputstatespellingpinyinphrasecreation.h"
-#include "AknFepUIManagerStateInterface.h"      //MAknFepUIManagerStateInterface
-#include "AknFepManagerUIInterface.h"           //MAknFepManagerUIInterface
-#include "AknFepUiCtrlContainerChinese.h"
-#include "AknFepUICtrlInputPane.h"
-#include "AknFepUICtrlCandidatePane.h"
-#include "AknFepUICtrlPinyinPopup.h"		//Pinyin phrase
-#include "aknfepuictrleditpane.h"           //pinyin phrase creation
-#include "AknFepManager.h"
-
-const TUint16 KDelimiter =0x0027;
-const TInt KMaxPhraseCreationCount = 7;
-const TInt KMaxSpellingLength = 10;
-
-// ---------------------------------------------------------
-// C++ construct.
-// ---------------------------------------------------------
-//
-TAknFepInputStateSpellingPinyinPhraseCreation::TAknFepInputStateSpellingPinyinPhraseCreation(
-                                MAknFepUIManagerStateInterface* aOwner,
-                                MAknFepUICtrlContainerChinese* aUIContainer)
-    :TAknFepInputStatePinyinPhraseCreationBase( aOwner, aUIContainer )
-    {
-    iState = ESpellingSelection;
-
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    uiContainer->FocusCandidatePane(EFalse);
-    uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse);
-    uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutPhraseCreation);
-    uiContainer->CandidatePane()->SelectFirstPhrase(); 
-    uiContainer->ShowVerticalScrollArrows(ETrue);
-    uiContainer->ShowHorizontalScrollArrows(EFalse);
-    uiContainer->InputPane()->SetOverrideFontId(0);
-    uiContainer->SetFepMan( iOwner->FepMan() );
-    uiContainer->EditPaneWindow()->DeactiveCursor();
-    
-    // in the case that we are coming back to the input pane from the candidate pane, 
-    // we need to ensure that the current selection is selected correctly
-    if ( uiContainer->PinyinPopupWindow()->GetFromEditToSpellingFlag() )
-        {
-        TInt validCount = uiContainer-> 
-            PinyinPopupWindow()->InEffectKeystrokeArray()->Count();
-        TInt chineseCount = uiContainer-> 
-            PinyinPopupWindow()->ChooseChineseCharacterArray()->Count();
-        TInt index = 0;
-        if ( !uiContainer->PinyinPopupWindow()->GetPhraseCreationEditingState() )
-            {
-            index = uiContainer->PinyinPopupWindow()->CurrentSelection();
-            }        
-        uiContainer->EditPaneWindow()->SetCursorIndexOfKeystroke( validCount );
-        ShowInfo();
-        uiContainer->EditPaneWindow()->
-            SetUnderline( chineseCount, chineseCount + validCount - 1 );
-        uiContainer->InputPane()->SetText( uiContainer->
-            PinyinPopupWindow()->PhoneticSpellingArray()->MdcaPoint( index ) );
-        uiContainer->PinyinPopupWindow()->SetFromEditToSpellingFlag();
-        uiContainer->PinyinPopupWindow()->SplitPhraseSpellingIntoPages();
-        uiContainer->PinyinPopupWindow()->SetDisplayPage( index );
-        uiContainer->PinyinPopupWindow()->SetPhraseItemTexts();
-        uiContainer->PinyinPopupWindow()->PopupSizeChanged(); // phrase input
-        uiContainer->PinyinPopupWindow()->Enable( ETrue );
-        }
-    else
-        {
-        ImplicityShowInfo( ETrue );
-        }
-    
-    ChangeCba();
-    }
-
-// ---------------------------------------------------------
-// HandleKeyL
-// ---------------------------------------------------------
-//
-TBool TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyL(
-                                 TInt aKey, 
-                                 TKeyPressLength aLength )
-    {
-    switch( aKey )
-        {
-        case EKeyBackspace:
-        case EKeyUpArrow:
-            HandleKeyBackspaceOrKeyUpArrow( aLength );
-            break;
-        case EKeyRightArrow:
-            HandleKeyRightArrow();
-            break;
-        case EKeyLeftArrow:
-            HandleKeyLeftArrow();
-            break;
-        case EKeyOK:
-        case EKeyDownArrow:
-        case EKeyCBA1:    
-             HandleKeyOKOrKeyDownArrowOrKeyCBA1( aLength );
-            break;
-        case EKeyCBA2:
-            iOwner->FepMan()->TryCloseUiL();
-            break;
-        default:
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            break;
-        }
-        return ETrue;
-    }
-
-// ---------------------------------------------------------
-// Initialize state
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::InitializeStateL(void)
-    {
-    iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT);
-    }
-
-// ---------------------------------------------------------
-// Implicity the show info
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::ImplicityShowInfo( 
-                                                 TBool aGetScreenCoordinates )
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray();
-    TInt chineseCount = popup->ChooseChineseCharacterArray()->Count();
-    TInt selection(0);
-    // get cursor position
-    TPoint baseLine = TPoint(0,0);
-    TInt height = 0;
-    TInt ascent = 0;
-    if ( aGetScreenCoordinates )
-        {
-        TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent));
-        if (ret == KErrNone)
-            {
-            uiContainer->SetContainerPosition(baseLine, height);    
-            }
-        }
-    if ( popup->GetPhraseCreationState() )
-        {
-        GetValidKeystroke();
-        editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() );
-        }
-    else
-        {
-        editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() );
-        }
-    
-    ShowInfo();
-    editPane->SetUnderline( chineseCount, chineseCount + 
-        validKeystroke->Count() - 1 );
-    if ( popup->GetPhraseCreationState() )
-        {
-        ClearDeliberateSelection();        
-        }
-    else
-        {
-        selection = popup->CurrentSelection();
-        }
-    RefreshUI( selection );
-    if ( popup->GetPhraseCreationState() )
-        {
-        popup->SetPhraseCreationState( EFalse );
-        }
-    }
-
-// ---------------------------------------------------------
-// Refresh the show info
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::RefreshShowInfo()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane();
-    CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray();
-    CDesCArrayFlat* spelling = popup->PhoneticSpellingArray();
-    CDesCArrayFlat* candidateArray = 
-        uiContainer->CandidatePane()->CandidateArray();
-    TInt selection = popup->CurrentSelection();
-    TInt chineseCount = popup->ChooseChineseCharacterArray()->Count();
-    TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection();
-    
-    editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() );
-    ShowInfo();
-    editPane->SetUnderline( chineseCount, chineseCount + 
-        validKeystroke->Count() - 1 );
-    inputPane->SetText( spelling->MdcaPoint( selection ) );
-    deliberateSelection = spelling->MdcaPoint( selection );
-    
-    popup->SplitPhraseSpellingIntoPages();
-    popup->SetDisplayPage(selection);
-    popup->SetPhraseItemTexts();
-    popup->PopupSizeChanged();
-    popup->Enable( validKeystroke->Count() );
-    GetCandidate( selection );
-    uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages();
-    uiContainer->CandidatePane()->SetCandidateBuffer();
-    uiContainer->Enable( ETrue );
-    uiContainer->ShowHorizontalScrollArrows( EFalse );
-    uiContainer->ShowVerticalScrollArrows( ETrue );
-    UpdateIndicator();
-    }
-
-// ---------------------------------------------------------
-// KeyBackspace Or KeyUpArrow
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyBackspaceOrKeyUpArrow( 
-    TKeyPressLength aLength )
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    
-    TBool state = ETrue;
-    if ( popup->IsChangeStatet() && aLength == ELongKeyPress )
-        {
-        state = EFalse;
-        }
-    else
-        {
-        popup->SetChangeState( EFalse );
-        }
-    if ( state )
-        {
-        popup->SetChangeState( ETrue );
-        //change state to EKeySequenceEdit
-        popup->SetFromEditToSpellingFlag( ETrue );
-        iOwner->ChangeState( EKeySequenceEdit );
-        }
-    }
-
-// ---------------------------------------------------------
-// KeyOK Or KeyDownArrow Or KeyCBA1
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyOKOrKeyDownArrowOrKeyCBA1( 
-    TKeyPressLength aLength )
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    TBool state = ETrue;
-    if ( popup->IsChangeStatet() && aLength == ELongKeyPress )
-        {
-        state = EFalse;
-        }
-    else
-        {
-        popup->SetChangeState( EFalse );
-        }
-
-    TBool changeState = ( popup->ChooseChineseCharacterArray()->Count() != 
-        KMaxPhraseCreationCount ) && ( popup->KeystrokeArray()->Count() != 0 );
-    
-    if ( changeState && state )
-        {
-        if(popup->IsEnabled())
-            {
-            popup->Enable(EFalse);
-            }
-        popup->SetChangeState( ETrue );
-        iOwner->ChangeState(ECandidateSelection);     
-        }
-    }
-
-// ---------------------------------------------------------
-// KeyRightArrow
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyRightArrow()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    TBuf<KMaxSpellingLength> spelling;
-    popup->SetPhraseCreationState( EFalse );
-    if( popup->SelectNextPhrase() )
-        {
-        if ( RefreshValidKeystroke() )
-            {
-            RefreshShowInfo();
-            }
-        else
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            }
-        }
-    else
-        {
-        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-        }
-    }
-
-// ---------------------------------------------------------
-// KeyRightArrow
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyLeftArrow()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-
-    if( popup->SelectPrevPhrase() )
-        {
-        if ( RefreshValidKeystroke() )
-            {
-            RefreshShowInfo();
-            }
-        else
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            }
-        }
-    else
-        {
-        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-        }
-    }
-
-// ---------------------------------------------------------
-// Refresh Valid Keystroke.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputStateSpellingPinyinPhraseCreation::RefreshValidKeystroke()
-    {
-    TRAPD( ret, RefreshValidKeystrokeL() );
-    if ( KErrNone != ret )
-        {
-        return EFalse;
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// Refresh Valid Keystroke.
-// ---------------------------------------------------------
-//
-void TAknFepInputStateSpellingPinyinPhraseCreation::RefreshValidKeystrokeL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
-    CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray();
-    CDesCArrayFlat* keystroke = popup->ShowKeystrokeArray();
-    CDesCArrayFlat* spelling = popup->PhoneticSpellingArray();    
-    TInt selection = popup->CurrentSelection();
-    validKeystroke->Reset();
-    TInt spellLength = spelling->MdcaPoint( selection ).Length();
-    
-    for ( TInt i = 0; ( i < spellLength ) && ( spellLength <= 
-        keystroke->Count() ); ++i )
-        {
-        validKeystroke->AppendL( keystroke->MdcaPoint( i ) );
-        }
-    
-    if ( spellLength < keystroke->Count() )
-        {
-        if ( KDelimiter == keystroke->MdcaPoint( spellLength )[0] )
-            {
-            validKeystroke->AppendL( keystroke->MdcaPoint( spellLength ) );
-            }
-        }
-    
-    validKeystroke->Compress();
-    }
-
-// End of file