diff -r 000000000000 -r eb1f2e154e89 textinput/peninputsplititut/src/peninputsplititutchnuistatestrokezhuyincomposition.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputsplititut/src/peninputsplititutchnuistatestrokezhuyincomposition.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,349 @@ +/* +* 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: drop-down list control +* +*/ + + +#include +#include +#include +#include +#include +#include +#include + +#include "peninputsplititutchnuistatestrokezhuyincomposition.h" +#include "peninputsplititutuimgrbase.h" +#include "peninputsplititutdatamgr.h" +#include "peninputsplititutlayoutcontext.h" +#include "peninputsplititutconverter.h" + + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::NewL +// --------------------------------------------------------------------------- +// +CChnSplitItutUiStateStrokeZhuyinComposition* CChnSplitItutUiStateStrokeZhuyinComposition::NewL( + CSplitItutUiMgrBase* aOwner) + { + CChnSplitItutUiStateStrokeZhuyinComposition* self = + new (ELeave) CChnSplitItutUiStateStrokeZhuyinComposition(aOwner); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::~CChnSplitItutUiStateStrokeZhuyinComposition +// --------------------------------------------------------------------------- +// +CChnSplitItutUiStateStrokeZhuyinComposition::~CChnSplitItutUiStateStrokeZhuyinComposition() + { + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::CChnSplitItutUiStateStrokeZhuyinComposition +// --------------------------------------------------------------------------- +// +CChnSplitItutUiStateStrokeZhuyinComposition::CChnSplitItutUiStateStrokeZhuyinComposition( + CSplitItutUiMgrBase* aOwner):CSplitItutUiStateBase(aOwner) + { + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::OnEntryL +// --------------------------------------------------------------------------- +// +void CChnSplitItutUiStateStrokeZhuyinComposition::OnEntryL() + { + /* + TInt immode = iOwner->DataMgr()->InputMode(); + + if (immode == EStroke) + { + TInt resID; + if (iOwner->DataMgr()->InputLanguage() == ELangPrcChinese) + { + resID = R_FINGER_INPUT_KEYPAD_STROKE_COMPOSITION_PRC; + } + else + { + resID = R_FINGER_INPUT_KEYPAD_STROKE_COMPOSITION_TRA; + } + iOwner->DataMgr()->NotifyChangeControlLayout( + MItutPropertySubscriber::EItutPropertyKeypadResourceId, + resID); + } + else if (immode == EZhuyin) + { + iOwner->DataMgr()->NotifyChangeControlLayout( + MItutPropertySubscriber::EItutPropertyKeypadResourceId, + R_FINGER_INPUT_KEYPAD_ZHUYIN_COMPOSITION); + } + + // update resource id of keypad, candidate drop list + iOwner->DataMgr()->NotifyChangeControlLayout( + MItutPropertySubscriber::EItutPropertyCandidateListResourceId, + R_AKN_FEP_NORMAL_CAND_DROP_DOWN_LIST); + + // show spell + CFepInputContextField* spellctrl = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdSpellICF)); + TFepInputContextFieldData spelldata; + spelldata.iCmd = EPeninputICFInitial; + spelldata.iStartPos = 0; + spelldata.iLength = 0; + spelldata.iText.Set( KNullDesC ); + spelldata.iCurSel = TCursorSelection(0, 0); + spelldata.iCursorVisibility = ETrue; + spelldata.iCursorSelVisible = ETrue; + spellctrl->SetTextL(spelldata); + spellctrl->Hide(EFalse); + + // show candidate drop list + CFepCtrlDropdownList* candlist = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdStdCandsList)); + candlist->Hide(EFalse); + + //hide navi button + iOwner->LayoutContext()->ShowArrowBtn(0); + + //hide indicator + iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(ETrue); + */ + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::OnExit +// --------------------------------------------------------------------------- +// +void CChnSplitItutUiStateStrokeZhuyinComposition::OnExit() + { + /* + // hide dropdownlist & reset its status + CFepCtrlDropdownList* candlist = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdStdCandsList)); + candlist->ResetAndClear(CFepCtrlDropdownList::EListExpandable); + iOwner->DataMgr()->ClearChnCandidates(EItutCandidates); + candlist->Hide(ETrue); + + CFepInputContextField* spellctrl = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdSpellICF)); + + spellctrl->Hide(ETrue); + + //show navi button + iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight + | EBtnArrowUp| EBtnArrowDown); + + //show indicator + iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); + + iOwner->DataMgr()->PtiEngine()->ClearCurrentWord(); + */ + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::HandleKeyL +// --------------------------------------------------------------------------- +// +TBool CChnSplitItutUiStateStrokeZhuyinComposition::HandleKeyL(TInt /*aCmd*/, TInt /*aKey*/) + { + /* + TInt immode = iOwner->DataMgr()->InputMode(); + + if (immode != EStroke && immode != EZhuyin) + { + return EFalse; + } + + if (!(aKey == EKeyBackspace || + (aKey >= EPtiKey0 && aKey <= EPtiKey9) || + (aKey == EPtiKeyStar))) + { + return EFalse; + } + + if (aKey == EKeyBackspace) + { + if (!iOwner->DataMgr()->PtiEngine()->DeleteKeyPress().Length()) + { + iOwner->SetCurrentStateL(CSplitItutUiMgrBase::EStateStandby); + + iOwner->SetClrConsume(ETrue); + + return ETrue; + } + } + else if (aKey == EPtiKeyStar) + { + if (immode == EStroke) + { + return ETrue; + } + else + { + // input mode is zhuyin + // input tonemark + if (!iOwner->DataMgr()->PtiEngine()->IncrementToneMark(ETrue)) + { + // tonemark did not set correctly, everything unchanged + return ETrue; + } + } + } + else + { + if (immode == EZhuyin || + (immode == EStroke && aKey >= EPtiKey0 && aKey <= EPtiKey6)) + { + // append keypress + iOwner->DataMgr()->PtiEngine()->AppendKeyPress(TPtiKey(aKey)); + } + else if (immode == EStroke && aKey >= EPtiKey7 && aKey <= EPtiKey9) + { + // just ignore + return ETrue; + } + } + + // display 1st spell, ptiengine's phonetic spelling start index is 1, not 0 + iOwner->DataMgr()->PtiEngine()->SelectPhoneticSpelling(1); + + CFepInputContextField* spellctrl = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdSpellICF)); + TPtrC spelltext = iOwner->DataMgr()->PtiEngine()->GetPhoneticSpelling(1); + + TFepInputContextFieldData spelldata; + + spelldata.iCmd = EPeninputICFInitial; + spelldata.iStartPos = 0; + spelldata.iLength = spelltext.Length(); + spelldata.iMidPos = -1; + spelldata.iText.Set(spelltext); + + spelldata.iCurSel = TCursorSelection(spelltext.Length(), spelltext.Length()); + spelldata.iCursorVisibility = EFalse; + spelldata.iCursorSelVisible = EFalse; + + spellctrl->SetTextL(spelldata); + + // get candidates of 1st spell + TPtrC cands = iOwner->DataMgr()->PtiEngine()->CandidatePage(); + + iOwner->DataMgr()->ClearChnCandidates(EItutCandidates); + RPointerArray& candslist = + TItutDataConverter::AnyToRptrArray(iOwner->DataMgr()->RequestData(EChnCandidates)); + TItutDataConverter::ConvertChnPhraseCandidateL(cands, candslist); + + CFepCtrlDropdownList* canddroplist = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdStdCandsList)); + canddroplist->SetCandidatesL(candslist, CFepCtrlDropdownList::EListExpandableWithBubble); + */ + return ETrue; + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::StateType +// --------------------------------------------------------------------------- +// +CSplitItutUiMgrBase::TUiState CChnSplitItutUiStateStrokeZhuyinComposition::StateType() + { + return CSplitItutUiMgrBase::EStateComposition; + } + +// --------------------------------------------------------------------------- +// CChnSplitItutUiStateStrokeZhuyinComposition::HandleCtrlEventL +// --------------------------------------------------------------------------- +// +TBool CChnSplitItutUiStateStrokeZhuyinComposition::HandleCtrlEventL(TInt /*aEventType*/, + CFepUiBaseCtrl* /*aCtrl*/, + const TDesC& /*aEventData*/) + { + /* + switch (aEventType) + { + case EItutCmdCandidateSelected: + { + if (aCtrl->ControlId() == ECtrlIdStdCandsList) + { + iOwner->SetCurrentStateL(CSplitItutUiMgrBase::EStatePredict); + return iOwner->CurrentState()->HandleCtrlEventL(aEventType, + aCtrl, + aEventData); + } + } + break; + case EItutCmdGetNextCandidatePage: + { + if (aCtrl->ControlId() == ECtrlIdStdCandsList) + { + RPointerArray& candslist = TItutDataConverter::AnyToRptrArray( + iOwner->DataMgr()->RequestData(EChnCandidates)); + + // original candidate count before fetch new candidate + TInt candscnt = candslist.Count(); + if (iOwner->DataMgr()->GetNextPageCandidateL(candslist) == KErrNone) + { + static_cast(aCtrl)->AddCandidatesL(candslist); + } + + return ETrue; + } + } + break; + case EItutCmdCandidateExisted: + { + if (aCtrl->ControlId() == ECtrlIdStdCandsList) + { + static_cast(aCtrl)->SetFlagCandidateExist( + iOwner->DataMgr()->NextPageCandidateExist()); + return ETrue; + } + } + break; + // consume star key at zhuyin composition state + case EEventRawKeyDownEvent: + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) + { + HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar); + return ETrue; + } + } + break; + case EEventRawKeyUpEvent: + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) + { + return ETrue; + } + } + break; + default: + break; + } + */ + return EFalse; + } + +// End Of File