diff -r 000000000000 -r eb1f2e154e89 fep/aknfep/inc/AknFepUiManagerBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/inc/AknFepUiManagerBase.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,479 @@ +/* +* Copyright (c) 2003 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: +* Provides the CAknFepUIManagerBase definition. +* +*/ + + + + + + + + + + + + +#ifndef __AKN_FEP_UI_MANAGER_BASE_H__ +#define __AKN_FEP_UI_MANAGER_BASE_H__ + +// INCLUDES +#include //TAknEditorNumericKeymap + +#include "AknFepManagerUIInterface.h" +#include "AknFepManagerInterface.h" +#include "AknFepUIManagerStateInterface.h" + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION +class CPtiEngine; +class TAknFepInputStateBase; + +/** + * CAknFepUIManagerBase class. + * + * @lib AknFep.lib + * @since 2.6 + * + */ +class CAknFepUIManagerBase : + public CBase, + public MAknFepManagerInterface, + public MAknFepUIManagerStateInterface + { +private: + /** + * private constants + */ + enum + { + EBaseLanguageNumericKeymapIndex = 0x00FF, + EMaskShiftOffset = 8 + }; + +public: // Constructors and destructor + /** + * + * + * @since 2.6 + */ + static CAknFepUIManagerBase* NewL(MAknFepManagerUIInterface* aFepMan, + CAknFepCaseManager* aCaseMan, TLanguage aLanguage); + + /** + * + * + * @since 2.6 + */ + virtual ~CAknFepUIManagerBase(); + +public: // Functions from base classes + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ +#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 + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + void SetCase(TCase aCase); + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap); + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + const TDesC& NumberModeKeyMapping() const; + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); + + /** + * From MAknFepManagerInterface + * this is in base class only + * @since 2.6 + */ + void HandleCommandL(TInt aCommandId); + void HandleCommandL(TInt aCommandId, TInt aParam); + + /** + * From MAknFepManagerInterface + * this should be implemented in each ui manager + * + * @since 2.6 + */ + void CloseUI(); + + /** + * From MAknFepManagerInterface + * this is in base class only + * + * @since 2.6 + */ + void ExpireMultitapTimer(); + + /** + * From MAknFepManagerInterface + * this is in base class only + * + * @since 2.6 + */ + TBool IsValidNumericLongKeyPress(TInt aKey) const; + + /** + * From MAknFepManagerInterface + * this api use in chinese and western + * + * @since 2.6 + */ + void AddTextToUserDictionaryL(const TDesC& aText); + + /** + * From MAknFepManagerInterface + * this should be implemented in each ui manager + * + * @since 2.6 + */ + void GetFormatOfFepInlineText(TCharFormat& aFormat, TInt& aNumberOfCharactersWithSameFormat, + TInt aPositionOfCharacter) const; + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + virtual TInt SupportLanguage(TInt aMode) const; + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + virtual void SetInputLanguageL(TLanguage aLanguage); + + /** + * From MAknFepManagerInterface + * + * @since 2.6 + */ + TBool IsValidShiftKeyPress() const; +#ifdef RD_INTELLIGENT_TEXT_INPUT + TBool IsValidFnKeyPress() const; + + virtual TBool IsValidLongChrKeyPress() const; + +#endif + + /** + * From MAknFepManagerInterface + * this api use in chinese ui only + * + * @since 2.6 + */ + void SetEditorContext(TInt aContext); + + /** + * + * + * @since 2.6 + */ + void ActivateUI(); + + /** + * From MAknFepUIManagerStateInterface + * this is in base class only + * + * @since 2.6 + */ + TUIState State() const; + + /** + * From MAknFepUIManagerStateInterface + * this should be implemented in each ui manager + * + * @since 2.6 + */ + TUIState ChangeState(TUIState aState); + + /** + * From MAknFepUIManagerStateInterface + * this is in base class only + * + * @since 2.6 + */ + MAknFepManagerUIInterface* FepMan() const; + + /** + * From MAknFepUIManagerStateInterface + * using instead of PtiEngine() + * + * @since 2.6 + */ + CPtiEngine* PtiEngine() const; + + // the follow function for phrase creation + MZhuyinKeyHandler* ZhuyinKeyHandler(); + CAknFepZhuyinAnalyser* ZhuyinAnalyser(); + + /** + * From MAknFepUIManagerStateInterface + * this api use in chinese input states only + * + * @since 2.6 + */ + TBool IsValidChineseInputKey(TInt aKey) const; + + /** + * From MAknFepUIManagerStateInterface + * this api use in chinese Qwerty input states only + * + * @since 3.0 + */ + TBool IsValidChineseInputKeyQwerty(TInt aKey) const; + + /** + * From MAknFepUIManagerStateInterface + * this api use in chinese Qwerty input states only + * + * @since 3.0 + */ + TBool IsQwertyZhuyinToneMarkKey(TInt aKey) const; + + /** + * this api use in HK Qwerty input states only + * + * @since 3.0 + */ + virtual void UpdateCangJieState(); + + /** + * From MAknFepUIManagerStateInterface + * this api use in chinese input states only + * + * @since 3.0 + */ + TBool IsValidChineseSymbol(TInt aKey) const; + /** + * From MAknFepUIManagerStateInterface + * this is in base class only + * TLanguage is Language identity enumeration defined in e32std.h + * + * @since 2.6 + */ + TLanguage GetLanguage() const; + + /** + * From MAknFepUIManagerStateInterface + * + * @since 2.6 + */ + CAknFepCaseManager* CaseMan() const; + + /** + * From MAknFepUIManagerStateInterface + * + * + * @since 2.6 + * this api use in chinese ui only + */ + TPtr GetLatestDeliberateSelection() const; + + /** + * From MAknFepUIManagerStateInterface + * Thai only + * + * @since 2.6 + */ + TInt ThaiSCTResourceId(TUint aPrewChar, TInt aKey); + + /** + * From MAknFepUIManagerStateInterface + * Japanese only + * + * @since 2.6 + */ + CDesCArrayFlat* CandidateArray(); + + /** + * From MAknFepUIManagerStateInterface + * Japanese only + * + * @since 2.6 + */ + TBool IsPredictive() const; + + /** + * From MAknFepUIManagerStateInterface + * Japanese only + * + * @since 2.6 + */ + void SetInlineEditUnderlineVisibility(TBool aFlag); + + /** + * From MAknFepUIManagerStateInterface + * + * @since 3.0 + */ + TBool IsQwerty() const; + + /** + * From MAknFepUIManagerStateInterface + * + * @since 3.2 + */ + void SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/); + + /** + * From MAknFepUIManagerStateInterface + * + * @since 3.2 + */ + TInt EditorMaxLength(); + + /** + * From MAknFepUIManagerStateInterface + * + * @since 3.2 + */ + void ResourceChanged(TInt aType); + + /** + * From MAknFepUIManagerStateInterface + * + * @since 3.2 + */ + void SetNextFepUI(MAknFepManagerInterface* /*aNextUi*/); + + /** + * Set the Star key flag + * + * @param aSet TBool. + * @return None + */ + void SetStarKeyFlag( TBool aSet ); + +protected: // New Functions + /** + * + * + * @since 2.6 + */ + void ConstructL(TLanguage aLanguage); + + /** + * + * + * @since 2.6 + */ + CAknFepUIManagerBase(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); + + /** + * + * + * @since 2.6 + */ + virtual TAknFepInputStateBase* FepUIState(); +#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ +#ifdef RD_INTELLIGENT_TEXT_INPUT + /** + * Removes the character produced by the initial short key press and substitutes + * it with the character found behind Fn. If no no Fn-mapping is available, the + * function does nothing. Also, in non-QWERTY modes the function does nothing because + * ITU-T input states handle long press internally. + * @return ETrue if key was consumed and no further handling should be made. + * This is the case when editor is filled up and no more characters can be entered. + * EFalse if handling of the key event may continue. Either the mode has + * been changed to Fn mode for the next character or nothing has + * been done and normal key repeat should happen. + * @since 3.2 + */ + virtual TBool HandleLongKeyL( TInt aKey ); + + /** + * Removes the character produced by the last handled key press. Long press number + * entry uses this to remove the character which was entered when the key was pressed + * down ("the initially short press character") before the key press turned out to be + * a long press. + * @return ETrue if something was really removed + * EFalse if nothing was removed (the previous key press had produced no charcters) + * @since 3.2 + */ + virtual TBool RollbackPreviousCharL(); + +#endif //RD_INTELLIGENT_TEXT_INPUT +#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ + +protected: // Data + TInt iMode; // + TInt iNumericKeymapResourceId; + HBufC* iNumericKeymapBuffer; + TLanguage iLanguage; // + + CPtiEngine* iPtiEngine; //owned + + TAknFepInputStateBase* iStatePtr; // gcc workaround to force compiler to use vtable lookup. + + MAknFepManagerUIInterface* iFepMan; //not owned + CAknFepCaseManager* iCaseMan; //not owned + TBool iPredictive; // ETrue: prediction is ON. +#ifdef RD_INTELLIGENT_TEXT_INPUT + // predictive QWERTY changes (e.g. XT9) ----> + TBool iQwertyInputMode; // ETrue: QWERTY mode is ON + // predictive QWERTY changes (e.g. XT9) <---- +#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ + TInt iPreviousInputSeqLen; + TInt iPreviousEditorTextLen; + TInt iInputSeqLenDeltaWithLastKey; + TInt iEditorTextLenDeltaWithLastKey; +#endif //__ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ +#endif //RD_INTELLIGENT_TEXT_INPUT + TUIState iInitialFepUIState; // + TInt iCaseBeforeLongKey; + }; + +#endif //__AKN_FEP_UI_MANAGER_BASE_H__ + +// End of file