--- a/fep/aknfep/inc/AknFepManager.h Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3170 +0,0 @@
-/*
-* Copyright (c) 2002-2004 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 CAknFepManager definition.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#ifndef __AKN_FEP_MANAGER_H__
-#define __AKN_FEP_MANAGER_H__
-
-#include "AknFepGlobalEnums.h" //TKeyPressLength
-#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface
-#include "AknFepLanguageManager.h" //CAknFepLanguageManager
-#include <gulicon.h>
-#include "aknfepuiinterface.h"
-#include "aknfepuimenus.h"
-#include <fepbase.h> //CCoeFep
-#include <coeinput.h> //TCoeInputCapabilities
-#include <fepitfr.h> //MFepInlineTextFormatRetriever
-#include <aknedstsobs.h> //MAknEdStateObserver
-#include <uikon.hrh> //TAknEditorNumericKeymap
-#include <aknEditStateIndicator.h> //TAknEditingState
-#include <frmtlay.h>
-#include <biditext.h>
-#include <PtiDefs.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <tagmalayoutandsource.h>
-#endif
-
-#include <aknextendedinputcapabilities.h>
-#ifdef RD_SCALABLE_UI_V2
-#include <peninputclient.h>
-#endif //#ifdef RD_SCALABLE_UI_V2
-
-#include <AknNullService.h> // CAknNullService
-#include <AknServerApp.h> // MAknServerAppExitObserver
-#include <aknfeppensupportinterface.h>
-#include "avkon.hrh"
-#ifdef RD_HINDI_PHONETIC_INPUT
-#include <PtiIndicDefs.h>
-#endif
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-// Predictive QWERTY (XT9) changes ---->
-class MAknFepUiWordPopupContent;
-#include "AknFepCandidatePopup.h"
-#include "AknFepCandidatePopupCallback.h"
-// Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-class CAknFepPluginManager;
-class CAknFepKeyCatcherInterface;
-class MAknFepManagerInterface;
-class CAknFepIndicator;
-class CAknEdwinState;
-class CPeriodic;
-class MAknEditingStateIndicator;
-class CAknFepCaseManager;
-class CAknFepHashKeyManager;
-class CAknKeySoundSystem;
-class CPtiEngine;
-class CAknFepSharedDataInterface;
-class CApaDocument; // User Dictionary
-class CAknFepInlineTextDecorator;
-class CTextView;
-class MPeninputServerEventHandler;
-class MAknFepDocumentNavigation;
-class CAknFepUIInterface;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-class CAknFepFnKeyManager;
-#endif
-//phrase creation
-class CZhuyinKeyHandler;
-class CAknFepZhuyinAnalyser;
-class CZhuyinAnalyserDbFeed;
-//User DB view
-class CAknFepUserdbDlg;
-class CAknFepThaiSCTSelector;
-class CAknNavigationDecorator;
-// This could be moved inside FepManager class?
-enum TWesternNaviEvent
- {
- ENullNaviEvent,
- ELeftNaviEvent,
- ERightNaviEvent,
- EBackspaceEvent,
- EUpNaviEvent,
- EDownNaviEvent
- };
-enum TSpecialTextField
- {
- /**
- * Constraints
- */
- ESplAny,
- ESplMailAddr,
- ESplNumeric,
- ESplPhoneNumber,
- ESplUrl,
- ESplDecimal,
- /**
- * Modifiers
- */
- ESplPassword=0x10000,
- ESplUneditable=0x20000,
- ESplSensitive=0x40000,
- ESplNonPredictive=0x80000,
- ESPlInitialCapsWord=0x100000,
- ESplInitialCapsWordSentence=0x200000,
- ESplConstraintMask=0xFFFF
- };
-
-const TInt KChrKeyMultitapTimeout = 1000000;
-/**
- * Translates ET9Eng language codes into localised descriptors and command Id's
- */
-class TFepLanguageTranslation
- {
- public:
- void ReadFromResource(TResourceReader& aReader);
- public:
- TPtrC iName;
- TInt iLanguageId;
- TInt iCommandId;
- };
-class CChrMultiTapTimer : public CTimer
- {
- public:
- static CChrMultiTapTimer* NewL(TCallBack aCallback);
- void After(TTimeIntervalMicroSeconds32 aInterval);
- private:
- CChrMultiTapTimer(TCallBack aCallback);
- void ConstructL();
- // from CActive
- virtual void RunL();
- private:
- TCallBack iCallback;
- };
-/**
- * The CCoeFep derived class of AknFep
- * Controls mode in the Fep. Handles all interaction with the editor
- * Creates and owns the UI Manger, the Key Catcher and the edit state indicators
- */
-class CAknFepManager :
- public CCoeFep,
- public MAknFepManagerUIInterface,
- public MFepInlineTextFormatRetriever,
- public MFepPointerEventHandlerDuringInlineEdit,
- public MAknFepUiInterfaceMenuObserver,
- public MAknServerAppExitObserver, //embedding
- private MAknEdStateObserver,
-#ifdef RD_SCALABLE_UI_V2
- public CAknExtendedInputCapabilities::MAknEventObserver,
-#endif
- private MFormCustomDraw
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- ,public MAknFepCandidatePopupCallback // Predictive QWERTY (XT9) changes
-#endif //RD_INTELLIGENT_TEXT_INPUT
- {
-
-private:
- class TTextDirectionalInfo
- {
- public:
-
- enum TTextDirectionalStatus
- {
- EUnknown,
- ENotInDocument,
- ENoDirectionalChunks,
- ERightToLeft,
- ELeftToRight
- };
-
- enum TDirectionalBlockEnvironment
- {
- EUndefined,
- EInsideBlock,
- EAtRightEndOfLine,
- EAtLeftEndOfLine,
- EAtRightEndOfBlockFacingOppositeDirectionalBlock,
- EAtLeftEndOfBlockFacingOppositeDirectionalBlock,
- EAtRightEndOfBlockFacingSameDirectionBlock,
- EAtLeftEndOfBlockFacingSameDirectionBlock
- };
- public:
- // Constructor
- TTextDirectionalInfo();
- void SetDirectionFromChunk( const CTmTextLayout::TTmChunkDescription& aChunk);
- public:
- TTextDirectionalStatus iDirectionalStatus;
- TDirectionalBlockEnvironment iBlockEnvironment;
- };
-
-public:
- /**
- * values for the flags required to maintain the internal
- * state of the Fep Manager during operation
- */
- enum
- {
- EFlagInsideMultitapInlineEditingTransaction =0x00000001,
- EFlagLaunchEditMenu =0x00000002,
- EFlagLongShiftKeyPress =0x00000004,
- EFlagNoActionDuringShiftKeyPress =0x00000008,
- EFlagShiftKeyDepressed =0x00000010,
- EFlagInsideInlineEditingTransaction =0x00000020,
- EFlagPassNextKey =0x00000040,
- EFlagQwertyChrKeyDepressed =0x00000080, // Not used. Qwerty mode is not supported.
- EFlagLineFeedCharacter =0x00000100,
- EFlagEditorFull =0x00000200,
- EFlagNewSharedDataInputMode =0x00000400,
- EFlagNoActionDuringChrKeyPress =0x00000800,
-
- EFlagSupressAutoUpdateAtEditorStart =0x00001000,
- EFlagNoMatches =0x00002000,
- EFlagSuppressInputStateChange =0x00004000,
- EFlagCompoundWord =0x00008000,
- EFlagChangeInputMode =0x00010000,
- EFlagForegroundUIComponentVisible =0x00020000,
- EFlagMenuPaneVisible =0x00040000,
- EFlagRemoveMatchesMenuItem =0x00080000,
- EFlagInlineEditInBackground =0x00100000,
- EFlagNewSharedDataInputLanguage =0x00200000,
- EFlagLastCharacterInEditor =0x00400000,
-
- EFlagSpaceCharacter =0x00800000, // adding for japanese
- EFlagFullWidthSpaceCharacter =0x01000000, // adding for japanese
- EFlagBidiCursorIsInitialized =0x02000000,
- EFlagCursorPointsRightToLeft =0x04000000,
- EFlagAtDirectionallyAmbiguousPoint =0x08000000,
- EFlagCharacterAdded =0x10000000,
- EFlagNoInlineEditFormatting =0x20000000, // Not really used yet!
- EFlagQwertyShiftMode =0x40000000, // Not used. Qwerty mode is not supported.
- EFlagSupressAutoUpdate =0x80000000
- };
-
- enum
- {
- EExtendedFlagShortPressHashKey =0x00000001,
- EExtendedFlagNoModeChange =0x00000002,
- EExtendedFlagShiftReleasedOnPopup =0x00000004,
- EExtendedFlagOkKeyPressOnCandidatePopup =0x00000008,
- /* Flag to take care of graceful exit for FEP launched dialog when the underneath editor is closed */
- EExtendedFlagEdwinEditorDestroyed =0x00000010,
- /* Flag to set decide when to set multiple observer for FEP. Set this flag whenever a FEP aware dialog is launched */
- EExtendedFlagFepAwareDialogLaunched =0x00000020,
- /* Flag to specify that pointer event type EDrag has happened */
- EExtendedFlagPointerEventTypeEDrag =0x00000040
- };
-
- //public constants
-
- enum
- {
- ESingleCharacter =1,
- EMaximumFepWordLength =63
- };
-
-private:
- /**
- * private constants
- */
- enum
- {
- EShiftKeyRepeatDelay =800000, // 0.8s
- EQueryBufferLength =63,
- EDefaultNumericCharMapResId =0,
- EDefaultSCTResourceId =-1,
- ENoCharacters =0,
- EAknFepUid =0x100056de,
- EStarKeyUnicodeValue =0x2A,
- EHashKeyUnicodeValue =0x23,
- ELeftSoftkeyIndex =CAknFepUIInterface::ELeftSoftkeyIndex,
- ERightSoftkeyIndex =CAknFepUIInterface::ERightSoftkeyIndex,
- EMiddleSoftkeyIndex =CAknFepUIInterface::EMiddleSoftkeyIndex,
- EWordConcatenationTimeout =2000000, // 2.0s
- ELanguageArrayGranularity =20,
- EChrKeyRepeatDelay =1000000, // 1.0s
- EHalfQwertyChrKeyRepeatDelay =600000 //0.6 secs from Default actions UI spec
- };
-
- enum TChineseFepCursorType
- {
- EActive,
- EPassive
- };
-
-public:
- enum
- {
- ECcpuStateNone = 0,
- ECcpuStateStartCopy = 0x01,
- ECcpuStateCopy = 0x02,
- ECcpuStateStartCut = 0x04,
- ECcpuStateCut = 0x08,
- ECcpuStateButton = 0x10,
- ECcpuStatePosted = 0x20,
- ECcpuStateHashDown = 0x40,
- ECcpuStateSelectionEventPosted = 0x80,
- ECcpuStateEdwinInSelectionMode = 0x100,
- ECcpuStateIgnoreStarUp = 0x200,
- ECcpuSupressEditMenuFromShiftUp = 0x400,
- ECcpuStateCbaSymbol = 0x800,
- ECcpuStateIgnoreNextFocusChange = 0x1000,
- ECcpuStataCommitPredictiveWord = 0x2000,
- ECcpuStateIgnoreNextEdwinSyncEvent = 0x4000,
- ECcpuStateLosingFocus = 0x8000,
- ECcpuStateUncommitWhenFocused = 0x10000,
- ECcpuStateHashKeyDeleteDone = 0x20000,
- ECcpuStateSupressCursorMoveToEnd = 0x40000,
- ECcpuStateChangeToPredictionMode = 0x80000,
- ECcpuStateNewPredictiveWord = 0x100000,
- ECcpuStateShiftkeyWasPressedBeforeLosingFocus = 0x200000,
- ECcpuStateCbaShown = 0x400000
- };
-
- enum TShowSctMode
- {
- EShowSctFirst=0,
- EShowPctFirst,
- EShowSmileyFirst
- };
-
-private:
- // These are needed to remember editor's ccpu state
- // for editing options submenu.
- enum
- {
- ECcpuStatusFlagCanCopy = 0x01,
- ECcpuStatusFlagCanCut = 0x02,
- ECcpuStatusFlagCanPaste = 0x04,
- };
-
-
-private:
- class TLanguageCapabilities
- {
- public:
- TInt iInputLanguageCode; // Symbian language code.
- TBool iLocalInputLanguageInUse;
- TBool iArabicIndicDigitsAllowed;
- TBool iEasternArabicIndicDigitsAllowed;
- TBool iIndicDigitsAllowed;
- TDigitType iLocalDigitType;
- TDigitType iNumericEditorDigitType;
- TBool iSupportsCase;
- TBool iSupportsWesternPredictive;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- // Predictive QWERTY changes ---->
- TBool iSupportsWesternQwertyPredictive; // predicitve QWERTY
- // Predictive QWERTY changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
- TBool iRightToLeftLanguage;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD
- TBool iSupportsWesternHalfQwertyPredictive;
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT
- };
-
-public:
- /**
- * C++ Constructor
- */
- CAknFepManager(CCoeEnv& aConeEnvironment);
-
- /**
- * Second phase construction
- */
- void ConstructL(const CCoeFepParameters& aFepParameters);
-
- /**
- * destructor
- */
- virtual ~CAknFepManager();
-
-
-public: //from MAknFepManagerUIInterface
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /**
- Returns the keyboard layout
- */
- TPtiKeyboardType KeyboardLayout() const;
- /**
- Returns the current keyboard layout in use.
- */
- CAknFepFnKeyManager::TFnKeyState FnKeyState();
- void SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState);
- /**
- * Returns the resource ID of the numeric editor in use
- */
-
- TInt GetNumericSCTResID();
-
-
-#ifdef __REVERSE_FN_KEY_SUPPORTED
- /**
- Returns if the input is in reverse Fn key input mode.
- */
- virtual TBool IsReverseFnkeyInput();
-
- void SetReverseFnkeyInputMode(TBool iIsOn);
-
- /**
- * Returns true if the aChar is allowed in the numeric editor
- */
- TBool IsValidCharInNumericEditorL( TChar aChar ) const;
-
- /**
- * Filter the char for Fn reverse mode in case of
- * numeric editor. This function should call
- * in case of numeric editor reverse mapping.
- */
- TBool IsValidCharForNumericInFnReverseL(TInt aKey, TPtiTextCase aCase) ;
-
-#endif //__REVERSE_FN_KEY_SUPPORTED
- virtual void AddOneSpaceOrMoveCursorL();
-#endif
- virtual TBool IsAllowedKeymappingForNumberMode(TChar aChar) const;
- /**
- * closes the UI
- * commits any character in multitap
- */
- virtual TBool TryCloseUiL();
-
- /**
- * Used by the UI manager to inform the Fep Manager that the UI has activated.
- */
- virtual void SendUIActivatedNotification();
-
- /**
- * Used by the UI manager to inform the Fep Manger that the UI has not activated.
- */
- void SendUIDeActivatedNotification();
-
-
- /**
- * Plays sound
- */
- virtual void PlaySound(TAvkonSystemSID aSound) const;
-
- /**
- * Set current long clear key press
- */
- virtual void SetLongClearAfterCloseUI(TBool aLongClear);
-
- /**
- * Align the Logical and Visual cursor positions.
- *
- * @since 3.2
- * @param aType Cursor type.
- * @param aToLeft ETrue if the position to the left is to be found,
- * EFalse if the position to the right is to be found.
- * @return None
- */
- void AlignLogicalAndVisualCursorL( TTmDocPosSpec::TType aType, TBool aToLeft );
-
- /**
- * This method removes the Repha character. The function goes to the
- * start of the syllable, checks if repha character is present and
- * removes it.
- *
- * @since 3.2
- * @param None.
- * @return None.
- */
- void RemoveRephaCharacterL();
-
- /**
- * Checks if the Repha character has been attached to the syllable
- *
- * @since 3.2
- * @param None.
- * @return ETrue if present else EFalse.
- */
- TBool IsRephaPresent();
-
- /**
- * Retrieve the Previous to previous character during multitapping.
- *
- * @since 3.2
- * @param aContextSensitive EFalse is the default parameter.
- * ETrue is used for requesting the function
- * to check for extraction of the character
- * two positions before the seleted text.
- *
- * @return The previous to previous character if any.
- */
- TText PreviousToPreviousChar( TBool aContextSensitive = EFalse );
-
- /**
- * This method is called for removing the Rakar character. The function
- * checks if Rakar (Virama+Ra) is present.
- *
- * @since 3.2
- * @param None.
- * @return None.
- */
- void RemoveRakarCharacterL();
-
- /**
- * This method is called for removing the N characters from the
- * specified position. If the text to be removed is not yet
- * committed, it is updated with NULL descriptor and committed.
- *
- * @since 5.0
- * @param TInt aPos position to start searching from. By default
- * Searching will start from the cursor position.
- * @param TInt aNumOfCharacters Number of characters to remove.
- * @param TBool Should cursor be positioned at the original location.
- * @return None.
- */
- void RemoveTextFromEditorL( TInt aNumOfCharacters, TInt aPos = 0,
- TBool aIsToAlignCursor = ETrue );
-
- /**
- * Align the Logical and Visual cursor positions.
- * Overloaded method which uses FindDocPos
- *
- * @since 5.0
- * @param None
- * @return None
- */
- void AlignLogicalAndVisualCursorL();
-
- CAknFepPluginManager* PluginUIManager();
- //Phrase creation
- MZhuyinKeyHandler* ZhuyinKeyHandler();
- CAknFepZhuyinAnalyser* ZhuyinAnalyser();
- void UpdateStickyState();
-
-#ifdef RD_MARATHI
- /**
- * This function checks if the previous two characters are
- * the combination of Chandra-A
- *
- * @since 5.0
- * @param None
- * @return TBool.
- */
- TBool IsChandraAPresentL();
-
- /**
- * This function checks if the previous Chandra-A is present
- * before the cursor position
- *
- * @since 5.0
- * @param None
- * @return TBool.
- */
- TBool IsEyeLashRaPresentL();
-#endif // RD_MARATHI
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /**
- * This function returns the current case.
- * Required for Shift key handling.
- *
- * @since 3.2
- * @param None
- * @return TBool.
- */
- TInt GetCurrentCase();
-
- /**
- * This function set the flag of chr composition key
- * in mini qwerty
- *
- * @since 3.2
- * @param aFlag ETrue if it is chr composition key.
- * @return None.
- */
- void SetComposChrFlag( TBool aFlag );
-
- /**
- * This function get the flag of chr composition key
- * in mini qwerty
- *
- * @since 3.2
- * @param None.
- * @return ETrue if it is chr composition key..
- */
- TBool GetComposChrFlag();
- /**
- * Hides the exact word popup.
- */
- void HideExactWordPopUp();
- /**
- * @return ETrue If the exact word pop up is shown.
- */
-
- TBool IsExactWordPopUpShown();
-#endif
-#ifdef RD_HINDI_PHONETIC_INPUT
- //hindi_phonetic_fixes
- /*
- * This functions toggles the case from upper to lower
- * @since 5.0
- * @param None
- * @return void
- */
- virtual void HandleIndicCaseL();
-#endif
-
-public: //interface to the key catcher
- /**
- * Handles key events passed from the Key Catcher, excluding the shift key event
- * which is dealt with separately in the HandleShiftKeyEventL function.
- * State will always be Intital or UIActive.
- */
- TKeyResponse HandleKeyEventL(TUint aCode, TKeyPressLength aLength, TEventCode aEventCode = EEventKey);
-
- /**
- * Shift keys are dealt with in a different way to other keys, the action is on the up
- * key event.
- */
- TKeyResponse HandleShiftKeyEventL(TEventCode aEventCode);
-
- /**
- * Thai 0 key is handled differently. If 0 key is up before long keypress, we show SCT.
- */
- TKeyResponse HandleThai0KeyEvent(TEventCode aEventCode, TKeyPressLength aLength,
- TBool& aThai0KeyHandling);
-
- /**
- * Chr key handling
- */
- TBool HandleQwertyChrKeyEventL( TEventCode aEventCode );
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD
- /**
- * Chr Key handling in half qwerty
- */
- TKeyResponse HandleChrKeyForHalfQwertyL( TEventCode aEventCode);
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT
- /**
- * Control key handling
- */
- TKeyResponse HandleQwertyControlKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode);
-
- /**
- * Handles key events for qwerty input mode.
- *
- * @since 3.0
- * @param aKeyEvent An event to be handled.
- * @param aResponse Repsonse (consumed / not consumed) will be stored here.
- * @return ETrue if evenat was handled by this method.
- * EFalse otrherwise.
- */
- TBool HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse);
-
- /**
- * Returns boolean value indicating whether it is ok to set edwin into "copy/paste"
- * mode.
- *
- * @since 3.1
- * @return ETrue if it is ok to editor into selectuion mode.
- * EFalse otherwise.
- */
- TBool OkToActivateSelectionMode() const;
-
- /**
- * Returns the status of arabic-indic digit mode setting.
- *
- * @since 3.0
- */
- TBool ArabicIndicDigitsInUse() const;
-
- /**
- * Returns the status of Eastern arabic-indic digit mode setting.
- *
- * @since 3.0
- */
- TBool EasternArabicIndicDigitsInUse() const;
- void NumberModeChangeGSNotification();
- void DimInputmodeMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane);
-
- /**
- * Dims the item corresponding to the mode aMode, in the edit mode menu
- *
- * @param aMenuPane the edit menu pane
- * @param aMode the mode to be dimmed
- */
- void DimMenuItem(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aMode);
-
- TInt FepShowVkbPreviewStatus();
-
- TInt PluginInputMode() const;
-private: // from CCoeFep
- /**
- * from CCoeFep - not used
- */
- virtual void CancelTransaction();
-
- /**
- * from CCoeFep - not used
- */
- virtual void IsOnHasChangedState();
-
- /**
- * from CCoeFep - not used
- */
- virtual void OfferKeyEventL(TEventResponse& aEventResponse, const TKeyEvent& aKeyEvent,
- TEventCode aEventCode);
-
- /**
- * from CCoeFep - not used
- */
- virtual void OfferPointerEventL(TEventResponse& aEventResponse,
- const TPointerEvent& aPointerEvent,
- const CCoeControl* aWindowOwningControl);
-
- /**
- * from CCoeFep - not used
- */
- virtual void OfferPointerBufferReadyEventL(TEventResponse& aEventResponse,
- const CCoeControl* aWindowOwningControl);
-
-private: // from MFepAttributeStorer (via CCoeFep)
- /**
- * from MFepAttributeStorer (via CCoeFep) - not used
- */
- virtual TInt NumberOfAttributes() const;
-
- /**
- * from MFepAttributeStorer (via CCoeFep) - not used
- */
- virtual TUid AttributeAtIndex(TInt aIndex) const;
-
- /**
- * from MFepAttributeStorer (via CCoeFep) - not used
- */
- virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const;
-
- /**
- * from MFepAttributeStorer (via CCoeFep) - not used
- */
- virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream);
-
-private: // from MCoeForegroundObserver (via CCoeFep)
- /**
- * from MCoeForegroundObserver (via CCoeFep) - not used
- */
- virtual void HandleGainingForeground();
-
- /**
- * from MCoeForegroundObserver (via CCoeFep) - not used
- */
- virtual void HandleLosingForeground();
-
-private: // from MCoeFocusObserver (via CCoeFep)
-
- virtual void HandleChangeInFocus();
-
- /**
- * in queries the editor is destroyed before the call to HandleChangeInFocus
- * so NULL the iInputCapabilities variables to prevent trying to save to an unreferenced object
- */
- virtual void HandleDestructionOfFocusedItem();
-
-public: // from MAknEdStateObserver
- /**
- * from MAknEdStateObserver - not used
- */
- virtual void HandleAknEdwinStateEventL(CAknEdwinState* aAknEdwinState,
- EAknEdwinStateEvent aEventType);
-
-private: // from MEikCommandObserver (via MAknFepUiInterfaceMenuObserver)
- /**
- * from MEikCommandObserver
- * Processes user commands, in this case only commands from the edit menu
- */
- virtual void ProcessCommandL(TInt aCommandId);
-
- /**
- * Constructs the component fully. This method is called when a
- * fep aware editor is first time focused for text input.
- */
- void ConstructFullyL();
-
- /**
- * Deletes the objects constructed with ConstructFullyL() method.
- */
- void CommonDestroyFep();
-
-private: // from MAknFepUiInterfaceMenuObserver
- /*
- * not used as DynInitMenuPaneL() is now called before SetEmphasis() and HandleChangeInFocus()
- */
- virtual void SetEmphasis(CBase* aMenuControl,TBool aEmphasis);
-
- /**
- * removes app menu panes and adds the FEP edit menu pane to the menu bar
- */
- virtual void DynInitMenuBarL(TInt aResourceId,CAknFepUiInterfaceMenuBar* aMenuBar);
-
- /**
- * dynamically changes the edit menu depending on fep and editor state
- */
- virtual void DynInitMenuPaneL(TInt aResourceId,CAknFepUiInterfaceMenuPane* aMenuPane);
-
-private: //from MFepPointerEventHandlerDuringInlineEdit
- /**
- * from MFepPointerEventHandlerDuringInlineEdit - not needed, has to be implemented for MCoeFepAwareTextEditor interface
- * No pointer in Chinese Series 60
- */
- virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers,
- TInt aPositionInInlineText);
-
-private: //from MFepInlineTextFormatRetriever
- /**
- * from MFepInlineTextFormatRetriever - not needed, has to be implemented for MCoeFepAwareTextEditor interface
- */
- virtual void GetFormatOfFepInlineText(TCharFormat& aFormat,
- TInt& aNumberOfCharactersWithSameFormat,
- TInt aPositionOfCharacter) const;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
-// Predictive QWERTY changes (XT9) ---->
-public:
- //from MAknFepCandidatePopupCallback ---->
- /**
- * Callback the get the current set of candidates
- * @param aArray An output parameter for the candidate strings
- * @param aActiveIdx An output parameter for the index of the
- * currently active candidate
- */
- virtual void GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx );
-
- /**
- * Callback get new position for candidate list
- * @param aRect New rect position for candidate list.
- */
- virtual void GetUpdateCandidatePositionL(TRect& aRect);
-
- //from MAknFepManagerUIInterfaceWestern ---->
-
- /**
- * Function to get the text direction for current language.
- * @return ETrue if language id RTL, EFalse if it is not
- */
- TBool IsRightToLeftLanguage();
- TBool IsLanguageSupportPrediction();
-// Predictive QWERTY changes (XT9) <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-public:
-
- /**
- * Launches the mode selection menu
- */
- void LaunchSelectModeMenuL();
-
- /**
- * Launches the edit word query in western predictive text mode
- */
- void LaunchEditWordQueryL();
-
- /**
- * Returns the status of given extended input capability flag.
- */
- TUint ExtendedInputCapabilities() const;
-
- /**
- * Exit plugin itut spell mode by press ok btn
- */
- void ExitPluginSpellModeByOk();
-
- /**
- * Exit plugin itut spell mode by press cancel btn
- */
- void ExitPluginSpellModeByCancel();
-
- void SynCCPSoftKey();
-
- /**
- * checks that the editor the editor has free space to add another character
- * An editor of unlimited length will return its maximum size as zero
- */
- TBool EditorHasFreeSpace( TInt aNumberOfCharacter = 0 ) const;
- TBool IsSpecialNumericEditor();
-
-private:
-
- /**
- * Handles notifications that the UI has changed focus
- * <ul>
- * <\li>When moving away from a fep aware text editor saves the mode of the old editor
- * <\li>When moving to fep aware text editor gets the the mode if it has previously been saved
- * and checks if the editor supports secret text
- * <\ul>
- */
- void HandleChangeInFocusL();
-
- /**
- * cleans up the fep after trapping a leave
- */
- void CleanUpFep();
-
- /**
- *
- * @param aKeyCode the value of the key to simulate
- */
- void SimulateKeyEventL(TUint aKeyCode, TBool aActiveObj=EFalse);
-
- /**
- * Tries to Reset the Shift Key Monitor
- * Cleans up FEP if failed
- *
- * @return KErrNone if succeed, KErrDied if failed
- */
- static TInt ResetShiftKeyMonitorCallback(TAny* aObj);
-
- /**
- * Cancels the shift monitor
- * tells the editor to up date its cba
- * to enable copy/paste support on cba. We simulate via CCoeEnv
- * to avoid fep SimulateL adding shift modifiers
- */
- void ResetShiftKeyMonitorL();
-
- /**
- * Cancels the shift key and concatenation timers if they are active
- */
- void CancelAllTimerActivity();
-
- /**
- * checks whether a mode is permitted by the current editor
- *
- * @return ETrue is aMode is permitted, EFalse if it is not
- */
- TBool IsModePermitted(TInt aMode, TWidthChar aWidth = ENoneWidthChar) const;
-
- /**
- *
- *
- * @return
- */
- TUint EditorMode(TInt aMode, TWidthChar aWidth) const;
-
- /**
- * Synchronises the states of the Fep Manager and the Key Catcher
- *
- * @return System wide error code.
- */
- TInt SyncStates(TAknFepManagerState aState);
-
- /**
- * Launches the matches popup list
- */
- void LaunchMatchesPopupListL();
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- // Predictive QWERTY (XT9) changes ---->
- /**
- * Launches the compact match candidate list which follows the inline editor.
- * @param aFocusedIndex The index of the word focused by default.
- * If KErrNotFound is given, the currently active
- * word will be focused.
- */
- void LaunchCandidatePopupListL( TInt aFocusedIndex = KErrNotFound );
- void StartInlineEditingWithSelectedWord(TDesC& aTextToUncommit);
- /**
- * Shows the exactly typed word above the inline editor if it differs from the
- * best guess word shown inline.
- */
- void ShowExactWordPopupIfNecessaryL();
-
- /**
- * Launches the predictive setting dialog.
- */
- void LaunchPredictiveSettingDialogL();
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
- void LaunchWritingLanguageSettingDialogL();
-
- void LaunchDualLanguageSettingDialogL();
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-
- // Predictive QWERTY (XT9) changes <----
-
- /**
- * Handle shift loop in chinese variant for half qwerty
- */
-
- void HandleShiftHalfQwertyChineseL(TEventCode aEventCode);
-
- /**
- * Handle shift key loop in chinese variant for qwerty and mini qwerty
- */
- void HandleShiftQwertyChineseL(TEventCode aEventCode);
-#endif //RD_INTELLIGENT_TEXT_INPUT
- /**
- * Launches the insert word query in western predictive text mode
- */
- void LaunchInsertWordQueryL(const TDesC& aInitialText, TCursorSelection aTextSpanToReplace);
-
- /**
- * Actual query dialog for LaunchInsertWordQueryL and LaunchEditWordQueryL
- */
- void LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText,
- TCursorSelection aTextSpanToReplace);
-
- /**
- * Inserts a text directly into the editor which previously had focus
- */
- void InsertTextFromDialogL(const TDesC& aTextFromDialog,
- TCursorSelection aExtentOfTextToReplace);
-
- /**
- * Launch the KutenCodeQuery
- */
- void LaunchKutenCodeQueryL();
-
- /**
- * Returns the resource ID for the numeric mode special character map
- * available in the current editor.
- */
- TInt NumericModeSCTResourceId() const;
-
- /**
- * Handles the hash key
- * <ul>
- * <\li>a short hash cycles through the modes
- * <\li>a long key press moves to number mode unless the mode is already number, in which case
- * it goes to default
- * <\ul>
- */
- TKeyResponse HandleHashKeyL(TKeyPressLength aLength);
-
- /**
- *
- * @return Editor's numeric keymap for # and * keys of ITU-T mode.
- */
- TInt EditorNumericKeymap() const;
-
- /**
- * dims the item on the edit menu corresponding to the current mode
- * the user can press cancel to remain in the same mode
- *
- * @param aMenuPane the edit menu pane
- */
- void DimEditMenuModeItems(CAknFepUiInterfaceMenuPane* aMenuPane);
-
- /**
- * Launch confirmation note.
- *
- * @param aResourceId Confirmation note resource Id.
- */
- void LaunchConfirmationNoteL(TInt aResourceId);
-
- /**
- * Enters a new character into the editing window
- * <p> Secret Text Editors do not use the MCoeFepAwareTextEditorInterface,
- * they interact with the editor by simlulating key events. When in Multitap, simultating a
- * numeric key event causes an extra key to be added to the control stack because the numeric
- * keys exist on the Series 60 keypad; the flag EFlagPassNextKey is used to ignore this.
- * <p> When secret editing in multitap, a backspace is simulated to replace the last
- * character in the editor.
- */
- void NewCharacterL(const TDesC& aChar);
- /**
- * Enters a new phrase into the editing window
- *
- */
- void NewTextL(const TDesC& aText);
-
- /**
- * Commits given string in the editing window. This function checks that
- * the editor has enough space to insert given string. If it not,
- * given string is cut, then it is committed.
- */
- void CommitInlineEditL(const TDesC& aText, TInt aUncommitedTextChange);
-
- /**
- * Cansel inline input.
- */
- void CancelInlineEdit();
-
- /**
- * Used by editing window when it draws inline input characters.
- */
- void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, TInt& aHeight,
- TInt& aAscent, TInt aDocumentOffset);
-
- /**
- * Used by Chinese UI to get cursor baseline position.
- */
- void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine,TInt& aHeight,TInt& aAscent);
-
-
-
- /**
- * checks that the editor the editor has free space to add another character
- * An editor of unlimited length will return its maximum size as zero
- */
- TBool IsEditorHasFreeSpace()const;
-
- /**
- * Returns the free space left in the Editor.
- *
- * @param aUnlimit. Set to EFalse in case of Editors with limited text
- * size
- * isToCountUncommittedTextLength. Pass ETrue if the lenght of
- * Uncommitted text is to be counted.
- *
- * @return TInt. Free space left in the Editor.
- */
- TInt EditorFreeSpace(TBool& aUnlimit,
- TBool isToCountUncommittedTextLength = EFalse ) const;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /**
- * Returns the free space left in the Editor. ITI Specific Implementation
- *
- * @param aUnlimit. Set to EFalse in case of Editors with limited text
- * size
- * isToCountUncommittedTextLength. Pass ETrue if the lenght of
- * Uncommitted text is to be counted.
- *
- * @return TInt. Free space left in the Editor.
- */
- TInt EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit,
- TBool isToCountUncommittedTextLength = EFalse ) const;
-#endif
-
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /**
- * Gives the amount of characters in the document.
- * @return The number of characters in the active editor.
- */
- TInt DocumentLength() const;
-
- /**
- * Tells if the given key event will replace the latest character in editor
- * because of multitapping or long press handling.
- */
- TBool KeyEventWillReplaceCharacter( const TKeyEvent& aKeyEvent );
-
-#endif
-#endif
-
- /**
- * Uses TLocale to access the localized decimal separator in the kernel
- */
- TChar CurrentDecimalSeparator() const;
-
- /**
- * Sets up the FEP state from the Editor State
- * Called by HandleChangeInFocusL()
- */
- void ConfigureFEPFromEditorStateL();
-
- /**
- * Sets up the FEP State(character width) from the Editor Mode
- * @return FepMode
- */
- TInt ConfigureFepModeFromEditorMode(TInt aEditorMode);
-
- /**
- * launch query which contains instructions on how to enter
- * chinese text using the FEP
- */
- void LaunchHelpTextQueryL();
-
- /**
- * ensure that the UI is aware of the current editor context
- */
- void UpdateEditorContext() const;
-
- /**
- * query whether the text is valid in the current editor
- */
- TBool TextIsValidInEditor(const TDesC& aText);
-
-
- /**
- * Sets the style of the cursor to aType
- */
- void SetCursorType(TChineseFepCursorType aType);
-
- /**
- * Returns the current editing state indicator
- */
- MAknEditingStateIndicator* EditingStateIndicator() const;
-
- /**
- * Adds space at the end of the buffer if the feature is enabled.
- */
- TBool TryHandleArrowRightEventL(TInt aDocumentLength);
-
- /**
- * Remove spaces from the end of the buffer if the cursor
- * is in last position. Only in Japanese variant.
- * Opposite functionality of TryHandleArrowRightEventL().
- */
- TBool TryHandleArrowLeftEventL(TInt aDocumentLength);
-
- /**
- * Adds enter to the buffer if the cursor is at the end of the buffer and
- * feature KAknFepEnterWithScrollDown is enabled.
- *
- * @since 2.6
- * @param aDocumentLength Editor's document length
- * @return Boolean if the down key event was handled.
- */
- TBool TryHandleArrowDownEventL(TInt aDocumentLength);
-
- inline void ResetFlags();
-
- /**
- * Handle the Chr Key Monitor
- * for Japanese variant only.
- *
- * @since 3.0
- * @return KErrNone if succeed, KErrDied if failed
- */
- static TInt HandleChrKeyMonitorCallback(TAny* aObj);
-
- /**
- * Enters a new ligature into the editing window.
- *
- * @since 3.2
- * @param aText Unicode value of the ligature.
- * @return None
- */
- void NewLigatureL( const TDesC& aText );
- /**
- * Sets the current state to aState based on the input mode
- * used to show the indicator
- * @since 3.2
- */
- void SetPredictiveIndicatorState(TAknEditingState& aState);
- static TInt HandleResourceChangedCallback(TAny* aObj);
-
- void ResourceChangedTimeroutL();
- /**
- * Exit plugin itut spell mode by press ok btn
- */
- void ExitPluginSpellModeByOkL();
-
-#ifdef RD_SCALABLE_UI_V2
- /**
- * Unregisters Fep as observer
- */
- void UnregisterObserver();
-
- /**
- * Unregisters Fep as observer
- */
- void RegisterObserver();
-
-#endif // RD_SCALABLE_UI_V2
-private:
- TUint EditorModeFromFepMode(TInt aFepMode);
-
- // returns sound system
- CAknKeySoundSystem* SoundSystem() const;
-
- void SetHashKeyStyle();
- void ReadHashKeyLoopL();
-
- TBool IsValidInLineCharacter(TChar aCharacter) const;
- TBool HandleLoopingInNaviEventL(TWesternNaviEvent aNaviEvent);
-
- static TInt WordConcatenationTimerTimeoutCallback(TAny* aObj);
- void WordConcatenationTimerTimeoutL();
-
- void AddInputLanguageItemL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex);
- void SetQwertyModeToInputcapbility();
- void SetExtendedInputCapabilities( TUint aCapabilities);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
- // Predictive QWERTY (XT9) changes ---->
- /**
- * Adds the "Input Options" option and its sub menu to the given menu.
- * @param aMenuPane The menu where the option should be added.
- * @param aIndex The location in the menu where the option should be added.
- */
-
- void AddPredictiveModeOptionsL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex) const;
-
- /**
- * Adds the XT9 Edit menu options to the given menu.
- * @param aMenuPane The menu where the option should be added.
- * @param aIndex The location in the menu where the option should be added.
- */
-
- void AddPredictiveModeEditMenuL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex) const;
-
- // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
- /* Sets default number mode when arabic language is used.
- * @param aMode either Latin or Arabic
- * @param aNbrModeType number mode type from GSLangPlugin.hrh
- */
- void SetDefaultNumberMode( TInt aMode, TInt aNbrModeType );
-
- /**
- * Loads an icon from avkon bitmap file.
- * @param aIcons The array into which the icon will be added. Icons will be
- * owned by this array.
- * @param aBitmapId ID of the actual bitmap.
- * @param aMaskId ID of the mask.
- */
- void LoadIconL( CArrayPtr<CGulIcon>* aIcons, TInt aBitmapId, TInt aMaskId );
-
- /**
- * Add a menu item for User DB management.
- * phrase creation
- * @since S60 5.0 S60_version
- * @param aMenuPane The menu into which the mune item will be added.
- * @param aIndex Index of the menu item to insert.
- * @return none
- */
- void AddUserDBDlgItemL( CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex );
-
- /**
- * Return wether ipnut mode is change by press shift+space.
- * This is for half-qwerty.
- * @return ETure is change by press shift+space, otherwise EFalse.
- */
- TBool IsChangeModeByShiftAndSpace();
-
- /**
- * Set wether ipnut mode is change by press shift+space.
- * This is for half-qwerty.
- * @return none
- */
- void SetChangeModeByShiftAndSpace( TBool aFlag );
-
-public:
- //Hash Key Manager Interface
- TBool IsOnlyNumericPermitted() const;
- void TryIncrementModeL(TInt aCurrentMode);
- void TryIncrementModeChineseQwertyL(TInt aCurrentMode);
- void TryIncrementChineseModeForQwertyL(TInt aCurrentMode);
- void TryChangeToSharedDataModeL();
- void TryChangeToModeBeforeL();
- TBool TryChangeModeL(TInt aMode);
- void ChangeInputLanguageL(TInt aInputLanguage);
- void RemovePreviousCharacterL();
- void TryChangePredictiveInputModeL(TBool aFlag);
-
- /**
- * To Handle Indic Hash key
- *
- *
- * @since 3.2
- * @return the language id of the Input Language as in Cenral Repository (General Settings)
- */
- TLanguage GetInputLanguageFromSharedDataInterface();
-
-
- /**
- * To Handle Hash key
- *
- *
- * @since 3.2
- * @return ETrue if the Last Key press was Hash key.
- */
- TBool WasLastKeyPressAHashKey();
-
- /**
- * To Handle Hash key
- * To set or Reset the status maintained to know if last key pressed was Hash Key
- *
- * @since 3.2
- * @return nothin
- */
- void SetLastPressedHashKeyStatus(TBool aStatus);
-
- //Case Manager Interface
- MCoeFepAwareTextEditor* FepAwareTextEditor() const;
-
- TBool IsFepAwareTextEditor() const;
-
- TCursorSelection UncommittedText() const;
- void SetCase(TCase aCase);
-
- //made public for western
-
- /**
- * Retreives the State of the current editor
- *
- * @return the current editors state object
- */
- CAknEdwinState* EditorState() const;
-
- /**
- * update the edit indicators when moving into a new input mode
- */
- void UpdateIndicators();
-
- /**
- * Checks if the editor is in a state where a Special Character Table can be launched
- */
- TBool IsAbleToLaunchSCT() const;
-
- /**
- * Get current editor's SCT resource id
- */
- TInt GetCurrentEditorSCTResId() const;
-
- /**
- * Launch the Special Character Table
- */
- void LaunchSpecialCharacterTableL(TInt aResourceId = EDefaultNumericCharMapResId,
- TBool aLaunchedByTouchWin=EFalse,
- TBool aSmileyFirst=EFalse);
-
- /**
- * Checks if the editor is in a state where a Pictograph Character Table can be launched
- */
- TBool IsAbleToLaunchPCT() const;
-
- /**
- * Checks if the editor is in a state where a Pictograph Character Table can be launched
- */
- TBool IsAbleToLaunchSmiley() const;
-
- /**
- * Launch the Pictograph Character Table
- */
- void LaunchPictographCharacterTableL();
-
- //MAknFepManagerUIInterfaceWestern
- virtual void UpdateInlineEditL(const TDesC& aNewInlineText,
- TInt aPositionOfInsertionPointInInlineText);
- virtual void StartInlineEditL();
- virtual void StartInlineEditL(const TDesC& aText);
- virtual void StartInlineEditL(TCursorSelection aCursorSelection,
- const TDesC& aInitialInlineText,
- TInt aPositionOfInsertionPointInInlineText,
- TBool aCursorVisibility);
-
- virtual TBool CloseUiIfWordDeletedL();
- virtual TBool TryGetTextToUncommitL(TDes& aText, TInt aCode, TBool& aComsumeKey);
-
- /**
- * Addition for ITI features on FSQ.
- * To check which characters will be underlined.
- */
- TBool TryGetTextToUncommitL(TDes& aText, TBool& aComsumeKey);
-
- virtual void UpdateCbaL(TInt aResourceId);
- virtual TBool TryRemoveNoMatchesIndicatorL();
- virtual TBool IsMoreGoodWordsComing(TInt aNewWordLength) const;
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- virtual TBool IsMoreGoodAutoCompleteWordsComing(TInt aInputMode, TInt aPreviousWordLengh,
- TInt aNewWordLength) const;
-#endif //RD_INTELLIGENT_TEXT_INPUT
- virtual void TryStartCompoundWord();
- virtual void AddCompoundWordToUdbL();
-
- //MAknFepManagerUIInterfaceWestern made public for western
- inline TBool IsFlagSet(TInt aFlag) const;
- inline void SetFlag(TInt aFlag);
- inline void ClearFlag(TInt aFlag);
-
- inline TBool IsExtendedFlagSet(TInt aExtendedFlag) const;
- inline void SetExtendedFlag(TInt aExtendedFlag);
- inline void ClearExtendedFlag(TInt aExtendedFlag);
- inline void ResetExtendedFlags();
-
- inline TCoeInputCapabilities& InputCapabilities();
-
- void SetWesternPredictive( const TBool aWesternPredictive );
- void SetWesternAutoComplete( const TBool aWesternAutoComplete );
- void SetJapanesePredictive(const TBool aJapanesePredictive);
- void SetQwertyMode(const TBool aQwertyMode); // Empty implementation. Qwerty mode is not supported.
-
- TBool WesternPredictive(TInt aMode = 0) const;
- TBool IsPredictive(TInt aMode = 0) const;
- TBool Japanese() const;
- TBool IsOnlyFullWidthCharacterPermitted() const;
- TBool IsOnlyHalfWidthCharacterPermitted() const;
- TBool IsHalfAndFullKatakanaPermitted() const;
- TBool IsHalfAndFullLatinPermitted() const;
- TBool IsHalfAndFullNumberPermitted() const;
- virtual TWidthChar CharacterWidth() const;
-
- virtual CPtiEngine* PtiEngine() const;
- virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility);
-
- TInt InputMode() const;
- TInt CangJieMode() const;
-
- TBool InputLanguageSupportsCaseChanges() const;
-
- /**
- * Queries supportting of KAknFepScrollLatinPredictive feature
- *
- * @since 2.6
- * @return ETrue if ScrollLatinPredictive was supported
- */
- TBool IsAbleScrollLatinPredictive() const;
-
- /**
- * Previous case is returned.
- *
- * @since 2.6
- * @return TInt EAknEditorTextCase or EAknEditorUpperCase or EAknEditorLowerCase
- * If case cannot be saved, 0 value is returned.
- */
- inline TInt CaseBefore() const;
-
- /**
- * @return true if current input language is one of Chinese input languages.
- */
- inline TBool IsChineseInputLanguage() const;
-
- /**
- * @return true if current input language is arabic input languages.
- */
- inline TBool IsArabicInputLanguage() const;
-
- /**
- * @return true if current input language is Korean input language.
- */
-
- inline TBool IsKoreanInputLanguage() const;
-
- /**
- * Check Qwerty keypad
- *
- * @since 3.0
- * @return ETrue is Qwerty
- */
- inline TBool IsQwerty() const;
-
-
- /**
- * Returns boolean value indicating whether hash key is in selection mode or
- * in traditional mode.
- *
- * @since 3.1
- * @return ETrue if hash key is in text selection mode.
- * EFalse otherwise.
- */
- TBool HashKeySelectionInUse() const;
-
- /**
- * Returns the UI interface implementation used in the current app.
- *
- * @since 3.2
- * @return The UI interface object used in the current app.
- */
- CAknFepUIInterface* UiInterface();
-
- /**
- * Returns boolean value indicating whether edit submenu functionality is in use.
- *
- * @since 3.1
- * @return ETrue if edit submenu functionality is in use.
- * EFalse otherwise.
- */
- TBool EditSubmenuInUse() const;
-
- /**
- * Set MultiTap Timer
- *
- * @since 3.0
- * @param aMultiTapTimer value of KAknFepMultiTapTimer setting
- */
- void SetMultiTapTimer(const TInt aMultiTapTimer);
-
- /**
- * Set Japanese Qwerty Flags
- *
- * @since 3.0
- * @param aJapaneseQwertyFlags value of KAknFepJapaneseSpecialCharFlag setting
- */
- void SetJapaneseQwertyFlags(const TInt aJapaneseQwertyFlags);
-
- /**
- * Calling this method will raise a flag which will cause predictive
- * word to be commited during next call to TryCloseUiL-method. This
- * is needed because of Japanese ReadingTextL.
- *
- * @since 3.1
- */
- void SetDelayedCommit();
-
- /**
- * from MAknFepManagerUIInterface
- * query whether the special char is valid in the current editor
- *
- * @param aChar Checking a chracter
- */
- TBool CharIsValidInEditor(TChar aChar);
-
- /**
- * from MAknFepManagerUIInterface
- * Returns the status of predictive input.
- *
- * @since 3.2
- * @return ETrue is available predictive input.
- */
- TBool IsAbleToChangePrediction() const;
-
- /**
- * Commits uncommitted text in the editing window. For secret text editors,
- * only inline editing flags are changed
- */
- void CommitInlineEditL();
-
- TBool GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID);
-
- inline TFepSymbolOfHardwareOne SymbolInfoOfHardKey1();
-public:
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /*
- Sets the keyboard layout.
- **/
- void SetKeyboardLayout(TPtiKeyboardType aType);
-#endif
- virtual TText PreviousChar( TBool aContextSensitive = EFalse );
- virtual TText NextChar();
- virtual TBool IsZWSCharacterPresent( TBool aLigaturePresent = EFalse );
- void RemoveZWSCharacterL( TBool aIsViramaInputted,
- TBool aIsInMultitappingHalant = EFalse,
- TBool aIsCharModifier = EFalse,
- TBool aIsLigaturePresent = EFalse );
- void NewCharacterSequenceL(const TDesC& aText, TIndicInputResponse aResponse);
- TBool IsValidInlineIndicCharacter(TChar aCharacter) const;
-#ifdef RD_HINDI_PHONETIC_INPUT
- TBool IsIndicPhoneticInputLanguage() const;
- TInt SetPhoneticIndicator(TLanguage aInputLanguage);
- void TryChangePhoneticModeL();
-#endif
- TDigitType LocalDigit();
-public:
- /**
- * Auto word Completion is Enabled
- *
- * @since 3.2
- */
- void SetAutoCompletionState(TInt aValue);
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- void RemoveSuggestedCompletionL();
-#endif //RD_PRED_AW_COMPLETION
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- TBool IsFnKeyMappedL(TPtiKeyboardType aKeyboardType = EPtiKeyboardNone);
- TBool IsFnKeyMapped();
- void SetFnKeyMappingState();
- TBool KeyMapsDifferentCharacterWithFn( TPtiKey aKey ) const;
-
- /**
- * Setter for the advanced predictive typing correction.
- * @param aLevel The level to be set.
- */
- void SetTypingCorrectionLevel(TInt aLevel);
-
- /**
- * Resetter for the advanced predictive Number Candidate setting.
- * @param aValue The value to be set.
- */
- void SetNumberCandidateState(TInt aValue);
-
- /**
- * Setes the primary candidate from GS to the local state
- */
- void SetPrimaryCandidate(TInt aValue);
-#endif
-
- void SetStopProcessFocus(TBool aStop, TBool aClose = ETrue);
-
- TBool StopProcessFocus();
-
- TBool CloseUiOnFocusChange();
-
-
-public:
- void HandleOwnedSimulateKeyL();
-
- TBool HandleCcpuModeKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode,
- TKeyResponse& aRetCode, TBool aLongPressFlag = EFalse);
-
- /**
- * Sets aFlag bitfield in iCcpuFlags
- */
- inline void SetCcpuFlag(TInt aFlag);
-
- /**
- * Clears aFlag bitfield in iCcpuFlags
- */
- inline void ClearCcpuFlag(TInt aFlag);
-
- /**
- * Clears all flags in iCcpuFlags
- */
- inline void ResetCcpuFlags();
-
- /**
- * Returns ETrue if the aFlag bitfield in iCcpuFlags is set, EFalse if it
- * is clear
- */
- inline TBool IsCcpuFlagSet(TInt aFlag) const;
- /**
- * Check if Auto word Completion is Enabled
- *
- * @since 3.2
- * @return ETrue if Auto word Completion is enabled
- */
- inline TBool IsAutoCompleteOn() const;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
-
-
- /**
- * @return TInt Typing correction level.
- */
- inline TInt AdvancedPredictiveTypingCorrectionLevel() const;
-
- /**
- * @return ETrue If the number candidate shown. EFalse otherwise.
- */
- inline TBool IsAdvancedPredictiveNumberCandidateShown() const;
-
- /**
- * Cuts off the automatically completed tail of the suggested word candidate.
- */
- virtual void RemoveSuggestedAdvanceCompletionL();
-
- /**
- * @return ETrue If the number candidate shown. EFalse otherwise.
- */
- inline TBool AdvancedPredictivePrimaryCandidate() const;
- TBool LongPressNumberEntryOnQwerty() const;
-
- // Predictive QWERTY (XT9) changs <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
- /**
- * Returns ETrue if Feature manager supports Japanese.
- */
- inline TBool IsFeatureSupportedJapanese() const;
-
- /**
- * Cancels shift key timer.
- */
- void CancelShiftKeyTimer();
-
- /**
- * Queries supportting of SecretText
- *
- * @since 2.6
- * @return ETrue if SecretText was supported
- */
- TBool IsSupportsSecretText() const;
-
- void SendEventsToPluginManL( TInt aEventType, TInt aEventData = 0 );
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- /**
- Sends the key event received to the Fn key handler and sets the Fn key state.
- */
- TKeyResponse HandleFnKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode );
-#endif
-
- MAknFepManagerInterface* FepUI() const;
-
- TTmDocPosSpec DocPos();
-
- void HandleCopyCutEventL(TInt aCommandId);
-
- void LaunchPenSupportMenuL();
-
-private: //navigation
- void FindStartOfWord(TInt& aAnchorPos) const;
- void FindEndOfWord(TInt& aCursorPos) const;
- TBool CursorInsideWord();
- void MoveCursorToStartOfWordL();
- void MoveCursorToEndOfWordL();
- TKeyResponse HandleNaviEventOutsideInlineEditL(TUint aCode, TKeyPressLength aLength);
- TKeyResponse HandleWesternPredictiveArrowKeyL(TInt aCode, TKeyPressLength aLength);
- TBool TryHandleTextSelectedNaviEventL(TInt aCode, TKeyResponse& aResponse);
- TBool TryHandleCommonArrowAndBackspaceFunctionalityL(TInt aCode, TKeyResponse& aResponse);
- void TransferFepStateToEditorL(TBool aFnLockSync=ETrue);
- inline MAknFepManagerInterface* InternalFepUI();
-
-
- void LaunchLanguagesPopupListL(TBool aLaunchedByTouchWin = EFalse);
- void LaunchRecognitionWithDictionaryPopupListL();
- TBool IsInputModeAvailable(TInt aMode) const;
- TInt NewInputModeAfterLanguageChange() const;
-
- /**
- * Launch User DB dialog
- * phrase creation
- * @since S60 5.0 S60_version
- * @param none
- * @return none
- */
- void LaunchUserDBDlgL();
-
- /**
- * Set current input language and the capabilities of the language to
- * the iLanguageCapabilities member variable.
- *
- * @param aInputLanguage New (current) input language.
- */
- void SetInputLanguageCapabilities(const TInt aInputLanguage);
-
- /**
- * Returns input language code that corresponds to UI language.
- *
- * @param aUiLanguage Ui language code.
- * @return Input language code that corresponds to the UI language code.
- */
- TInt SubstituteSublanguageId(const TInt aUiLanguage) const;
-
- CTextView* TextView() const;
- CTextLayout* TextLayout() const;
- CPlainText* PlainText() const;
-
- void DoWesternMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
- void DoChineseMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
- void DoJapaneseMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
- void DoChineseSubMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
-
- TBool IsRightToLeftParagraph(TTmDocPosSpec aPos) const;
- void FindAdjacentChunks(const TTmDocPosSpec& aPos,
- CTmTextLayout::TTmChunkDescription& aLeft,
- CTmTextLayout::TTmChunkDescription& aRight) const;
-
- TBool GetNextVisualRightCharacter( TInt& aPosition );
- TBool GetNextVisualLeftCharacter( TInt& aPosition );
- void FindVisualRightOfWord(TInt& aPosition);
- void FindVisualLeftOfWord(TInt& aPosition);
-
- //
- // Remaining methods here are candidates for turning into TextViewUtility methods. Some
- // have been made static already in anticipation of this.
- //
- /**
- * Obtains the visual beginning of the document. This may be the left or right the right
- * end of the first line, depending on first paragraph's direction. If the beginning of the document
- * is currently not formatted, then EFalse is returned
- *
- * @param aEndPos DocPosSpec is returned for the visual beginning of the document.
- * @return ETrue if the value is successfully calculated, that is the first line is formatted
- */
- TBool GetVisualDocStart( TTmDocPosSpec& aStartPos ) const;
-
- /**
- * Obtains the visual end of the document. This may be the left or right the right
- * end of the last line, depending on last paragraphs direction. If the end of the document
- * is currently not formatted, then EFalse is returned
- *
- * @param aEndPos DocPosSpec is returned for the visual end of the document.
- * @return ETrue if the value is successfully calculated, that is the last line is formatted
- */
- TBool GetVisualDocEnd( TTmDocPosSpec& aEndPos ) const;
-
- /**
- * Get the document position of the visual extrem of the line in which the passed position
- * is in.
- *
- * @param aPos A position within the line you are interested in
- * @param aToRight ETrue if you want the right hand end.
- * @param aExtreme Output value of the doc pos spec for the end of the line
- * @return ETrue if the line was formatted. If False, the value of eExtreme
- * cannot be trusted.
- */
- TBool GetAknFepLineExtreme( const TTmDocPosSpec& aPos, TBool aToRight,
- TTmDocPosSpec& aExtreme) const;
-
- /**
- * This is a very general routine for finding the visual extreme (according to
- * Avkon rules) of a piece of selected text.
- * - Text may in general have many varying directional sections.
- * - It may extend from one paragraph to another.
- * - If the paragraph directions are different the current input language is
- *
- * @param aSelection Logical range for which the visual extreme is required
- * @param aEvent The direction being navigated (Right/Left/Up/Down); eg. ELeftNaviEvent if moving to the left end
- * @param aLimitPos returned position in document
- * @param aEffectiveRightOrLeftEvent Pointer to TWesternNaviEvent, if passed from the client, will
- * return either ERightNaviEvent or ELeftNaviEvent
- */
- void GetAvkonDefinedVisualLimitsOfSelection(
- const TCursorSelection& aSelection,
- TWesternNaviEvent aEvent,
- TTmDocPosSpec& aLimitPos,
- TWesternNaviEvent* aEffectiveRightOrLeftEvent) const;
-
- /**
- * Returns the position at the visual left extreme end for a logical range
- *
- * @param aStartPos Starting position for the search
- * @param aMinPos minimum logical position of the logical range
- * @param aMaxPos maximum logical position of the logical range
- * @return TTmDocPosSpec for the visual left end
- */
- TTmDocPosSpec LeftVisualExtremePos( const TTmDocPosSpec& aStartPos,
- TInt aMinPos, TInt aMaxPos ) const;
-
- /**
- * Returns the position at the visual right extreme end for a logical range. The range may consist
- * of many directional chunks. They are iterated through until the visual end is found.
- *
- * @param aStartPos Starting position for the search
- * @param aMinPos minimum logical position of the logical range
- * @param aMaxPos maximum logical position of the logical range
- * @return TTmDocPosSpec for the visual right end
- */
- TTmDocPosSpec RightVisualExtremePos( const TTmDocPosSpec& aStartPos,
- TInt aMinPos, TInt aMaxPos ) const;
-
- /**
- * Gets the visual left-most position in a chunk within a logical range
- */
- TBool LeftEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk,
- TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const;
-
- /**
- * Gets the visual right-most position in a chunk within a logical range
- */
- TBool RightEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk,
- TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const;
-
- /**
- * Adjust the passed docpos to reflect the avkon principal that after a left navigation
- * the cursor should adhere to the bordering directional run on the left of that point.
- * This may mean that the logical position and leading/trailing feature of aPos are adjusted
- * This method does not perform the navigation, but may be called after a navigation.
- */
- void AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( TTmDocPosSpec& aPos,
- TWesternNaviEvent aEvent ) const;
-
- /**
- * Do not move the visual position, but ensure that the docpos passed is adhering to the left
- * side of the right chunk passed in.
- */
- static void AttachToRightChunk( TTmDocPosSpec& aPos,
- const CTmTextLayout::TTmChunkDescription& aRightChunk );
-
- /**
- * Do not move the visual position, but ensure that the docpos passed is adhering to the
- * right side of the left chunk passed in.
- */
- static void AttachToLeftChunk( TTmDocPosSpec& aPos,
- const CTmTextLayout::TTmChunkDescription& aRightChunk );
-
- /**
- * Modify the cursor position after a jump to the start or end of a document.
- * The current input direction is used to modify the position, so as to avoid attaching the
- * new cursor position to a block of the opposite input directionality
- *
- * @param aPos target position of the jump; may be modified by the routine.
- * @param aEvent navigation event that caused the loop.
- * @param aLoopToTop ETrue if the looping is from bottom to top; EFalse if from top to bottom
- *
- */
- void AdjustPosSpecForInputLanguageAfterDocumentLoop( TTmDocPosSpec& aPos,
- TWesternNaviEvent aEvent,
- TBool aLoopToTop ) const;
-
- /**
- * Tests a chunk for validity.
- *
- * @return ETrue if the chunk is valid - is a real chunk.
- */
- static TBool ChunkIsValid( const CTmTextLayout::TTmChunkDescription& aChunk );
-
- /**
- * Finds the current input direction. This is determined as best as it can using
- * - iT9Interface as the preferred source of information
- * if that is not active/defined then
- * - shared data (via AknTextUtils) if that fails
- * - localLanguage overrides may be in place
- *
- * - when fep is in numeric mode it returns LTR
- * - if FEP is in an irelevant mode, then LTR is returned
- *
- * Note that secret alpha modes return LTR always, as entry is alwas LTR for these
- *
- * @return TDirectionality::ERightToLeft when in an alpha mode and direction is RTL;
- * Otherwise returns ELeftToRight
- */
- TBidiText::TDirectionality CurrentInputDirectionality() const;
-
- /**
- * Access the local language if defined
- *
- * @param aLanguage - returns the Symbian OS language code for the local language
- * @return EFalse iff no local language is in force
- */
- TBool GetLocalLanguage( TLanguage& aLanguage ) const;
-
- /**
- * Looks through the FEP aware editor's text starting at character aPos, looking for a
- * strongly directional character. Direction of search can be set.
- * Search is carried out until a strong character is found or the end (or beginning)
- * of the editor text has been reached.
- * The value returned in aIsRightToLeft should not be used unless the method returns ETrue
- * @param aPos First character to look at
- * @param aForward If EFalse, then search is backward (decreasing index) in logical buffer
- * @param aIsRightToLeft Set to ETrue on return if first strong character found is RTL
- *
- * @return EFalse if no strong character was found.
- */
- TBool GetExposedDirectionOfText( TInt aPos, TBool aForward, TBool& aIsRightToLeft ) const;
-
- /**
- * Looks through the passed descriptor, looking for a strongly directional character.
- * Direction of search can be set. Search starts at the begining if searching forward;
- * starts at the end if searching backwards.
- *
- * Search is carried out until a strong character is found or the end (or beginning)
- * of the descriptor has been reached.
- * The value returned in aIsRightToLeft should not be used unless the method returns ETrue
- *
- * @param aText Descriptor to search.
- * @param aForward If EFalse, then search is backward (decreasing index) in logical buffer
- * @param aIsRightToLeft Set to ETrue on return if first strong character found is RTL
- *
- * @return EFalse if no strong character was found.
- */
- TBool GetExposedDirectionOfTextInDescriptor( const TDesC& aText, TBool aForward,
- TBool& aIsRightToLeft ) const;
-
- /**
- * Access character in editor text at index aPos.
- *
- * @param aPos Index of character to access. Must be a valid index or panic may ensue.
- * @return charater at index aPos; returns TChar(0) if cannot get at the text.
- */
- TChar CharAt( TInt aPos ) const;
-
- /**
- * Navigate off of selected text using an Up/Down/Right/Left navigation event
- *
- * The code takes account of the paragraph directionality that the passed selection is
- * found in.
- *
- * The new cursor position is resolved for ambiguity and then set using SetCursorPosition, and
- * so it has the same side-effects:
- * iUncommittedText is set to the zero-width "cursor" state with the new cursor position
- * iUncommittedText is set into the FepAwareTextEditor state
- * iCaseManager is updated with a ENullNaviEvent
- * the doc pos is set in TextView object if present
- *
- * @param aSelection currently selected text
- * @param aNaviEvent navigation event. One of ERight/Left/Down/UpNaviEvent. Others are ignored
- * @param aPos Ouput, new position of the cursor
- * @return EKeyWasNotConsumed if the key is not consumed
- */
- TKeyResponse NavigateFromSelectionL(
- const TCursorSelection& aSelection,
- TWesternNaviEvent aNaviEvent,
- TTmDocPosSpec& aPos );
-
-
- /**
- * This method is the standard way for the FEP to move the cursor when there is
- * no inline edit or selection.
- * Side effects:
- * iUncommittedText is set to the zero-width "cursor" state with the passed position
- * iUncommittedText is set into the FepAwareTextEditor state
- * iCaseManager is updated with a ENullNaviEvent
- * the doc post is set in TextView object if present
- *
- * @param aNewCursorPos - defines the position to set the cursor at, including leading/trailing
- * @param aDragSelectOn - iff EFalse, do not keep old anchor position (that is, cancel any selection)
- * properties.
- */
- void SetCursorPositionL( const TTmDocPosSpec& aNewCursorPos, TBool aDragSelectOn = EFalse );
-
- /**
- * Returns ETrue if the passed position is formatted and is in the first line
- */
- TBool InFirstLineAndFormatted( const TTmDocPosSpec& aPos ) const;
-
- /**
- * Returns ETrue if the passed position is formatted and is in the last line
- */
- TBool InLastLineAndFormatted( const TTmDocPosSpec& aPos ) const;
-
- /**
- * Returns ETrue if the passed position is in the
- * @param aCheckFirstLine if ETrue, check for first line; else check last line
- * @return ETrue if the passed position is formatted and is first (or last - depending on switch)
- */
- TBool DocPosInFirstOrLastLineAndFormatted( const TTmDocPosSpec& aPos,
- TBool aCheckFirstLine ) const;
-
- /**
- * Method to determine if the passed position is equivalent visually to the "canonical"
- * value determined by the limit algorithms. The methods allow two visually equivalent,
- * but logically different TTmDocPosSpecs to be be checked for equivalence.
- * @param aCurrentPos Position in document as returned by GetDocPos
- * @param aLimitPos Visual start of document as returned by GetVisualDocStart
- * @returns ETrue if the positions are visully equivalent
- */
- TBool AtVisualStart( const TTmDocPosSpec& aCurrentPos, const TTmDocPosSpec& aLimitPos ) const;
-
- /**
- * Method to determine if the passed position is equivalent visually to the "canonical"
- * value determined by the limit algorithms. The methods allow two visually equivalent,
- * but logically different TTmDocPosSpecs to be be checked for equivalence.
- * @param aCurrentPos Position in document as returned by GetDocPos
- * @param aLimitPos The visual end of document as returned by GetVisualDocStart
- * @returns ETrue if the positions are visully equivalent
- */
- TBool AtVisualEnd( const TTmDocPosSpec& aCurrentPos, const TTmDocPosSpec& aLimitPos,
- TInt aDocLength ) const;
-
- void SetCursorType(TBool aIsLeftToRight);
- TBool DeviceSupportsRTLLanguageL();
-
- /**
- * Performs calculations of digit mode;
- * used in UpdateLocalDigitMode() and in UpdateNumericEditorDigitType()
- */
- void CalculateEditorDigitType(TDigitType& aDestination);
-
- void UpdateNumericEditorDigitType();
-
- /**
- * Updates FEP digit mode from global locale settings.
- */
- void UpdateLocalDigitMode();
-
- /**
- * Checks to see if the cursor position is at an ambiguous point (one where the text blocks
- * on either side are of different directionality) and potentially moves the cursor from
- * one block to the other, depending on the key identity.
- *
- * To be called before key event is processed by the FEP in the usual way.
- * If the key is acted upon to move the cursor, then the event is "eaten" and it is not
- * to be passed on for processing.
- *
- * @param aCode Key code from standard TKeyEvent key event structure
- * @return EKeyWasConsumed if a cursor adjustement was made;
- * else EKeyWasNotConsumed
- */
- // TKeyResponse AttemptCursorFlipAtAmbiguousPointL( const TKeyEvent& aKeyEvent, TEventCode aEventCode );
- TKeyResponse AttemptCursorFlipAtAmbiguousPointL( const TUint aCode );
-
- /**
- * Call back method for the "Post Event Check" mechanism. Called from a CIdle after
- * any event that might required a check of the new cursor position or other invariant
- */
- static TInt PostEventCheckCallback(TAny* aObj);
-
- /**
- * Access method for whether bidirectional cursor is to be used
- *
- * @return EFalse iff the bidi cursor is not to be used
- */
- TBool BidiCursorRequired() const;
-
- /**
- * Since FEP does not complete the navigation of an event (editor and form do that), FEP
- * has to ensure after all navigation is finished if the cursor is displayed correctly.
- *
- * <p> This method, called from the post event callback, implements the action to check the
- * current cursor directionality against the text directionality at the cursor position,
- * and alters the cursor appearance as required.
- */
- void DoCursorDirectionCheckL();
-
- /**
- * Check the directionality of text in the vicinity of the current document position
- * and ensure that the cursor is indicated appropriately.
- *
- * This routine has no side-effect on the cursor position. It merely changes the
- * appearance of the cursor.
- */
- void AdjustCursorTypeForCurrentPosition();
-
- /**
- * Kicks off the post event check idle event
- *
- * @param aCode Key event code
- */
- void SchedulePostEventCheckL(TUint aCode);
-
- /**
- * Check the directionality of text in the vicinity of the supplied document position
- * and ensure that the cursor is indicated appropriately.
- *
- * This routine has no side-effect on the cursor position. It merely changes the
- * appearance of the cursor.
- *
- * @param aDocPos document position that is to be analysed and acted on
- */
- void AdjustCursorTypeForPosition( const TTmDocPosSpec& aDocPos );
-
- /**
- * "Hook" method for managing a bidi cursor according to the text directionality at the cursor
- * Only one of this method or SetCursorTypeForInputDirection will be in operation at any
- * time.
- *
- * @param aLeftToRight Supply ETrue iff cursor required is LTR cursor
- */
- void SetCursorTypeForTextDirection( TBool aLeftToRight );
-
- /**
- * "Hook" method for managing a bidi cursor according to the current input direction
- * Only one of this method or SetCursorTypeForTextDirection will be in operation at any
- * time.
- *
- * @param aLeftToRight Supply ETrue iff cursor required is LTR cursor
- */
- void SetCursorTypeForInputDirection( TBool aLeftToRight );
-
- /**
- * Routine to analyse the directionalities surrounding the supplied document position
- * and to return the results.
- *
- * @param aDocPos document position that is to be analysed
- * @return Structure containing the results of the analysis
- */
- TTextDirectionalInfo LocalTextDirectionalStatus( const TTmDocPosSpec& aDocPos ) const;
-
-
- /**
- *
- * This method is used to add directional markers to protect neutrals that may be
- * exposed to the opposite directional formatting to their situation before the deletion
- *
- * Redecoration is carried out if a neutral is exposed by the deletion to a directionality
- * different to that which is was already marked.
- *
- * An inline edit may be stated and then committed.
- *
- * iUncommittedText is required to be set to the cursor position that existed after
- * the deletion.
- *
- * iUncommittedText will be updated to the new cursor position.
- *
- * @param aTextThatWasDeleted Informs the method of what text has just been removed
- */
- void RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted );
-
-
- TBool EditorSupportsNeutralProtection();
-
-
- /**
- * Wrapper function for the MCoeFepAwareTextEditor commit method.
- * This method terminates the inline by accepting the current inline edit into the buffer.
- *
- * At entry, iUncommittedText is required to have the span of the current inline edit.
- * iAnchorPos should be the index of the first character in the inline edit.
- * iCursorPos should be the index of the next character after the inline edit.
- *
- * At exit, iUncommittedText has 0-length and represents the current cursor position.
- * That is, iAnchorPos = iCursorPos = index of the character next after the cursor
- *
- * These indices may be more easily though of as "gap indices" where gap 0 precedes
- * character 0, gap 1 follows character 0, gap 2 follows charcacter 1, etc.. until gap
- * N follows character (N-1).
- *
- * This routine does not attempt to consolidate any directional markers that may be
- * extraneous in the new buffer. It is therefore used when it is important to know what
- * span after the commit, e.g. to make it reversible.
- *
- * @param aFepAwareTextEditor Editor for which there is a current inline edit.
- * @param aCursorVisibility EFalse if the cursor is to be suppressed during the commit.
- */
- void CommitInlineEditWithoutResolutionL(MCoeFepAwareTextEditor& aFepAwareTextEditor,
- TBool aCursorVisibility, TBool aClearPti = ETrue);
-
-
- TKeyResponse HandlePredictiveNaviEventOutsideInlineEditL(TUint aCode, TKeyPressLength aLength);
-
- static TInt DoSimulateKey(TAny* aThisPtr);
-
- /**
- * This method is that the label of CBA is updated by aTextResId.
- * @param aPosition CBA position, either ELeftSoftkeyIndex or ERightSoftkeyIndex
- * @param aCommandId command id for softkey
- * @param aTextResId resource id to set string on label.
- * @return TBool The return value is ETrue in case it is necessary to update CBA.
- */
- TBool UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId);
-
- /**
- * Launches special character table (SCT) and pictograph character table (PCT).
- *
- * @param aResourceId Resource of SCT content. NULL if the default SCT content
- * is used. At the moment only Thai language sets non-default
- * content.
- * @param aShowSctParam Set the show mode for sct. EShowSctFirst or EShowPctFirst or EShowSmileyFirst
- */
- void DoLaunchSctAndPctL(TInt aResourceId, TShowSctMode aShowSctMode);
-
- /**
- * Update CangJie mode
- *
- * @param aNewMode New CangJie mode
- * @since 3.0
- */
- void UpdateCangJieState(TInt aNewMode);
-
- /**
- * Launch CangJie setting dialog
- *
- * @since 3.0
- * @return Selected CangJie level or KErrGeneral if user cancel the selection
- */
- TInt LaunchCangJieOptionDlgL();
-
-
- void AddEditSubmenuL(CAknFepUiInterfaceMenuPane* aMenuPane);
- void DisableEditSubmenuItems(CAknFepUiInterfaceMenuPane* aMenuPane);
- void StartCcpuModeL(TBool aCopyMode);
-
- /**
- * Handle the Chr Key Monitor
- * for Japanese variant only.
- *
- * @since 3.0
- */
- void HandleChrKeyMonitorL();
-
- TBool IsCursorAtEndOfWord();
-
- /* This method should be called after launching any dialog by FEP */
- void PrepareFepAfterDialogExitL(TUid aFepUid);
- /* This method should be called before launching any fep aware dialog by FEP */
- void PrepareFepForFepAwareDialogLaunch();
- /* This method should be called after launching any fep aware dialog by FEP */
- void PrepareFepAfterFepAwareDialogExitL(TUid aFepUid);
-
-public:
-
- /**
- * Handle layout change.
- * When screen layout change, Key Catcher calls this method
- *
- */
- void HandleResourceChange(TInt aType);
-
- TBool IsHybridAplhaEditor() const;
- TBool IsHybridAlphaModeChangedtoAplhanumeric() const;
-
- TBool QueryPredictiveState(const TAknEditingState aState);
- TInt EvaluateState(TAknEditingState aState);
- TBool QueryPredictiveAutoCompleteState(TAknEditingState aState);
- CAknExtendedInputCapabilities::TEditorType EditorType() const;
- TUint MIDPConstraint() const;
- /**
- * Tells if the current editor is phone number editor
- * @return ETrue if the current editor is phone number editor
- */
- TBool IsPhoneNumberEditor() const;
-
-
-#ifdef RD_SCALABLE_UI_V2
-
- /**
- * Pen input support functions
- */
-public:
-
- void HandlePointerEventL(const TPointerEvent &aPointerEvent);
-
-
- /**
- * Handle arrow key event when some chars have been selected
- *
- * @since S60 v3.2
- * @param aKeyEvent
- * @param aEventCode
- * @param aRetCode
- */
- TBool HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode,
- TKeyResponse& aRetCode);
-
- /**
- * From CAknExtendedInputCapabilities::MAknEventObserver
- * Handle an event
- *
- * @since S60 v3.2
- * @param aEvent An event, see TInputCapabilitiesEvent
- * @param aParams Event dependent parameters
- */
- void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams );
-
- void SubmitInlineTextL( const TDesC& aData );
-
- inline TInt PermittedModes() const;
-
- inline void SetNotifyPlugin( TBool aNotifyFlag );
-
- inline void RemeberEditorState();
-
- inline TBool IsMfneEditor() const;
-
- inline TBool IsFindPaneEditor() const;
- inline TBool IsSupportedAdaptiveSearch() const;
- //for japanese
- void NotifyJapaneseSetting();
-
-
- void ProcessEditorMenuCommand(TInt aCommand);
-
- TInt GetPermittedEditorMenu(TBool aOnlyCount = EFalse);
-
- void UpdateTouchCaseMode();
-
- void DimInputmodeTouchMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane);
-
- inline TLanguageCapabilities InputLanguageCapabilities() const;
-
- inline TAknFepManagerState& FepManState();
-
- inline TBool IsSupportNativeNumber() const;
-
- void NeedDisableKeySound(const TKeyEvent& aKeyEvent, TEventCode aEventCode);
-
- inline void SetGainForeground( TBool aGainForeground );
- void HandleEndKeyL();
- inline void SetCancelPopupInQwerty( TBool aCancelPopupInQwerty );
-
- /**
- * Return the chinese input mode used last time
- */
- inline TInt LastChineseInputMode() const;
-
-private:
-
- /**
- * Checks if the current editor is fully FEP aware.
- *
- * @since 3.2
- *
- * @return ETrue if editor if fully FEP aware.
- */
- TBool FullyFepAwareTextEditor() const;
-
- /**
- * Checks if the current editor is partially FEP aware.
- *
- * @since 3.2
- *
- * @param aAtLeast if ETrue then ETrue is returned for also fully FEP aware editors.
- *
- * @return ETrue if editor is partially FEP aware.
- */
- TBool SemiFepAwareTextEditor( TBool aAtLeast = EFalse ) const;
-
- void DoWesternTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
- void DoChineseTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane);
-
- /**
- * Checks if the current input mode belongs to chinese input modes.
- *
- * @param aMode The current input mode.
- *
- * @return ETrue if the current input mode belongs to chinese input mode..
- */
- TBool IsChineseInputMode( TInt aMode );
-
-#endif //RD_SCALABLE_UI_V2
-
- /**
- * Returns the type of the focused editor.
- *
- * @since 3.2
- *
- * @return Editor type.
- */
- //CAknExtendedInputCapabilities::TEditorType EditorType() const;
-
- /**
- * Get the MAknFepDocumentNavigation object
- *
- * @since 3.2
- * @return pointer to MAknFepDocumentNavigation accessed through
- * the input capabilites object provider.
- */
- MAknFepDocumentNavigation* AknFepDocumentNavigation() const;
-
- TInt GetPermittedEditorMenuL(TBool aOnlyCount = EFalse);
-
-private:// from MPeninputServerEventHandler
-
- void UpdateLatinIndicator( TAknEditingState& aNewState );
- void UpdateNumberIndicator( TAknEditingState& aNewState );
- void UpdateHindiIndicator( TAknEditingState& aNewState );
- void HandleCopyCutStateL();
- /**
- * Returns ETrue if hash key selection is on and hash key mode selection should
- * be blocked.
- *
- * @since 3.1
- */
- TBool HashKeyModeChangeBlockedInSearchField() const;
- /**
- * Set editor cursor selection according plugin UI
- * cursor state
- *
- * @since 3.2
- * @param aCurSel Cursor position.
- * @param aSyncCursor ETrue if plug in UI need update cursor, EFalse otherwise
- * @return None
- */
- void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor);
-
- /**
- * An internal helper method for matches popup list.
- *
- * The index of currently selected prediction candidate.
- *
- * @since S60 3.2
- */
- TInt ResolveCurrentCandidateListIndex(CDesCArrayFlat* aCandList);
-
- /**
- * Removes underlining from predictive word and moves cursor the end of the word.
- *
- * @since 3.2
- * @param aData Key data
- * @return None
- */
- void DeactivatePredicitveWordAndMoveCursorL();
-
- /**
- * Returns the Ccpu status of given editor state as a flag combination.
- *
- * @since 3.2
- * @param aEdwinState
- * @return editor ccpu status
- */
- TInt EditorCcpuStatus(CAknEdwinState* aEdwinState);
-
- /**
- * Cancels editing options copy / paste mode initialted from editing options -submenu.
- *
- * @since 3.2
- */
- void CancelCcpuMode();
-
-#ifdef RD_SCALABLE_UI_V2
- /**
- * Launches stylus Ccpu-menu
- *
- * @since 5.0
- * @param aClickPoint Point where stylus was clicked.
- */
- void LaunchStylusCcpuMenuL(TPoint &aClickPoint);
-
- void DynInitTouchMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane);
-#endif
-
- /**
- * Has Japanese prediction input mode in PtiEngine
- */
- TBool HasJapanesePredictionInputMode() const;
-
-
- void InitPreviewMenuPane(CAknFepUiInterfaceMenuPane* aMenuPane);
-
-public:
- void StopDisplayingMenuBar();
-
-private:
- void ConvertCharToKey(TChar aIn, TUint16& aKey) const;
-
-private:
- // Data owned by this class
- CAknFepKeyCatcherInterface* iKeyCatcher;
- CAknFepIndicator* iIndicator;
- CPeriodic* iShiftKeypressMonitor;
- CAknFepLanguageManager* iLangMan; // own
- MAknFepManagerInterface* iCurrentFepUI; // not own
- CAknFepCaseManager* iCaseMan;
- CAknFepInlineTextDecorator* iInlineTextDecorator;
-
- CAknFepHashKeyManager* iHashKeyMan;
- CPeriodic* iConcatenationTimer;
- //fep delay the resource changed message for getting the updated coordinate from editor.
- CAsyncCallBack iAsyncResouceChanged;
-
- // shared data support
- CAknFepSharedDataInterface* iSharedDataInterface;
-
- MAknEditingStateIndicator* iPreviousIndicator;
- MAknEditingStateIndicator* iEditIndicatorAtLastUpdate;
- TAknEditingState iPreviousEditingState;
-
- TLanguage iUiLanguage; // Symbian language code for UI language.
- TLanguageCapabilities iLanguageCapabilities; // Input language and capabilities of the language.
- TUint iFlags;
- TUint iExtendedFlags;
- TAknFepManagerState iFepManState;
- TCoeInputCapabilities iInputCapabilities;
- TInt iPermittedInputModes;
- TInt iMode;
- TInt iModeBefore;
- TInt iCaseBefore;
- TInt iResId;
- TInt iVariantPermittedModes;
- TInt iSpaceCharacterCode; // adding for japanese
- TInt iFullWidthSpaceCharacterCode; // adding for japanese
- TAknEditorNumericKeymap iAknEditorNumericKeymap;
- TInt iAknEditorFlags;
- TCursorSelection iUncommittedText;
- RArray<TInt> iHashKeyLoop;
- TBool iWesternPredictive;
- TKeyPressLength iKeyRepeat;
- TBool iIsAutoCompleteOn; // for Auto Word Completion
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- TInt iKeyBackSpaceHit;
- TInt iTypingCorrectionLevel; // for typing correction level
- TBool iIsNumberCandidateShown; // for number candidates
- TBool iPrimaryCandidate; // for primary candidate
- TBool iKeyPressedDuringShift;
- TPtiKeyboardType iKeyboardType; // for checking the keyboard layout
- TBool iSupressCursorMoveToEndChrKeyPressed; // For supressing cursor movement when SCT launched
-#endif //RD_INTELLIGENT_TEXT_INPUT
- TBool iJapanesePredictive;
- TBool iDeviceSupportsRtlLanguage; // Could be removed
- CIdle* iPostEventCheck; // Owned
-
- TWidthChar iCharWidth; // adding for japanese
- CPtiEngine* iPtiEngine; // adding for japanese
-
- TUint iSimulateKey;
- CApaDocument* iEmbedded; // User Dictionary
- CAknNullService* iNullService; // User Dictionary
- CAsyncCallBack iAsyncOwnSimulateKey;
- TInt iFreeSpaceOfEditor;
- TBool iQwertyInputMode; // Not used. The value is always EFalse.
- TBool iLongThai0Key;
- TBool iFepFullyConstructed;
- CAknEdwinState* iRememberEditorState; // For "editing options" submenu
- TInt iRememberLength; // For "editing options" submenu.
- TInt iEditorCcpuStatus; // For "editing options" submenu.
- TInt iCcpuMode; // For "editing options" submenu
- TInt iMultiTapTimer; // for Japanese only: store MultiTap Timer
- CAknFepUiInterfaceMenuBar* iEditMenuBar; // Remember menu bar instance for closing.
- HBufC* iSctEditChars; // Buffer for characters selected in the edit menu
- TPtr iEditCharsPtr; // Pointer to the buffer that holds all the selected characters.
- TInt iStarScan; // Remember scan code for star key.
- TInt iJapaneseQwertyFlags; // for Japanese only: store Japanese Qwerty Flags
-
- CPeriodic* iChrKeypressMonitor; // for Japanese only: Chr key monitor timer
- TBool iLastKeyPressedWasHashKey;
- TBool iStopProcessFocus;
- TBool iClosePeninputUi;
- /**
- * User DB dialog
- * Own, but doesn't need delete by myself
- */
- CAknFepUserdbDlg* iUserdbdlg;
-
- CAknNavigationDecorator* iTapGroup;
-
- TInt iEditorCommandList[30];
-
- TBool iComposChrFlag;
- //User db view(phrase creation)
- TInt iIsUserdbdlgActive;
- /**
- * * Used for handle key event for zhuyin method.(phrase creation)
- *
- */
- CZhuyinKeyHandler* iZhuyinKeyHandler;
- CAknFepZhuyinAnalyser* iZhuyinAnalyser;
- CZhuyinAnalyserDbFeed* iZhuyinAnalyserDb;
-
-#ifdef RD_SCALABLE_UI_V2
-
- /**
- * Used by itut spell mode, initial text in spell mode
- */
- HBufC* iSpellInitText;
-
- /**
- * Used by itut spell mode, initial text selection in spell mode,
- * whose position is relative to whole text in original editor
- */
- TCursorSelection iSpellInitCurSel;
-
- CAknFepPluginManager* iFepPluginManager;
-
- /**
- * HKB predictive state before starting plugin IME
- */
- TBool iT9UsedBeforePluginInput;
-
-
- /**
- * Stylus ccpu menu
- */
- CAknFepUiInterfaceStylusPopUpMenu* iStylusCcpuMenu;
-
- /**
- * Last known clik point, needed for stylus ccpu menu launch.
- */
- TPoint iClickPoint;
-
- TBool iGainForeground;
-
- TBool iLoseForeAndGainFocus;
-
- TBool iNotifyPlugin;
-
- TBool iCancelPopupInQwerty;
-
- TBool iStarKeyPressed;
-
- TInt iLastChineseInputMode;
-
- // Indicate Stroke is used in QWERTY, when default input mode is Cangjie
- TBool iStrokeUsedInQWERTY;
- // Save that which editor use stroke
- CAknEdwinState* iEditorStateStrokeUsed;
-
- // Indicated focus change has done in closing SCT, the call back from framework
- // will not lead to another focus change.
- TBool iDisalbleFocusChangeForSCT;
-#endif //RD_SCALABLE_UI_V2
-
- /**
- * Long press clear key after close UI;
- */
- TBool iLongClearAfterCloseUI;
-
- TBool iFeatureSupportedJapanese; // Save the value of KFeatureIdJapanese
-
- // stores a reference to previous editor state for pointer comparision
- CAknEdwinState* iPreviousEditorState;
-
- CAknFepUIInterface* iUiInterface;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- CAknFepFnKeyManager *iFnKeyManager; // Owned
- TBool iIsFnKeyMapped;
-#ifdef __REVERSE_FN_KEY_SUPPORTED
- TBool iIsReverseFnkeyInput;
-#endif //__REVERSE_FN_KEY_SUPPORTED
-
- // Predictive QWERTY (XT9) changes ---->
- //! The exact word tooptip shown above the inline editor when the exact word differs from the best guess candidate
- // CAknPreviewPopUpController* iExactWordPopup;
-
- //! The contents of the exact word popup.
- MAknFepUiWordPopupContent* iExactWordPopupContent;
- MAknFepCandidatePopup* iCandidatePopup;
- TBool iSListLaunchedFromMenu;
- TInt iAutoCmptnTailLength;
- TInt iIsLastResourceEditMenu;
- // Predictive QWERTY (XT9) changes <----
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
- CAknFepUiInterfaceMenuBar* iOptionsMenuBar;
-#endif
-#endif //RD_INTELLIGENT_TEXT_INPUT
- //phrase creation
- TInt iPhraseCreation;
- TInt iPinyinPhraseCreation;
- TInt iKeyStar;
- TInt iEntryPhrase;
- TBool iPenSupportMenu;
- TFepSymbolOfHardwareOne iSymbolData;
-
- /**
- * Flag for wether input mode is changed by shift+space
- */
- TBool iShiftAndSpace;
- CAknFepThaiSCTSelector* iAknFepThaiSCTSelector;
-
-public:
-
- //the follow 8 functions for phrase creation
- /**
- * Set the state to pinyin phrase creation
- */
- void PinyinPhraseCreation( TBool aPinyinPhraseCreation );
-
- /**
- * Is the state is in pinyin phrase creation
- *
- * @return if not enabled, return EFalse
- */
- TBool IsPinyinPhraseCreation() const;
-
- /**
- * Set the state to phrase creation
- */
- void PhraseCreation( TBool aPhraseCreation );
-
- /**
- * Is the state is in phrase creation
- *
- * @return if not enabled, return EFalse
- */
- TBool IsPhraseCreation() const;
-
- /**
- * Set the state to input phrase
- */
- void EntryPhrase( TBool aEntryPhrase );
-
- /**
- * Is the state is in input phrase
- *
- * @return if not enabled, return EFalse
- */
- TBool IsEntryPhrase() const;
-
- /**
- * Set the state to enable star key
- */
- void EnableKeyStar( TBool aEnable );
-
- /**
- * Is the state is enable star key
- *
- * @return if not enabled, return EFalse
- */
- TBool IsEnableKeyStar() const;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-public:
- /**
- * multitaps thru the chars in the SCT.
- * @param aCallback, the callback when the timer expires
- */
- void MultitapThroughSCTCharL(TCallBack aCallBack);
-private:
- TBool NumericResourceMultiTapTimerTimeoutL();
-
- /**
- * CAknFepManager::FindAndRemoveInputOptionsMenuItemL
- * Helper method to check if the "Input options" menu item exists and
- * if so, remove it from the menu pane.
- * Params -
- * aMenuPane : pointer to the menu pane to be checked for the resource id
- */
- void FindAndRemoveInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane );
-
- /**
- * CAknFepManager::FindAndRemoveEditSubMenuItemL
- * Helper method to check if the "Edit Text" menu item exists and
- * if so, remove it from the menu pane.
- * Params -
- * aMenuPane : pointer to the menu pane to be checked for the resource id
- */
- void FindAndRemoveEditSubMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane );
-
- /**
- * CAknFepManager::AddInputOptionsMenuItemL
- * Helper method to add the "Input options" menu item in appropriate location
- * Appropriate location is :
- * - if Avkon Help command exists, then immediately above it
- * - else if Avkon Exit command exists, then immediately above it
- * - else if there are 3 or more items in the Options menu, then 3rd from last
- * - else it is the last item.
- * Params -
- * aMenuPane : pointer to the menu pane to be checked for the resource id
- */
- void AddInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane );
-
-private:
- CChrMultiTapTimer* iNumericResourceTimer;
- HBufC* iResourceString;
- TInt iChrCharIndex;
-#ifdef __HALF_QWERTY_KEYPAD
- TKeyEvent iHalfQwertyLastKeyEvent;
-// this variable is set whenever a long key press of chr happens
- TBool iChrLongKeyPress;
- TBool iFnCharInsertedForShift;
-#endif //__HALF_QWERTY_KEYPAD
- TInt iNumericResourceId;
-#endif //RD_INTELLIGENT_TEXT_INPUT
- TBool iHybridAplphaChangedToAlphanumeric;
- CAknEdwinState* iLastFocusedEditor;
- CAknEdwinState* iFepAwareDialogParentEditor;
- /**
- * Indicate that the focused control is destroyed.
- */
- TBool iFocusedItemDestroy;
- };
-
-/**
- * Sets aFlag bitfield in iFlags
- */
-inline void CAknFepManager::SetFlag(TInt aFlag)
- {
- iFlags|=aFlag;
- }
-
-/**
- * Clears aFlag bitfield in iFlags
- */
-inline void CAknFepManager::ClearFlag(TInt aFlag)
- {
- iFlags&=~aFlag;
- }
-
-/**
- * Clears all flags down
- */
-inline void CAknFepManager::ResetFlags()
- {
- iFlags=0;
- }
-
-/**
- * Returns ETrue if the aFlag bitfield in iFlags is set, EFalse if it
- * is clear
- */
-inline TBool CAknFepManager::IsFlagSet(TInt aFlag) const
- {
- return iFlags&aFlag;
- }
-
-/**
- * Sets aExtendedFlag bitfield in iExtendedFlags
- */
-inline void CAknFepManager::SetExtendedFlag(TInt aExtendedFlag)
- {
- iExtendedFlags|=aExtendedFlag;
- }
-
-/**
- * Clears aExtendedFlag bitfield in iExtendedFlags
- */
-inline void CAknFepManager::ClearExtendedFlag(TInt aExtendedFlag)
- {
- iExtendedFlags&=~aExtendedFlag;
- }
-
-/**
- * Clears all ExtendedFlags down
- */
-inline void CAknFepManager::ResetExtendedFlags()
- {
- iExtendedFlags=0;
- }
-
-/**
- * Returns ETrue if the aExtendedFlag bitfield in iExtendedFlags is set, EFalse if it
- * is clear
- */
-inline TBool CAknFepManager::IsExtendedFlagSet(TInt aExtendedFlag) const
- {
- return iExtendedFlags&aExtendedFlag;
- }
-
-/**
- * Returns previous case information
- */
-inline TInt CAknFepManager::CaseBefore() const
- {
- return iCaseBefore;
- }
-
-inline TBool CAknFepManager::IsChineseInputLanguage() const
- {
- return ( iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese ||
- iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese ||
- iLanguageCapabilities.iInputLanguageCode == ELangTaiwanChinese);
- }
-
-inline TBool CAknFepManager::IsKoreanInputLanguage() const
- {
- return iLanguageCapabilities.iInputLanguageCode == ELangKorean;
- }
-inline TBool CAknFepManager::IsArabicInputLanguage() const
- {
- return ( iLanguageCapabilities.iInputLanguageCode == ELangArabic);
- }
-/**
- * Returns the valid of Qwerty
- */
-inline TBool CAknFepManager::IsQwerty() const
- {
- return iQwertyInputMode;
- }
-
-
-/**
- * Sets aFlag bitfield in iCcpuFlags
- */
-inline void CAknFepManager::SetCcpuFlag(TInt aFlag)
- {
- iCcpuMode|=aFlag;
- }
-
-/**
- * Clears aFlag bitfield in iCcpuFlags
- */
-inline void CAknFepManager::ClearCcpuFlag(TInt aFlag)
- {
- iCcpuMode&=~aFlag;
- }
-
-/**
- * Clears all flags in iCcpuFlags
- */
-inline void CAknFepManager::ResetCcpuFlags()
- {
- iCcpuMode=0;
- }
-
-/**
- * Returns ETrue if the aFlag bitfield in iCcpuFlags is set, EFalse if it
- * is clear
- */
-inline TBool CAknFepManager::IsCcpuFlagSet(TInt aFlag) const
- {
- return iCcpuMode&aFlag;
- }
-
-inline MAknFepManagerInterface* CAknFepManager::InternalFepUI()
- {
- return iCurrentFepUI;
- }
-
-#ifdef RD_SCALABLE_UI_V2
-
-inline void CAknFepManager::SetNotifyPlugin( TBool aNotifyFlag )
- {
- iNotifyPlugin = aNotifyFlag;
- }
-inline TInt CAknFepManager::PermittedModes() const
- {
- return iPermittedInputModes;
- }
-
-inline void CAknFepManager::RemeberEditorState()
- {
- iRememberEditorState = EditorState();
- }
-
-inline TBool CAknFepManager::IsMfneEditor() const
- {
- return EditorType() == CAknExtendedInputCapabilities::EMFNEBased;
- }
-
-inline TBool CAknFepManager::IsFindPaneEditor() const
- {
- return iAknEditorFlags & EAknEditorFlagFindPane;
- }
-
-inline CAknFepManager::TLanguageCapabilities CAknFepManager::InputLanguageCapabilities() const
- {
- return iLanguageCapabilities;
- }
-
-inline TAknFepManagerState& CAknFepManager::FepManState()
- {
- return iFepManState;
- }
-
-inline void CAknFepManager::SetCancelPopupInQwerty( TBool aCancelPopupInQwerty )
- {
- iCancelPopupInQwerty = aCancelPopupInQwerty;
- }
-inline TInt CAknFepManager::LastChineseInputMode() const
- {
- return iLastChineseInputMode;
- };
-#endif //RD_SCALABLE_UI_V2
-
-/**
-* Returns ETrue if Feature manager supports Japanese.
-*/
-inline TBool CAknFepManager::IsFeatureSupportedJapanese() const
- {
- return iFeatureSupportedJapanese;
- }
-
-/**
-* Returns ETrue if Auto Word Completion is enabled in the edtior
-*/
-inline TBool CAknFepManager::IsAutoCompleteOn() const
- {
- return iIsAutoCompleteOn;
- }
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-/**
-* Setes the current state from GS to the local state
-*/
-
-inline void CAknFepManager::SetAutoCompletionState(TInt aValue)
-{
- iIsAutoCompleteOn = aValue;
-}
-#endif
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-/**
-* @return TInt Typing correction level.
-*/
-inline TInt CAknFepManager::AdvancedPredictiveTypingCorrectionLevel() const
- {
- return iTypingCorrectionLevel;
- }
-
-/**
-* @return ETrue If the number candidate shown. EFalse otherwise.
-*/
-inline TBool CAknFepManager::IsAdvancedPredictiveNumberCandidateShown() const
- {
- return iIsNumberCandidateShown;
- }
-
-/**
-* @return ETrue If the number candidate shown. EFalse otherwise.
-*/
-inline TBool CAknFepManager::AdvancedPredictivePrimaryCandidate() const
- {
- return iPrimaryCandidate;
- }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-inline TBool CAknFepManager::WasLastKeyPressAHashKey()
- {
- return iLastKeyPressedWasHashKey;
- }
-
-inline void CAknFepManager::SetLastPressedHashKeyStatus(TBool aStatus)
- {
- iLastKeyPressedWasHashKey = aStatus;
- }
-
-inline TCoeInputCapabilities& CAknFepManager::InputCapabilities()
- {
- return iInputCapabilities;
- }
-
-inline TFepSymbolOfHardwareOne CAknFepManager::SymbolInfoOfHardKey1()
- {
- return iSymbolData;
- }
-inline TBool CAknFepManager::IsSupportNativeNumber() const
- {
- return ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic
- || iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic
- || iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari );
-}
-
-inline TBool CAknFepManager::IsSupportedAdaptiveSearch() const
- {
- return iAknEditorFlags & EAknEditorFlagAdaptiveSearch;
- }
-
-inline void CAknFepManager::SetGainForeground( TBool aGainForeground )
- {
- iGainForeground = aGainForeground;
- }
-#endif
-
-// End of file