diff -r 0f326f2e628e -r a7632c26d895 fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp Fri Jul 23 16:49:01 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,762 +0,0 @@ -/* -* Copyright (c) 2002-2007 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: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -#include -#include -#include //CAknEdwinState -#include - -#include "pluginfepmanagerbase.h" -#include "peninputimepluginjp.h" -#include -#include -#include - -// Implementation of Class CPluginFepManagerBase - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::~CPluginFepManagerBase() - { - delete iRepository; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::OnInit -// Initalize UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::OnInit() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::RetrieveEditorMaxLength -// Explicitly get ICF max length from layout UI . -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::RetrieveEditorMaxLength() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::UpdateCaseMode -// Update local copy of case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::UpdateCaseMode(TInt aCaseMode) - { - iLastCase = aCaseMode; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNumberModeKeyMappingL -// Set layout UI current number mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, aAknEditorNumericKeymap); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/) - { - return iHkbUi->HandleKeyL(aKey, aLength); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId) - { - SendCommandToServer(aCommandId); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId,TInt aParam) - { - switch(aCommandId) - { - case ECmdPenInputRange: - iHkbMode = aParam; - break; - case ECmdPenInputPermittedRange: - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges(aParam); - break; - case ECmdPenInputEditorState: - SetLayoutRange(reinterpret_cast(aParam)); - break; - case ECmdPenInputSetWindowPos: - SetLayoutPosition(*reinterpret_cast(aParam)); - break; - case ECmdPenInputCaseMode: - { - SendCommandToServer(ECmdPenInputCase, aParam); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputJapaneseSetting: - { - SaveCurrentInfo(aParam); - SendCommandToServer(aCommandId, aParam); - } - break; - case ECmdPenInputJapaneseSetSubRange: - { - iSubRange = aParam; - } - break; - case ECmdPenInputJapaneseGetModeOfSubRange: - { - TInt newMode = *((TInt*)aParam); - if(iSubRange == ERangeFullWidthEnglish) - { - newMode = ELatin; - } - else if( iSubRange == ERangeFullWidthNumeric ) - { - newMode = ENumber; - } - else if( iSubRange == ERangeKatakana || - iSubRange == ERangeFullWidthKatakana ) - { - newMode = EKatakana; - } - - else if( iSubRange == ERangeHiraganaKanji ) - { - newMode = EHiraganaKanji; - } - else if( iSubRange == ERangeHiraganaOnly ) - { - newMode = EHiragana; - } - *((TInt*)aParam) = newMode; - } - break; - case 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; - default: - SendCommandToServer(aCommandId, aParam); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - if (iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ActivateUI -// Activate plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ActivateUI() - { - iPenInputServer->ActivateLayout(ETrue); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::EditorMaxLength -// Get max text length of layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::EditorMaxLength() - { - return iMaxEditorLength; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ResourceChanged -// Handle screen size changed. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ResourceChanged(TInt aType) - { - iPenInputServer->ResourceChanged(aType); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNextFepUI -// Set underlining UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNextFepUI(MAknFepManagerInterface* aNextUi) - { - iHkbUi = aNextUi; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SupportLanguage -// Get support language in sepecfied mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::SupportLanguage(TInt /*aMode*/) const - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetInputLanguageL -// Set current language. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - if( iLanguage == ELangJapanese ) - { - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetFepAwareEditorText -// Set editor text and cursor information to layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetFepAwareEditorText(const TFepInputContextFieldData& aIcfData) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode, TInt aKeyboardType) -#else -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode ) -#endif - { - iHkbUi->SetMode(aMode, aPredictive, aQwertyInputMode); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CPluginFepManagerBase::IsValidFnKeyPress() const - { - return EFalse; - } - TBool CPluginFepManagerBase::IsValidLongChrKeyPress() const - { - return EFalse; - } -#endif -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI current case. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetCase(TCase aCase) - { - iHkbUi->SetCase(aCase); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ExpireMultitapTimer() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidNumericLongKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidNumericLongKeyPress(TInt /*aKey*/) const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::AddTextToUserDictionaryL -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::AddTextToUserDictionaryL(const TDesC& /*aText*/) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetFormatOfFepInlineText -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt /*aPositionOfCharacter*/) const - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidShiftKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidShiftKeyPress() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetEditorContext(TInt /*aContext*/) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetStarKeyFlag -// Set the Star key flag. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetStarKeyFlag( TBool /*aSet*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::CPluginFepManagerBase(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - :iOwner(aOwner), iPenInputServer(aPenInputServer), iSubRange(ERangeInvalid) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::BaseConstructL -// Symbian 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::BaseConstructL() - { - iRepository = CRepository::NewL(KCRUidAknFep); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPermitedRanges -// Set layout permited ranges. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPermitedRanges(TInt aPermittedMode) - { - //not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange = ERangeNumber; - } - else if (aPermittedMode & EAknEditorTextInputMode) - { - //derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeHiraganaKanji | - ERangeKatakana | - ERangeFullWidthKatakana | - ERangeFullWidthEnglish | - ERangeFullWidthNumeric | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else if (aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - //derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeInvalid; - if (aPermittedMode & EAknEditorNumericInputMode ) - { - iPermittedRange |= ERangeNumber | ERangeSymbol; - } - if (aPermittedMode & EAknEditorKatakanaInputMode ) - { - iPermittedRange |= ERangeKatakana; - } - if (aPermittedMode & EAknEditorFullWidthTextInputMode ) - { - iPermittedRange |= ERangeFullWidthEnglish; - } - if (aPermittedMode & EAknEditorFullWidthNumericInputMode ) - { - iPermittedRange |= ERangeFullWidthNumeric; - } - if (aPermittedMode & EAknEditorFullWidthKatakanaInputMode ) - { - iPermittedRange |= ERangeFullWidthKatakana; - } - if (aPermittedMode & EAknEditorHiraganaKanjiInputMode ) - { - iPermittedRange |= ERangeHiraganaKanji; - } - if (aPermittedMode & EAknEditorHiraganaInputMode ) - { - iPermittedRange |= ERangeHiraganaOnly; - } - if (aPermittedMode & EAknEditorHalfWidthTextInputMode ) - { - iPermittedRange |= ERangeEnglish; - } - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutRange(const CAknEdwinState* aEditorState) - { - //calculate permitted ranges - if(aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - iPermittedRange &= (ERangeNumber | - ERangeEnglish | - ERangeSymbol); - } - } - - SendCommandToServer(ECmdPenInputPermittedRange, iPermittedRange); - - TInt priRange; - if( !aEditorState ) - { - //if editor state is null,which indicates that - //the editor is not derived from edwin - priRange = ERangeNumber; - } - else - { - //if still not get, then set according to default input mode - switch(iHkbMode) - { - case ELatin: - priRange = (iCharWidth)? ERangeFullWidthEnglish: ERangeEnglish; - break; - case ENumber: - priRange = (iCharWidth)? ERangeFullWidthNumeric : ERangeNumber; - break; - case EHiraganaKanji: - priRange = ERangeHiraganaKanji; - break; - case EKatakana: - priRange = (iCharWidth)? ERangeFullWidthKatakana : ERangeKatakana; - break; - case EHiragana: - priRange = ERangeHiraganaOnly; - break; - default: - { - TInt defaultInputMode = aEditorState->DefaultInputMode(); - switch(defaultInputMode) - { - case EAknEditorNumericInputMode: - priRange = ERangeNumber ; - break; - case EAknEditorTextInputMode: - { - TLanguage editorLan = GetLocalLanguage(aEditorState); - priRange = ERangeEnglish; - - if( editorLan == ELangTest) - { - editorLan = iLanguage; - } - if( editorLan == ELangJapanese ) - { - //load last use range - TInt lastUsedRange = LayoutLastUsedRange(); - if( lastUsedRange != ELangJapanese ) - { - //invalid repository key value or first time use HWR, - priRange = ERangeHiraganaKanji; - } - else - { - priRange = lastUsedRange; - } - } - } - break; - default: - priRange = ERangeEnglish ; - break; - } - } - } - } - - SendCommandToServer(ECmdPenInputRange, priRange); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId) - { - iPenInputServer->HandleCommand(aCommandId); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId, TInt aParam) - { - TBuf8 buf; - buf.Append((TUint8*)&aParam,sizeof(TInt)); - SendCommandToServer(aCommandId, buf); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId, const TDesC8& aParam) - { - iPenInputServer->HandleCommand(aCommandId, aParam); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::LayoutLastUsedRange -// Get layout UI last used range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::LayoutLastUsedRange() - { - TInt value = 0; - if( iRepository ) - { - iRepository->Get(KAknFepLastUsedRange, value); - } - - return value; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPosition -// Set layout UI position. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPosition(const TRect& pParam) - { - TBuf8 buf; - buf.Append((TUint8*)&pParam, sizeof(pParam)); - - SendCommandToServer(ECmdPenInputSetWindowPos, buf); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetLocalLanguage -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TLanguage CPluginFepManagerBase::GetLocalLanguage( - const CAknEdwinState* aEditorState) const - { - TLanguage language = ELangTest; - // Check for a local language override - if (aEditorState) - { - TInt aknEditorFlags = aEditorState->Flags() ; - if (aknEditorFlags & EAknEditorFlagLatinInputModesOnly) - { - language = ELangEnglish; - } - else - { - language = aEditorState->LocalLanguage(); - } - } - return language; - } - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SaveCurrentInfo -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SaveCurrentInfo(const TInt aParam) - { - iCharWidth = (aParam & EPenInputJapaneseSettingCharacterWidth)? - ETrue : EFalse; - iPredictive = (aParam & EPenInputJapaneseSettingPredictive)? - ETrue : EFalse; - iConversion = (aParam & EPenInputJapaneseSettingConversion)? - ETrue : EFalse; - - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsCharWidth -// Check the character width. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsCharWidth() const - { - return iCharWidth; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsJapanesePredictive -// Check the Japanese predictive. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsJapanesePredictive() const - { - return iPredictive; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsJapaneseHwrConversion -// Check the Japanese HWR conversion. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsJapaneseHwrConversion() const - { - return iConversion; - } - - // End Of File