fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- 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 <s32mem.h>
-#include <centralrepository.h>
-#include <AknFepGlobalEnums.h>
-#include <aknfeppeninputenums.h>
-#include <aknedsts.h>
-
-#include <peninputcommonlayoutglobalenum.h>
-
-#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<CAknEdwinState*>(aParam));
-            }
-            break;
-        case ECmdPenInputSetWindowPos:
-            {
-            LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSetWindowPos");
-            //SetLayoutPosition(*reinterpret_cast<TRect*>(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<TFepInputContextFieldData*>( 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<const TUint8*>( pIcfData );
-            writeStream.WriteL( pData, dataSize );
-                
-            const TUint8* pText = reinterpret_cast<const TUint8*>( 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<TFepPromptText*>( 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<const TUint8*>( 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<TFepIndicatorInfo*>( 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<sizeof(TInt)> 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;                   
-    }   
-
-