--- a/fep/aknfep/src/AknFepUiInputStateCandidateChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +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 candidate chinese phrase state
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#include "AknFepUiInputStateCandidateChinesePhrase.h"
-#include "AknFepUiCtrlContainerChinese.h"
-#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface
-#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase
-#include "aknfepuictrleditpane.h"
-#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane
-#include <PtiEngine.h> //CPtiEngine
-#include <aknnotewrappers.h>
-#include "aknfepzhuyinconvertion.h"
-#include "aknfepzhuyinkeyhandlerinterface.h"
-#include <PtiUserDicEntry.h>
-
-const TInt KMaxBufLen = 100;
-const TInt KInputPhraseMaxLength = 7;
-
-_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" );
-///////////////////
-// Candidate state
-///////////////////
-
-TAknFepInputStateCandidateChinesePhrase::TAknFepInputStateCandidateChinesePhrase(
- MAknFepUIManagerStateInterface* aOwner,
- MAknFepUICtrlContainerChinese* aUIContainer)
- :TAknFepInputStateCandidateBaseChinesePhrase(aOwner, aUIContainer)
- {
- iState = ECandidate;
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-
- uiContainer->CandidatePane()->SelectFirstPhrase();
-
- 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);
- uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue);
- UpdateIndicator();
- UIContainer()->EditPaneWindow()->DisableCursor();
- }
-
-TBool TAknFepInputStateCandidateChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength)
- {
- MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
- MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
- MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
- MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow();
- MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-
- CDesCArrayFlat* zhuyinSymbols = uiContainer->PinyinPopupWindow()->ZhuyinSymbols();
- CDesCArrayFlat* chineseDisped = uiContainer->PinyinPopupWindow()->ChineseCharsDisped();
- CDesCArrayFlat* zhuyinSymbolsForChinese = uiContainer->PinyinPopupWindow()->ZhuyinSymbolsForChineseCharsDisped();
- CDesCArrayFlat* candidateList = uiContainer->CandidatePane()->CandidateArray();
- MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler();
-
- TInt index = MapKeyToIndex(aKey);
-
- if(aKey == EKeyBackspace)
- {
- zhuyinKeyHandler->SetStatusChgFlag(MZhuyinKeyHandler::EFromCandidateToEntry);
- iOwner->ChangeState(EEntry);
- return ETrue;
- }
-
- // for fix bug when press left or right arrow play err-tone
- if ( HandleVerticalNavigation( aKey ) || HandleHorizontalNavigation( aKey ) )
- {
- return ETrue;
- }
-
- if ( aLength == EShortKeyPress && ( candidatePane->SelectIndex(index,EFalse)
- || aKey == EKeyOK || aKey == EKeyCBA1 ))
- {
- TPtrC text = candidatePane->CurrentPhraseCandidate();
- if ( text.Length() == 0 )
- {
- return ETrue;
- }
- TBuf<KMaxBufLen> pinyinshown = UIContainer()->PinyinPopupWindow()->GetEEPContent();
- TInt count = TZhuyinSymbolsMethods::GetChineseCount(pinyinshown);
- if ( count > text.Length() )
- {
- fepMan->PhraseCreation(ETrue);
- }
- if ( fepMan->IsPhraseCreation( ) )
- {
- TBuf<KMaxBufLen> buf;
- buf.Copy( text );
- TBool commit = TZhuyinSymbolsMethods::AppendChineseChar( buf,
- fepMan->ZhuyinAnalyser( ), zhuyinSymbols, chineseDisped,
- zhuyinSymbolsForChinese );
- TBool changeState = UpdateEEPContent();
- if ( commit )
- {
- TBuf<KMaxBufLen> commitbuf;
- TZhuyinSymbolsMethods::Convert2Des(chineseDisped, commitbuf);
- fepMan->NewTextL(commitbuf);
- fepMan->CommitInlineEditL();
- AddPhraseToDB(commitbuf);
- if ( chineseDisped->Count() < KInputPhraseMaxLength ||
- zhuyinSymbols->Count() == 0 )
- {
- iOwner->FepMan()->TryCloseUiL();
- }
- else
- {
- CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
- errnote->SetTone( CAknNoteDialog::EWarningTone );
- errnote->ExecuteLD( KMaxPhraseNote );
- fepMan->TryCloseUiL();
- }
- popup->ResetStrokeArray();
- }
- else
- {
- editPane->SetCursorIndexOfKeystroke( 0 );
- if ( changeState )
- {
- for ( TInt i = 0; i < candidateList->Count(); i++ )
- {
- if ( TZhuyinSymbolsMethods::IsZhuyinSymbol(
- candidateList->MdcaPoint( i ) ) )
- {
- candidateList->Delete( i, 1 );
- break;
- }
- }
- if ( candidateList->Count() > 0 )
- {
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( EEntry );
- }
- else
- {
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( EZhuyinSequenceEdit );
- }
- }
- else
- {
- popup->SetChangeState( ETrue );
- iOwner->ChangeState( EZhuyinSequenceEdit );
- }
- }
- }
- else
- {
- TBuf<KMaxBufLen> textbuf;
- for ( TInt i = 0; i < chineseDisped->Count(); i++ )
- {
- textbuf.Append(chineseDisped->MdcaPoint(i));
- }
- textbuf.Append(text);
- fepMan->NewTextL(textbuf);
- fepMan->CommitInlineEditL();
- AddPhraseToDB(textbuf);
- popup->ResetStrokeArray();
- if ( text.Length() <= KInputPhraseMaxLength && !fepMan->IsPhraseCreation() )
- {
- if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
- {
- fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
- iOwner->FepMan()->TryCloseUiL();
- }
- else
- {
- iOwner->ChangeState( EPredictiveCandidate );
- }
- }
- else
- {
- fepMan->TryCloseUiL();
- }
- }
- }
- else if ( aKey == EPtiKeyStar )
- {
- return ETrue;
- }
- else if ( aKey == EKeyCBA2 )
- {
- popup->ResetStrokeArray();
- iOwner->FepMan()->EntryPhrase( EFalse );
- iOwner->FepMan()->TryCloseUiL();
- }
- else if ( !iOwner->IsValidChineseInputKey(aKey) )
- {
- iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
- }
- return ETrue;
- }
-
-TBool TAknFepInputStateCandidateChinesePhrase::UpdateEEPContent( )
- {
- CPtiEngine* ptiengine = iOwner->PtiEngine();
- CDesCArrayFlat* zhuyinSymbols = UIContainer()->PinyinPopupWindow()->ZhuyinSymbols();
- CDesCArrayFlat* chineseDisped = UIContainer()->PinyinPopupWindow()->ChineseCharsDisped();
- CAknFepZhuyinAnalyser* analyser = iOwner->ZhuyinAnalyser();
- CDesCArrayFlat* candidateList = UIContainer()->CandidatePane()->CandidateArray();
- TBuf<KMaxBufLen> buf;
- TBool isPhraseCreation = EFalse;
- TBool valid = TZhuyinSymbolsMethods::UpdateEEPContent(
- ptiengine,
- analyser,
- zhuyinSymbols,
- chineseDisped,
- candidateList,
- buf,
- isPhraseCreation
- );
-
- if ( chineseDisped->Count() != 0 || zhuyinSymbols->Count() > 1 )
- {
- for ( TInt i = 0; i < candidateList->Count(); ++i )
- {
- if ( TZhuyinSymbolsMethods::IsZhuyinSymbol( candidateList->MdcaPoint( i ) ) )
- {
- candidateList->Delete( i, 1 );
- break;
- }
- }
- }
- iOwner->FepMan()->PhraseCreation(isPhraseCreation);
- UIContainer()->PinyinPopupWindow()->SetEEPContent(buf);
- UIContainer()->PinyinPopupWindow()->SetEEPContentValid(valid);
- return valid;
- }
-void TAknFepInputStateCandidateChinesePhrase::AddPhraseToDB( TDes& aPhrase )
- {
- TPtiUserDictionaryEntry addUdbEntry( aPhrase );
- //Add the phrase to the DB by PTI Engine
- iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry );
- }
-
-// End of file