diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,587 +0,0 @@ -/* -* Copyright (c) 2002-2006 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: -* -*/ - -#include -#include -#include -#include -#include - -#include - -#include "PeninputPluginKrDbg.h" -#include "PeninputPluginKr.hrh" -#include "PluginKrFepManagerBase.h" - -// --------------------------------------------------------------------------- -// Constructors & Destructors -// --------------------------------------------------------------------------- -// - -CPluginKrFepManagerBase::CPluginKrFepManagerBase( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - : iOwner(aOwner), - iPenInputServer(aPenInputServer), - iSuggestedRange(ERangeInvalid), - iLastRange(ERangeInvalid) - { - } - -void CPluginKrFepManagerBase::ConstructL() - { - - } - -CPluginKrFepManagerBase::~CPluginKrFepManagerBase() - { - delete iRepository; - } - -// --------------------------------------------------------------------------- -// from MAknFepManagerInterface -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::SetMode( - TInt aMode, - TBool aPredictive, - TBool aQwertyInputMode, - TInt /*aKeyboardType*/ ) - { - LOG3("FEP.IMEPLG.KR.Base.SetMode %d %d %d",aMode,aPredictive,aQwertyInputMode); - iHkbUi->SetMode(aMode, aPredictive, aQwertyInputMode); - } - -void CPluginKrFepManagerBase::SetCase(TCase aCase) - { - LOG1("FEP.IMEPLG.KR.Base.SetCase %d",aCase); - iHkbUi->SetCase(aCase); - } - -void CPluginKrFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - LOG1("FEP.IMEPLG.KR.Base.SetNumberModeKeyMappingL %d",aAknEditorNumericKeymap); - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, aAknEditorNumericKeymap); - } - -TBool CPluginKrFepManagerBase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength, - TEventCode /*aEventCode*/ ) - { - LOG2("FEP.IMEPLG.KR.Base.HandleKeyL %d",aKey,aLength); - return iHkbUi->HandleKeyL( aKey, aLength ); - } - -void CPluginKrFepManagerBase::HandleCommandL( - TInt aCommandId) - { - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL %d",aCommandId); - SendCommandToServer( aCommandId ); - } - -void CPluginKrFepManagerBase::HandleCommandL( - TInt aCommandId, - TInt aParam) - { - switch ( aCommandId ) - { - case ECmdPenInputRange: - { - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputRange %d",iHkbMode); - if (aParam&EPRCFind) LOG("FEP.IMEPLG.KR.Base EPRCFind"); - if (aParam&ECangJie) LOG("FEP.IMEPLG.KR.Base ECangJie"); - if (aParam&EZhuyinFind) LOG("FEP.IMEPLG.KR.Base EZhuyinFind"); - if (aParam&EStrokeFind) LOG("FEP.IMEPLG.KR.Base EStrokeFind"); - if (aParam&EPinyin) LOG("FEP.IMEPLG.KR.Base EPinyin"); - if (aParam&EZhuyin) LOG("FEP.IMEPLG.KR.Base EZhuyin"); - if (aParam&EStroke) LOG("FEP.IMEPLG.KR.Base EStroke"); - if (aParam&ELatin) LOG("FEP.IMEPLG.KR.Base ELatin"); - if (aParam&ENumber) LOG("FEP.IMEPLG.KR.Base ENumber"); - if (aParam&EHiraganaKanji) LOG("FEP.IMEPLG.KR.Base EHiraganaKanji"); - if (aParam&EKatakana) LOG("FEP.IMEPLG.KR.Base EKatakana"); - if (aParam&EHiragana) LOG("FEP.IMEPLG.KR.Base EHiragana"); - if (aParam&EHindi) LOG("FEP.IMEPLG.KR.Base EHindi"); - if (aParam&ENativeNumber) LOG("FEP.IMEPLG.KR.Base ENativeNumber"); - if (aParam&EHangul) LOG("FEP.IMEPLG.KR.Base EHangul"); - if (aParam&ELatinText) LOG("FEP.IMEPLG.KR.Base ELatinText"); - if (aParam&ELatinUpper) LOG("FEP.IMEPLG.KR.Base ELatinUpper"); - if (aParam&ELatinLower) LOG("FEP.IMEPLG.KR.Base ELatinLower"); - if (aParam&ECangJieNormal) LOG("FEP.IMEPLG.KR.Base ECangJieNormal"); - if (aParam&ECangJieEasy) LOG("FEP.IMEPLG.KR.Base ECangJieEasy"); - if (aParam&ECangJieAdvanced) LOG("FEP.IMEPLG.KR.Base ECangJieAdvanced"); - iHkbMode = aParam; - } - break; - case ECmdPenInputPermittedRange: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputPermittedRange"); - if (aParam&EAknEditorTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorTextInputMode"); - if (aParam&EAknEditorNumericInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorNumericInputMode"); - if (aParam&EAknEditorSecretAlphaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorSecretAlphaInputMode"); - if (aParam&EAknEditorKatakanaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorKatakanaInputMode"); - if (aParam&EAknEditorFullWidthTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthTextInputMode"); - if (aParam&EAknEditorFullWidthNumericInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthNumericInputMode"); - if (aParam&EAknEditorFullWidthKatakanaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthKatakanaInputMode"); - if (aParam&EAknEditorHiraganaKanjiInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHiraganaKanjiInputMode"); - if (aParam&EAknEditorHiraganaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHiraganaInputMode"); - if (aParam&EAknEditorHalfWidthTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHalfWidthTextInputMode"); - if (aParam&EAknEditorHangulInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHangulInputMode"); - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges( aParam ); - } - break; - case ECmdPenInputEditorState: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputEditorState"); - SetLayoutRange(reinterpret_cast(aParam)); - } - break; - case ECmdPenInputSetWindowPos: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSetWindowPos"); - //SetLayoutPosition(*reinterpret_cast(aParam)); - } - break; - case ECmdPenInputCaseMode: - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputCaseMode %d",aParam); - //if( aParam != iLastCase ) - { - SendCommandToServer( ECmdPenInputCase, aParam ); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputEditorCustomNumericKeyMap"); - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputSuggestRange: - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSuggestRange"); - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSendEditorTextAndCurPos"); - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputSetPromptText: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSetPromptText"); - TFepPromptText* pPromptData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepPromptText ); - TInt textSize = 0; - - if (pPromptData->iText.Length()) - { - textSize = pPromptData->iText.Size(); - } - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pPromptData ); - writeStream.WriteL( pData, dataSize ); - - if (textSize != 0) - { - const TUint16* pText = pPromptData->iText.Ptr(); - writeStream.WriteL( pText, textSize/2 ); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputFingerMatchIndicator: - { - if (aParam) // ITUT - { - TFepIndicatorInfo* pIndicatorData = - reinterpret_cast( aParam ); - - HBufC8* buf = HBufC8::NewLC(4 * sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(pIndicatorData->iIndicatorImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorMaskID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextMaskID); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - else - { - SendCommandToServer( aCommandId, 0 ); - } - } - break; - default: - LOG2("FEP.IMEPLG.KR.Base.HandleCommandL %d 0x%08x",aCommandId,aParam); - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -void CPluginKrFepManagerBase::CloseUI() - { - LOG("FEP.IMEPLG.KR.Base.CloseUI"); - if ( iPenInputServer.IsVisible() ) - { - iPenInputServer.ActivateLayout( EFalse ); - } - } - -void CPluginKrFepManagerBase::ExpireMultitapTimer() - { - LOG("FEP.IMEPLG.KR.Base.ExpireMultitapTimer"); - } - -TBool CPluginKrFepManagerBase::IsValidNumericLongKeyPress(TInt aKey) const - { - LOG1("FEP.IMEPLG.KR.Base.IsValidNumericLongKeyPress %d",aKey); - return EFalse; - } - -void CPluginKrFepManagerBase::AddTextToUserDictionaryL(const TDesC& aText) - { - TPtrC ptr(aText); - LOG1("FEP.IMEPLG.KR.Base.AddTextToUserDictionaryL %S",&ptr); - } - -void CPluginKrFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt aPositionOfCharacter) const - { - LOG1("FEP.IMEPLG.KR.Base.GetFormatOfFepInlineText %S",aPositionOfCharacter); - } - -TInt CPluginKrFepManagerBase::SupportLanguage(TInt aMode) const - { - LOG2("FEP.IMEPLG.KR.Base.SupportLanguage %d - %d",aMode,iLanguage); - return iLanguage; - } - -void CPluginKrFepManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - LOG1("FEP.IMEPLG.KR.Base.SetInputLanguageL %d",aLanguage); - iLanguage = aLanguage; - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - -TBool CPluginKrFepManagerBase::IsValidShiftKeyPress() const - { - LOG("FEP.IMEPLG.KR.Base.IsValidShiftKeyPress"); - return EFalse; - } - -void CPluginKrFepManagerBase::SetEditorContext(TInt aContext) - { - LOG1("FEP.IMEPLG.KR.Base.SetEditorContext %d",aContext); - } - -void CPluginKrFepManagerBase::ActivateUI() - { - LOG("FEP.IMEPLG.KR.Base.ActivateUI"); - iPenInputServer.ActivateLayout( ETrue ); - } - -void CPluginKrFepManagerBase::SetFepAwareEditorText( - const TFepInputContextFieldData& /*aIcfData*/) - { - LOG("FEP.IMEPLG.KR.Base.SetFepAwareEditorText"); - } - -TInt CPluginKrFepManagerBase::EditorMaxLength() - { - LOG1("FEP.IMEPLG.KR.Base.EditorMaxLength - %d",iMaxEditorLength); - return iMaxEditorLength; - } - -void CPluginKrFepManagerBase::ResourceChanged(TInt aType) - { - LOG1("FEP.IMEPLG.KR.Base.ResourceChanged - %d",aType); - iPenInputServer.ResourceChanged(aType); - } - -void CPluginKrFepManagerBase::SetNextFepUI( - MAknFepManagerInterface* aNextUi) - { - LOG("FEP.IMEPLG.KR.Base.SetNextFepUI"); - iHkbUi = aNextUi; - } - -void CPluginKrFepManagerBase::SetStarKeyFlag( TBool aSet ) - { - LOG1("FEP.IMEPLG.KR.Base.SetStarKeyFlag %d",aSet); - } - -// --------------------------------------------------------------------------- -// External Functions -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::OnInit() - { - - } - -void CPluginKrFepManagerBase::RetrieveEditorMaxLength() - { - - } - -void CPluginKrFepManagerBase::UpdateRange( TInt aRange ) - { - iLastRange=aRange; - } - -void CPluginKrFepManagerBase::UpdateCaseMode( TInt aCaseMode ) - { - iLastCase = aCaseMode; - } - -// --------------------------------------------------------------------------- -// Internal Functions -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::SendCommandToServer( TInt aCommandId ) - { - iPenInputServer.HandleCommand( aCommandId ); - } - -void CPluginKrFepManagerBase::SendCommandToServer( TInt aCommandId, TInt aParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&aParam, sizeof(TInt) ); - SendCommandToServer( aCommandId, buf ); - } - -void CPluginKrFepManagerBase::SendCommandToServer(TInt aCommandId, const TDesC8& aParam) - { - iPenInputServer.HandleCommand( aCommandId, aParam ); - } - -void CPluginKrFepManagerBase::SetLayoutRange(const CAknEdwinState* aEditorState) - { - //calculate permitted ranges - // TODO: Korean specific permitted range can be added - if (aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - iPermittedRange &= ~ERangeNative; - iPermittedRange &= ~ERangeNativeNumber; - iPermittedRange &= ~ERangeSymbol; - } - /* - if ( iPermittedMode != EAknEditorNumericInputMode - && !( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) ) - { - iPermittedRange &= ~ERangeEnglish; - } - */ - } - else // for MFNE editor - { - if ( iPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange &= ~ERangeSymbol; - if( iHkbMode == ENumber ) - { - iPermittedRange = ERangeNumber; - } - else if ( iHkbMode == ENativeNumber ) - { - iPermittedRange = ERangeNativeNumber; - } - } - } - - - SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange ); - - TInt priRange; - - switch( iHkbMode ) - { - case ECangJie: - case EStrokeFind: - case EStroke: - case EPinyin: - case EZhuyin: - case EZhuyinFind: - case EHindi: - case EHangul: - { - priRange = ERangeNative; - } - break; - case ENumber: - { - priRange = ERangeNumber; - } - break; - case ENativeNumber: - { - priRange = ERangeNativeNumber; - } - break; - case EPRCFind: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - { - priRange = ERangeEnglish; - } - break; - default: - priRange = iPermittedRange & ERangeNative ? ERangeNative : ERangeEnglish; - break; - } - - if( iSuggestedRange != ERangeInvalid && (iSuggestedRange & iPermittedRange) ) - { - priRange = iSuggestedRange; - iSuggestedRange = ERangeInvalid; - } - - if (iLastRange) - { - priRange=iLastRange; - } - - SendCommandToServer( ECmdPenInputRange, priRange ); - } - -void CPluginKrFepManagerBase::SetLayoutPermitedRanges( TInt aPermittedMode ) - { - iPermittedMode = aPermittedMode; - - // Not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - if ( SupportNativeNumberRange() ) - { - iPermittedRange = ERangeNativeNumber; - } - iPermittedRange |= ERangeNumber; - } - - else if ( aPermittedMode & EAknEditorTextInputMode ) - { - // Derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - } - -TBool CPluginKrFepManagerBase::SupportNativeNumberRange() - { - if ( iLanguage == ELangArabic || iLanguage == ELangFarsi || - iLanguage == ELangUrdu || iLanguage == ELangHindi || - iLanguage == ELangThai ) - { - return ETrue; - } - - return EFalse; - } - -