fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,762 @@
+/*
+* 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 <w32std.h>
+#include <s32mem.h> 
+#include <aknedsts.h>               //CAknEdwinState
+#include <centralrepository.h>
+
+#include "pluginfepmanagerbase.h"
+#include "peninputimepluginjp.h"
+#include <peninputclient.h>
+#include <aknfeppeninputenums.h>
+#include <AknFepInternalCRKeys.h>
+
+// 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<CAknEdwinState*>(aParam));
+            break;
+        case ECmdPenInputSetWindowPos:
+            SetLayoutPosition(*reinterpret_cast<TRect*>(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<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;
+        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<sizeof(TInt)> 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<sizeof(TRect)> 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