--- a/fep/aknfep/src/AknFepUiInputStateEntryStrokePhrase.cpp Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,815 +0,0 @@
-/*
-* Copyright (c) 2002-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: Implementation of Stroke phrase entry state
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-// System includes
-#include <PtiEngine.h>
-#include <aknnotewrappers.h> //CAknWarningNote
-
-// User includes
-#include "AknFepUiInputStateEntryStrokePhrase.h"
-#include "AknFepUIManagerStateInterface.h"
-#include "AknFepUICtrlCandidatePane.h"
-#include "AknFepUICtrlPinyinPopup.h"
-#include "AknFepUICtrlInputPane.h"
-#include "aknfepuictrleditpane.h"
-#include "AknFepManager.h"
-
-// const param
-const TInt KMinCnadidateCount = 1;
-const TInt KMaxKeystrokeCount = 31;
-const TInt KMaxPhraseCreationCount = 7;
-const TInt KManualChangeState = 0;
-const TInt KChangeStatebyBackSpce = 0x1000;//set popup flag for change state.
-//const TUint16 KSegment = 0x0020;
-_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" );
-_LIT( KDelimiter, "\x2022");
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhrase::
-// TAknFepInputStateEntryStrokePhrase
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TAknFepInputStateEntryStrokePhrase::TAknFepInputStateEntryStrokePhrase(
- MAknFepUIManagerStateInterface* aOwner,
- MAknFepUICtrlContainerChinese* aUIContainer) :
- TAknFepInputStateStrokePhraseBase( aOwner, aUIContainer)
- {
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
-
- iState = EEntry;
- uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke );
- TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() &&
- uiContainer->CandidatePane()->IsFirstPage());
- TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length();
- TBool showHorizontalScrollArrows = multiplePages || bufLength>1;
-
- uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows);
- uiContainer->ShowVerticalScrollArrows(multiplePages);
- uiContainer->FocusCandidatePane(ETrue);
- candidatePane->SetHighlighted(ETrue);
- candidatePane->ShowCandidateOrdinals(EFalse);
- candidatePane->SelectFirstPhrase();
- uiContainer->InputPane()->SetOverrideFontId( 0 );
- iOwner->FepMan()->EntryPhrase( ETrue );
-
- RefreshUI( ETrue );
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhrase::HandleKeyL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateEntryStrokePhrase::HandleKeyL(
- TInt aKey,
- TKeyPressLength aLength )
- {
- TBool ret = ETrue;
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- switch ( aKey )
- {
- case EPtiKeyStar:
- {
- break;
- }
- case EKeyUpArrow:
- {
- if ( !candidatePane->IsFirstPage() )
- {
- candidatePane->PreviousCandidatePage();
- RefreshCandidate();
- }
- else
- {
- popup->SetState( EFalse );
- popup->SetState( KManualChangeState );
- popup->SetChangeState( ETrue );
- //change state to sequence edit
- iOwner->ChangeState( EStrokeSequenceEdit );
- }
- break;
- }
- case EKeyDownArrow:
- {
- if ( CheckKeyNeedRepeat( aLength ) )
- {
- if ( candidatePane->IsLastPage( ) )
- {
- return ETrue;
- }
- if ( candidatePane->NeedGetNewCandidatePage( ) )
- {
- if ( !iOwner->PtiEngine()->NextCandidatePage( ) )
- {
- if ( candidatePane->IsLastPage( ) )
- {
- iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone );
- return ETrue;
- }
- }
- else
- {
- CDesCArrayFlat* phraseCandidates =
- candidatePane->CandidateArray( );
- RPointerArray<HBufC> list;
- GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list );
- for (TInt i = 0; i < list.Count( ); ++i )
- {
- phraseCandidates->AppendL( *(list[i]) );
- }
- list.ResetAndDestroy();
- }
- }
- candidatePane->NextCandidatePage();
- candidatePane->SetCandidateBuffer();
- candidatePane->SelectFirstPhrase();
- RefreshCandidate();
- }
- else
- {
- iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
- }
- break;
- }
- case EKeyLeftArrow:
- case EKeyRightArrow:
- {
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( ECandidate );
- ret = EFalse;
- break;
- }
- case EKeyCBA1:
- case EKeyOK:
- {
- if ( CheckKeyNeedRepeat( aLength ) )
- {
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( ECandidate );
- ret = EFalse;
- }
- else
- {
- iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
- }
- break;
- }
- default:
- return TAknFepInputStateStrokePhraseBase::HandleKeyL( aKey, aLength );
- }
-
- return ret;
- }
-
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhrase::HandleCommandL
-// Handling Command
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputStateEntryStrokePhrase::HandleCommandL( TInt aCommandId )
- {
- switch ( aCommandId )
- {
- // Handle the event frome command.
- case EAknSoftkeySelect:
- HandleCommitL();
- break;
- default:
- TAknFepInputStateChineseBase::HandleCommandL( aCommandId );
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhrase::HandleCommit
-// Handle CBA1,ok and select candidate phrase key press.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputStateEntryStrokePhrase::HandleCommitL()
- {
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
- CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke();
- CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke();
- TPtrC text = candidatePane->CurrentPhraseCandidate();
- if( text.Length() )
- {
- if ( CommitInlineEEPL( text ) )
- {
- if ( phrase->Count() >= KMaxPhraseCreationCount )
- {
- if ( keystrokeArray->Count() != 0 )
- {
- CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
- errnote->SetTone( CAknNoteDialog::EWarningTone );
- errnote->ExecuteLD( KMaxPhraseNote );
- }
- else
- {
- iOwner->FepMan()->PhraseCreation( EFalse );
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->PinyinPhraseCreation( EFalse );
- iOwner->FepMan()->EnableKeyStar( ETrue );
- iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI.
- }
- }
- else
- {
- if ( !iOwner->FepMan()->IsPhraseCreation() )
- {
- if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagEditorFull);
- iOwner->FepMan()->TryCloseUiL();
- }
- else
- {
- iOwner->ChangeState( EPredictiveCandidate );
- }
- }
- else
- {
- iOwner->FepMan()->PhraseCreation( EFalse );
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->PinyinPhraseCreation( EFalse );
- iOwner->FepMan()->EnableKeyStar( ETrue );
- iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI.
- }
- }
- popup->ResetStrokeArray();
- }
- else
- {
- editPane->SetCursorIndexOfKeystroke( 0 );
- if ( CheckFirstGroupStroke() )
- {
- popup->SetState( ETrue );
- iOwner->ChangeState( EEntry );
- }
- else
- {
- popup->SetState( ETrue );
- //change state to sequence edit
- iOwner->ChangeState( EStrokeSequenceEdit );
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhrase::CommitInlineEEPL
-// Commit phrase to the EEP ctrl.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateEntryStrokePhrase::CommitInlineEEPL(
- const TDesC& aText )
- {
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke();
- CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke();
- CDesCArrayFlat* phraseKeystroke =
- popup->ChooseChineseCharacterArrayKeystrokeForStroke();
-
- TBuf<KMaxPhraseCreationCount> phraseCreated;
-
- TInt textCount = aText.Length();
- TInt allTextCount = 0;
- TInt i = 0;
- TInt j = 0;
- // append character to chinese array
- for ( i = 0; i < textCount; i++ )
- {
- phrase->AppendL( aText.Mid( i, 1 ) );
- }
-
- TInt characterCount = phrase->Count();
-
- // if chinese character is more than 7 or not
- // if more than 7 show a warning not
- if ( characterCount >= KMaxPhraseCreationCount )
- {
- for ( i = 0; i < KMaxPhraseCreationCount; ++i )
- {
- phraseCreated.Append( phrase->MdcaPoint(i) );
- }
- AddPhraseToDB( phraseCreated );
- iOwner->FepMan()->NewTextL( phraseCreated );
- iOwner->FepMan()->CommitInlineEditL();
- }
-
- // calculate the total number of character according to stroke
- for ( i = 0; i < keystrokeArray->Count(); i++ )
- {
- if ( keystrokeArray->MdcaPoint( i ) == KDelimiter )
- {
- allTextCount = allTextCount + 1;
- }
- }
-
- allTextCount = allTextCount + 1;
- if ( keystrokeArray->MdcaPoint( keystrokeArray->Count() - 1 ) ==
- KDelimiter )
- {
- allTextCount--;
- }
-
- // if total number is less than the character's count which user has selected
- // commit the character to editor and user db
- if ( allTextCount <= textCount && characterCount < KMaxPhraseCreationCount )
- {
- for ( i = 0; i < characterCount; ++i )
- {
- phraseCreated.Append( phrase->MdcaPoint(i) );
- }
- iOwner->FepMan()->NewTextL( phraseCreated );
- iOwner->FepMan()->CommitInlineEditL();
- AddPhraseToDB( phraseCreated );
- return ETrue;
- }
-
- // add the stroke to chosen character array
- // delete key stroke which charactor is corresponding
- for ( j = 0; j < textCount; j++ )
- {
- TInt keyCount = 0;
- TInt ret = keystrokeArray->Find( KDelimiter ,
- keyCount,
- ECmpFolded );
-
- if ( ret != 0)
- {
- keyCount = keystrokeArray->Count();
- j = textCount;
- }
- else
- {
- keyCount++;
- }
-
- TBuf<KMaxKeystrokeCount> keystroke;
- for ( i = 0; i < keyCount; i++ )
- {
- keystroke.Append( keystrokeArray->MdcaPoint( 0 ) );
- keystrokeArray->Delete( 0 );
- }
- phraseKeystroke->AppendL( keystroke );
- }
- if ( keystrokeArray->Count() > 0 )
- {
- iOwner->FepMan()->PhraseCreation( ETrue );
- }
- if ( characterCount >= KMaxPhraseCreationCount )
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-// End of file
-
-// ---------------------------------------------------------
-// C++ constructor
-// ---------------------------------------------------------
-//
-TAknFepInputStateEditStrokePhrase::TAknFepInputStateEditStrokePhrase(
- MAknFepUIManagerStateInterface* aOwner,
- MAknFepUICtrlContainerChinese* aUIContainer ) :
- TAknFepInputStateStrokePhraseBase( aOwner, aUIContainer)
- {
- iState = EStrokeSequenceEdit;
-
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- uiContainer->FocusCandidatePane( EFalse );
- uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse );
- uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke );
- uiContainer->CandidatePane()->SelectFirstPhrase();
- uiContainer->ShowVerticalScrollArrows( ETrue );
- uiContainer->ShowHorizontalScrollArrows( EFalse );
- uiContainer->InputPane()->SetOverrideFontId( 0 );
-
- RefreshUI();
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEditStrokePhrase::HandleKeyL
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateEditStrokePhrase::HandleKeyL(
- TInt aKey,
- TKeyPressLength aLength )
- {
- return TAknFepInputStateStrokePhraseBase::HandleKeyL(
- aKey,
- aLength );
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateEntryStrokePhraseCreation::
-// TAknFepInputStateEntryStrokePhraseCreation
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TAknFepInputStateCandidateStrokePhrase::TAknFepInputStateCandidateStrokePhrase(
- MAknFepUIManagerStateInterface* aOwner,
- MAknFepUICtrlContainerChinese* aUIContainer)
- :TAknFepInputStateStrokePhraseBase(aOwner, aUIContainer)
- {
- iState = ECandidate;
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-
- TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() &&
- uiContainer->CandidatePane()->IsFirstPage());
- TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length();
- TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount;
-
- uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows);
- uiContainer->ShowVerticalScrollArrows(multiplePages);
- uiContainer->FocusCandidatePane(ETrue);
- uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue);
- uiContainer->CandidatePane()->SelectFirstPhrase();
- uiContainer->EditPaneWindow()->DisableCursor();
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateCandidateStrokePhrase::HandleKeyL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateCandidateStrokePhrase::HandleKeyL(
- TInt aKey,
- TKeyPressLength /*aLength*/ )
- {
- TBool ret = ETrue;
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
- // it may be one of the 'valid' numbers..
- TInt index = MapKeyToIndex(aKey);
-
- switch( aKey )
- {
- case EKeyBackspace:
- {
- editPane->EnableCursor();
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( EEntry );
- popup->SetFlag( KChangeStatebyBackSpce );
- break;
- }
- case EKeyDownArrow:
- {
- if ( candidatePane->IsLastPage() )
- {
- return ETrue;
- }
- if ( candidatePane->NeedGetNewCandidatePage( ) )
- {
- if ( !iOwner->PtiEngine()->NextCandidatePage( ) )
- {
- if ( candidatePane->IsLastPage() )
- {
- iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone );
- return ETrue;
- }
- }
- else
- {
- CDesCArrayFlat* phraseCandidates =
- candidatePane->CandidateArray( );
- RPointerArray<HBufC> list;
- GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list );
- for (TInt i = 0; i < list.Count( ); ++i )
- {
- phraseCandidates->AppendL( *(list[i]) );
- }
- list.ResetAndDestroy();
- }
- }
- candidatePane->NextCandidatePage( );
- RefreshCandidate( );
- break;
- }
- case EKeyUpArrow:
- {
- if( !candidatePane->IsFirstPage() )
- {
- candidatePane->PreviousCandidatePage();
- RefreshCandidate();
- }
- else
- {
- popup->SetChangeState( ETrue );
- popup->SetState( EFalse );
- iOwner->ChangeState( EStrokeSequenceEdit );
- }
- break;
- }
- case EKeyLeftArrow:
- case EKeyRightArrow:
- {
- HandleHorizontalNavigation( aKey );
- break;
- }
- case EPtiKeyStar:
- {
- break;
- }
- case EKeyCBA2:
- {
- popup->ResetStrokeArray();
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->PhraseCreation( EFalse );
- iOwner->FepMan()->TryCloseUiL();
- break;
- }
- default:
- {
- if ( ( aKey == EKeyOK ) || aKey == EKeyCBA1 ||
- candidatePane->SelectIndex( index,EFalse ) )
- {
- HandleCommitL();
- }
- else
- {
- iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone );
- }
- break;
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateCandidateStrokePhrase::HandleHorizontalNavigation
-// Handle Horizontal Navigation.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputStateCandidateStrokePhrase::HandleHorizontalNavigation(
- TInt aKey )
- {
- MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane();
- // Do navigation...
- if (aKey == EKeyLeftArrow)
- {
- if(!candidatePane->SelectPrev())
- {
- candidatePane->SetCandidateBuffer();
- candidatePane->SelectLastPhrase();
- }
- }
- else if (aKey == EKeyRightArrow)
- {
- if(!candidatePane->SelectNext())
- {
- candidatePane->SetCandidateBuffer();
- candidatePane->SelectFirstPhrase();
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateCandidateStrokePhrase::HandleCommit
-// Handle CBA1,ok and select candidate phrase key press.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputStateCandidateStrokePhrase::HandleCommitL()
- {
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
- CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke();
- CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke();
- TPtrC text = candidatePane->CurrentPhraseCandidate();
- if( text.Length() )
- {
- if ( CommitInlineEEPL( text ) )
- {
- if ( phrase->Count() <= KMaxPhraseCreationCount && !iOwner->FepMan()->IsPhraseCreation() )
- {
- if ( !iOwner->FepMan()->IsPhraseCreation( ) )
- {
- if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagEditorFull ) )
- {
- iOwner->FepMan()->ClearFlag( CAknFepManager::EFlagEditorFull );
- iOwner->FepMan()->TryCloseUiL( );
- }
- else
- {
- iOwner->ChangeState( EPredictiveCandidate );
- }
- }
- else
- {
- iOwner->FepMan()->PhraseCreation( EFalse );
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->PinyinPhraseCreation( EFalse );
- iOwner->FepMan()->EnableKeyStar( ETrue );
- iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI.
- }
- }
- else
- {
- if ( keystrokeArray->Count() != 0 && phrase->Count() >= KMaxPhraseCreationCount )
- {
- CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
- errnote->SetTone( CAknNoteDialog::EWarningTone );
- errnote->ExecuteLD( KMaxPhraseNote );
- }
- else
- {
- iOwner->FepMan()->PhraseCreation( EFalse );
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->PinyinPhraseCreation( EFalse );
- iOwner->FepMan()->EnableKeyStar( ETrue );
- iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI.
- }
- }
- popup->ResetStrokeArray();
- }
- else
- {
- editPane->SetCursorIndexOfKeystroke( 0 );
- if ( CheckFirstGroupStroke() )
- {
- popup->SetState( ETrue );
- iOwner->ChangeState( EEntry );
- }
- else
- {
- popup->SetState( ETrue );
- //change state to sequence edit
- iOwner->ChangeState( EStrokeSequenceEdit );
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateCandidateStrokePhrase::CommitInlineEEPL
-// Commit phrase to the EEP ctrl.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputStateCandidateStrokePhrase::CommitInlineEEPL(
- const TDesC& aText )
- {
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke();
- CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke();
- CDesCArrayFlat* phraseKeystroke =
- popup->ChooseChineseCharacterArrayKeystrokeForStroke();
-
- TBuf<KMaxPhraseCreationCount> phraseCreated;
-
- TInt textCount = aText.Length();
- TInt allTextCount = 0;
- TInt i = 0;
- TInt j = 0;
- // append character to chinese array
- for ( i = 0; i < textCount; i++ )
- {
- phrase->AppendL( aText.Mid( i, 1 ) );
- }
-
- TInt characterCount = phrase->Count();
-
- // if chinese character is more than 7 or not
- // if more than 7 show a warning not
- if ( characterCount >= KMaxPhraseCreationCount )
- {
- for ( i = 0; i < KMaxPhraseCreationCount; ++i )
- {
- phraseCreated.Append( phrase->MdcaPoint(i) );
- }
- AddPhraseToDB( phraseCreated );
- iOwner->FepMan()->NewTextL( phraseCreated );
- iOwner->FepMan()->CommitInlineEditL();
- }
-
- // calculate the total number of character according to stroke
- for ( i = 0; i < keystrokeArray->Count(); i++ )
- {
- if ( keystrokeArray->MdcaPoint( i ) == KDelimiter )
- {
- allTextCount = allTextCount + 1;
- }
- }
-
- allTextCount = allTextCount + 1;
- if ( keystrokeArray->MdcaPoint( keystrokeArray->Count() - 1 ) ==
- KDelimiter )
- {
- allTextCount--;
- }
-
- // if total number is less than the character's count which user has selected
- // commit the character to editor and user db
- if ( allTextCount <= textCount && characterCount < KMaxPhraseCreationCount )
- {
- for ( i = 0; i < characterCount; ++i )
- {
- phraseCreated.Append( phrase->MdcaPoint(i) );
- }
- iOwner->FepMan()->NewTextL( phraseCreated );
- iOwner->FepMan()->CommitInlineEditL();
- AddPhraseToDB( phraseCreated );
- return ETrue;
- }
-
- // add the stroke to chosen character array
- // delete key stroke which charactor is corresponding
- for ( j = 0; j < textCount; j++ )
- {
- TInt keyCount = 0;
- TInt ret = keystrokeArray->Find( KDelimiter ,
- keyCount,
- ECmpFolded );
-
- if ( ret != 0)
- {
- keyCount = keystrokeArray->Count();
- j = textCount;
- }
- else
- {
- keyCount++;
- }
-
- TBuf<KMaxKeystrokeCount> keystroke;
- for ( i = 0; i < keyCount; i++ )
- {
- keystroke.Append( keystrokeArray->MdcaPoint( 0 ) );
- keystrokeArray->Delete( 0 );
- }
- phraseKeystroke->AppendL( keystroke );
- }
- if ( keystrokeArray->Count() > 0 )
- {
- iOwner->FepMan()->PhraseCreation( ETrue );
- }
-
- if ( characterCount >= KMaxPhraseCreationCount )
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateCandidateStrokePhrase::HandleCommandL
-// Handling Command
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputStateCandidateStrokePhrase::HandleCommandL( TInt aCommandId )
- {
- switch ( aCommandId )
- {
- // Handle the event frome command.
- case EAknSoftkeySelect:
- // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA
- HandleCommitL();
- break;
- default:
- TAknFepInputStateChineseBase::HandleCommandL( aCommandId );
- break;
- }
- }
-
-// End of file