diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,743 +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: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include // CAknEdwinState -#include -#include -#include -#include - -// User includes -#include "pluginfepmanagerbase.h" -#include "peninputimeplugincn.h" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// 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: - //if( aParam != iLastCase ) - { - 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 ECmdPenInputSuggestRange: - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - 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; - case 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 ECmdPenInputPopupTooltip: - { - TPtrC* tooltipTextPtr = reinterpret_cast( aParam ); - if ( tooltipTextPtr ) - { - HBufC8* buf8 = HBufC8::NewLC - ( sizeof( TInt ) + tooltipTextPtr->Size() ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( tooltipTextPtr->Size() ); - writeStream.WriteL( tooltipTextPtr->Ptr(), tooltipTextPtr->Length() ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - } - } - break; - case ECmdPenInputPopupCandidateList: - { - TFepITICandidateList* candidatelist - = reinterpret_cast( aParam ); - if ( candidatelist ) - { - CDesCArray* itemArray = candidatelist->iItemArray; - if ( itemArray ) - { - TInt sumSize = 0; - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - sumSize += (*itemArray)[i].Size(); - } - HBufC8* buf8 = HBufC8::NewLC( sizeof(TInt) // For active index - + sizeof(TInt) // For the count of item array - + sizeof(TInt)*( itemArray->Count() ) // For the size of each item - + sumSize// For all of char data - ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( candidatelist->iActiveIndex ); - writeStream.WriteInt32L( itemArray->Count() ); - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - writeStream.WriteInt32L( (*itemArray)[i].Size() ); - writeStream.WriteL( (*itemArray)[i].Ptr(), (*itemArray)[i].Length() ); - } - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - } - } - } - break; - default: - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - 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::SizeChanged -// 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 == ELangTaiwanChinese || - iLanguage == ELangHongKongChinese || - iLanguage == ELangPrcChinese) - { - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - else - { - // other language except chinese, will treated as English - iLanguage = ELangEnglish; - SendCommandToServer(ECmdPenInputLanguage, (TInt)ELangEnglish); - } - } - -// ----------------------------------------------------------------------------- -// 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::ExpireMultitapTimer -// 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::SetEditorContext -// Compatibile with HKB UI. -// (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(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer ) - :iOwner( aOwner ), iPenInputServer( aPenInputServer ) - { - } - -// ----------------------------------------------------------------------------- -// 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 = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - } - -// ----------------------------------------------------------------------------- -// 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 & ERangeNative ) - { - iPermittedRange &= ~ERangeNative; - } - } - - SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange ); - - TInt priRange; - - switch( iHkbMode ) - { - case ECangJie: - case EStrokeFind: - case EStroke: - case EPinyin: - case EZhuyin: - case EZhuyinFind: - { - priRange = ERangeNative; - } - break; - case ENumber: - { - priRange = ERangeNumber; - } - break; - case EPRCFind: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - default: - { - priRange = ERangeEnglish; - } - break; - } - - if ((iLanguage == ELangEnglish) && (priRange == ERangeNative)) - { - // when language switch button switch to English, if original range is Native, - // then it need to be changed to ERangeEnglish - priRange = ERangeEnglish; - } - - if( iSuggestedRange != ERangeInvalid && (iSuggestedRange & iPermittedRange) ) - { - priRange = iSuggestedRange; - iSuggestedRange = ERangeInvalid; - } - - 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; - } - - // End Of File