diff -r 000000000000 -r eb1f2e154e89 fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerbase.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,519 @@ +/* +* 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 +* +*/ + + + + + + + + + + + +#ifndef C_PLUGINFEPMANAGERBASE_H +#define C_PLUGINFEPMANAGERBASE_H + +//Include +#include +#include +#include +#include +#include + +//Forward declaration +class CPenInputImePluginJp; +class RPeninputServer; +class CAknEdwinState; +class CRepository; +/** + * CPluginFepManagerBase is the layout UI interface base class. + * It is something like a "proxy" class of layout UI plugin, sending + * commands from FEP to layout UI plugin. + * + * @lib peninputimepluginjp.lib + * @since S60 v3.2 + */ +class CPluginFepManagerBase: public CBase, public MAknFepManagerInterface + { +public: + + /** + * Destructor. + */ + ~CPluginFepManagerBase(); + + /** + * Initalize UI when first time starting up. + * The first time means when the instance created. + * + * @since S60 v3.2 + * + * @return None. + */ + virtual void OnInit(); + + /** + * Explicitly get ICF max length from layout UI and save the + * value to iMaxEditorLength. + * + * @since S60 v3.2 + * + * @return None. + */ + void RetrieveEditorMaxLength(); + + /** + * Update local copy of case mode when + * user change case in layout UI. + * + * @since S60 v3.2 + * + * @param aCaseMode The case mode to save locally. + * @return None. + */ + void UpdateCaseMode(TInt aCaseMode); + +// From MAknFepManagerInterface + + /** + * Set layout UI current number mode key mapping. + * For example, 0-9 ; 0-9,*,# and etc. + * + * @since S60 v3.2 + * + * @param aAknEditorNumericKeymap Key mapping enum value. + * @return None. + */ + void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap); + + /** + * Handle key event. + * Since most plugin layout UIs are based on animation, they receive + * key and process key events before this function. + * + * @since S60 v3.2 + * + * @param aKey Key event code. + * @param aLength Key press length. + * @return ETrue if processed, EFalse otherwise. + */ + TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey); + + /** + * Handle command come from FEP. + * + * @since S60 v3.2 + * + * @param aCommandId Command id. + * @return None + */ + void HandleCommandL(TInt aCommandId); + + /** + * Handle command come from FEP. + * + * @since S60 v3.2 + * + * @param aCommandId Command id. + * @param aParam Command parameter. + * @return None. + */ + void HandleCommandL(TInt aCommandId, TInt aParam); + + /** + * Close plugin layout UI. + * + * @since S60 v3.2 + * + * @return None. + */ + void CloseUI(); + + /** + * Activate plugin layout UI. + * + * @since S60 v3.2 + * + * @return None. + */ + void ActivateUI(); + + /** + * Get max text length of layout UI ICF control. + * + * @since S60 v3.2 + * @return Max ICF text length. + */ + TInt EditorMaxLength(); + + /** + * When screen size changes, SizeChanged is called by FEP. + * + * @since S60 v3.2 + * @return None. + */ + void ResourceChanged(TInt aType); + + /** + * Set underlining UI. + * Since plugin layout UI and HKB can be used at same time, + * HKB UI layout need to be notified after plugin layout UI + * processes some events + * + * @since S60 v3.2 + * @param aNextUI The underlining UI pointer. + * @return None. + */ + void SetNextFepUI(MAknFepManagerInterface* aNextUi); + + /** + * Get support language in sepecfied mode. + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @param aMode Input mode. + * @return Language supported. + */ + TInt SupportLanguage(TInt aMode) const; + + /** + * Set current language, which is required by editor + * + * @since S60 v3.2 + * + * @param aLanguage Language to set. + * @return None. + */ + void SetInputLanguageL(TLanguage aLanguage); + + /** + * Set editor text and cursor information to layout UI + * ICF control. + * + * @since S60 v3.2 + * @param aTotalTextLen Total text length in eidtor. + * @param aStartPos Offset of aText to the start of editor text. + * @param aCursorSel Cursor position. + * @param aText A part of editor text start from aStartPos. + * + * @return None. + */ + void SetFepAwareEditorText(const TFepInputContextFieldData& aIcfData); + + /** + * Set layout UI mode. + * The method leaves here only for compatibility + * + * @since S60 v3.2 + * + * @param aMode Mode to set. + * @param aPredictive Whether the current mode support predictive. + * @param aWwertyInputMode Whether the current HKB is qwerty. + * @return None. + */ +#ifdef RD_INTELLIGENT_TEXT_INPUT + void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, + TInt aKeyboardType = EPtiKeyboardNone) ; +#else + void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); +#endif + +#ifdef RD_INTELLIGENT_TEXT_INPUT + virtual TBool IsValidFnKeyPress() const; + virtual TBool IsValidLongChrKeyPress() const; +#endif + + /** + * Set layout UI current case. + * The method leaves here only for compatibility. Since plugin layout + * UI is different from HKB tranditional UI, they use something like + * "case mode" other than case which is set by a FEP command. + * + * @since S60 v3.2 + * + * @param aCase Case to set. + * @return None. + */ + void SetCase(TCase aCase); + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @return None. + */ + void ExpireMultitapTimer(); + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @param aKey The key presssed. + * @return ETrue if long press, EFalse otherwise. + */ + TBool IsValidNumericLongKeyPress(TInt aKey) const; + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @param aText Text to add to user dictionary. + * @return None. + */ + void AddTextToUserDictionaryL(const TDesC& aText); + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @param aFormat On return, contains the formatting to + * apply to the inline text (or to a portion of it). + * @param aNumberOfCharactersWithSameFormat On return, + contains the number of characters in the inline + text (starting at aPositionOfCharacter) + which have the same formatting + * @param aPositionOfCharacter Start position within the inline text + * @return None. + */ + void GetFormatOfFepInlineText(TCharFormat& aFormat, + TInt& aNumberOfCharactersWithSameFormat, + TInt aPositionOfCharacter) const; + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @return ETrue if valid, EFalse otherwise. + */ + TBool IsValidShiftKeyPress() const; + + /** + * The method leaves here only for compatibility. + * + * @since S60 v3.2 + * + * @return None. + */ + void SetEditorContext(TInt aContext); + + /** + * Set the Star key flag + * + * @param aSet TBool. + * @return None + */ + void SetStarKeyFlag( TBool aSet ); + + /** + * Check the character width. + * + * @since S60 v3.2 + * + * @return ETrue is Full-width. + */ + TBool IsCharWidth() const; + + /** + * Check the Japanese predictive. + * + * @since S60 v3.2 + * + * @return ETrue is predictive on. + */ + TBool IsJapanesePredictive() const; + + /** + * Check the Japanese HWR conversion. + * + * @since S60 v3.2 + * + * @return ETrue is Japanese HWR conversion on. + */ + TBool IsJapaneseHwrConversion() const; + +protected: + + /** + * C++ default constructor. + * + * @since S60 v3.2 + * @param aOwner IME plugin pointer. + * @param aPenInputServer Pen input server pointer + */ + CPluginFepManagerBase(CPenInputImePluginJp& aOwner, + RPeninputServer* aPenInputServer); + + /** + * By default Symbian 2nd phase constructor. + * + * @since S60 v3.2 + * @return None + */ + void BaseConstructL(); + + /** + * Set layout permited ranges. + * + * @param aPermittedMode Ranges of current editor allowed. + * @return None + */ + virtual void SetLayoutPermitedRanges(TInt aPermittedRanges); + + /** + * Set layout primary range. + * + * @since S60 v3.2 + * @param aEditorState Current editor state. + * @return None + */ + virtual void SetLayoutRange(const CAknEdwinState* aEditorState); + + /** + * Send command to pen input server utility function. + * + * @since S60 v3.2 + * @param aCommandId The command id to sent. + * @return None + */ + void SendCommandToServer(TInt aCommandId); + + /** + * Send command to pen input server utility function. + * + * @since S60 v3.2 + * @param aCommandId The command id to sent. + * @param aParam The command param. + * @return None + */ + void SendCommandToServer(TInt aCommandId, TInt aParam); + + /** + * Send command to pen input server utility function. + * + * @since S60 v3.2 + * @param aCommandId The command id to sent. + * @param aParam The command param. + * @return None + */ + void SendCommandToServer(TInt aCommandId, const TDesC8& aParam); + + /** + * Get layout UI last used range. + * + * @since S60 v3.2 + * @return Range last used. + */ + TInt LayoutLastUsedRange(); + + /** + * Set layout UI position. + * Move layout UI not to overlap with some editors. + * + * @since S60 v3.2 + * @param aBottomRight The bottom right position of layout UI. + * The value is only a suggest value, layout UI may adjust it. + * @return None. + */ + void SetLayoutPosition(const TRect& aParam); + + TLanguage GetLocalLanguage(const CAknEdwinState* aEditorState) const; + + /** + * Save the current information. + * + * @since S60 v3.2 + * @param aParam + */ + void SaveCurrentInfo(const TInt aParam); + +protected: + + /** + * IME plugin reference. + */ + CPenInputImePluginJp& iOwner; + + /** + * Pen input server pointer. Not own. + */ + RPeninputServer* iPenInputServer; + + /** + * The premitted range of current editor. + */ + TInt iPermittedRange; + + TInt iHkbMode; + + /** + * Current language. + */ + TLanguage iLanguage; + + /** + * The width of character, Full-width(ETrue) + * or Half-width(EFalse) + */ + TBool iCharWidth; + + /** + * Predictive is ON(ETrue) or OFF(EFalse). + */ + TBool iPredictive; + + /** + * Conversion is ON(ETrue) or OFF(EFalse). + */ + TBool iConversion; + +private: + + /** + * Repository object used to get last used range. + */ + CRepository* iRepository; + + /** + * Local copy of ICF max text length. + */ + TInt iMaxEditorLength; + + /** + * Local copy of layout current case mode + */ + TInt iLastCase; + + /** + * Underlineing UI interface + */ + MAknFepManagerInterface* iHkbUi; + + /** + * subrage for ERangeNative + */ + TInt iSubRange; + }; +#endif // C_PLUGINFEPMANAGERBASE_H + +// End Of File