--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/frontendprocessor/include/FEPBASE.H Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,635 @@
+// Copyright (c) 1997-2009 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:
+//
+
+#ifndef __FEPBASE_H__
+#define __FEPBASE_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <w32std.h>
+#include <coedef.h>
+#include <coemain.h>
+#include <fepbutils.h>
+#include <fepbconfig.h>
+
+class CCoeControl;
+
+
+/** Specifies the mixin protocol for observing a FEP transaction.
+
+Applications which need to implement this protocol should derive from this
+class. The functions are not pure virtual because most applications will only
+need to override one of them.
+
+@see CCoeFep::MakeDeferredFunctionCall()
+@publishedAll
+@released */
+class MCoeFepObserver
+ {
+public:
+ // both of these functions do nothing by default - the reason that they are not pure
+ // virtual is that most applications will only want to override one of them
+ IMPORT_C virtual void HandleStartOfTransactionL(); // the responsibility of FEPs to call
+ IMPORT_C virtual void HandleCompletionOfTransactionL(); // the responsibility of FEPBASE to call - not to be called if the transaction is canceled
+private: // reserved. do not override!
+ IMPORT_C virtual void MCoeFepObserver_Reserved_1();
+ IMPORT_C virtual void MCoeFepObserver_Reserved_2();
+ };
+
+/** Handles the start of a FEP transaction.
+
+This is a non-member function which just calls aFepObserver.HandleStartOfTransactionL().
+
+It is called indirectly by a FEP to notify the application that it is starting a transaction.
+This is done by calling CCoeEnv::ForEachFepObserverCall() passing in
+FepObserverHandleStartOfTransactionL. Internally, this calls HandleStartOfTransactionL() for
+each MCoeFepObserver object that has been registered with the control environment.
+
+@param aFepObserver The FEP observer.
+@see MCoeFepObserver::HandleStartOfTransactionL()
+@publishedAll
+@released */
+IMPORT_C void FepObserverHandleStartOfTransactionL(MCoeFepObserver& aFepObserver);
+
+
+/** Abstract base class for all FEPs.
+
+FEP authors must derive a class from CCoeFep. The CCoeFep-derived class should
+implement all of its pure virtual functions including the ones which CCoeFep
+inherits from its base classes. For information on these functions, see the
+documentation of the base classes. The global NewFepL() function is used to
+create a fully initialised object of the derived class.
+
+FEPs that need to intercept key events should own a CCoeControl-derived object.
+This object is referred to as the FEP control. The FEP control should
+be added to the control stack at a priority of ECoeStackPriorityFep, so that
+it receives first refusal of key events from the window server.
+
+In general, focus is retained by the underlying application. This has the
+advantage that the user can see where the output produced by the FEP will
+go. When focus is switched between controls, the FEP must be notified in case
+the input capability of the focussed control changes. For instance, the FEP
+needs to prevent the user composing a large amount of text only for it to
+be passed to a newly focussed control that cannot accept text input. CCoeFep
+derives from MCoeFocusObserver, which enables FEPs to receive notification
+when the focus for the underlying control changes. The implementation of MCoeFocusObserver's
+functions can call the enquiry functions of class TCoeInputCapabilities to
+find out what input capabilities are supported by the new target control (you
+need to get the TCoeInputCapabilities object from the application UI first:
+see CCoeAppUi::InputCapabilities()).
+
+@see NewFepL()
+@publishedAll
+@released */
+class CCoeFep : public CBase, protected MFepAttributeStorer, public MCoeForegroundObserver, public MCoeFocusObserver, private MCoeMessageObserver
+ {
+public:
+ /** Response to key or pointer event */
+ enum TEventResponse
+ {
+ EEventWasNotConsumed, /** < Indicates that the FEP did not process the event. */
+ EEventWasConsumed /** < Indicates that the FEP did process the event. */
+ };
+
+ /** Enables FEPs to have some code called but not in the context of the current
+ call stack, hence the name "deferred".
+
+ For an explanation of the intended use of this class, see
+ CCoeFep::MakeDeferredFunctionCall(). */
+ class MDeferredFunctionCall
+ {
+ public:
+ /** This function is called from within a high-priority active object's RunL()
+ shortly after the active object has been queued by calling CCoeFep::MakeDeferredFunctionCall(). */
+ virtual void ExecuteFunctionL()=0;
+ private: // reserved. do not override!
+ IMPORT_C virtual void MDeferredFunctionCall_Reserved_1();
+ IMPORT_C virtual void MDeferredFunctionCall_Reserved_2();
+ };
+
+ /** FEPs send character codes to the application underneath them using SimulateKeyEventsL().
+ Occasionally a FEP may wish to also specify the modifiers (e.g. Fn, Ctrl,
+ Shift) to be sent with that character code. In this case, they should use
+ the overload of CCoeFep::SimulateKeyEventsL() which takes an array of MModifiedCharacters. */
+ class MModifiedCharacter
+ {
+ public:
+ /** Returns the character code of the key combination.
+
+ @return The character code of the key combination. */
+ virtual TUint CharacterCode() const=0;
+ /** Returns a TUint which indicates which modifiers to override, rather than using
+ the current state of the keyboard's modifiers.
+
+ @return The modifiers to override in the key combination. */
+ virtual TUint ModifierMask() const=0;
+ /** Returns a TUint which indicates which of the modifiers specified in the mask
+ (returned by ModifierMask()) must be on and which must be off.
+
+ @return Indicates which of the modifiers specified in the mask (returned by
+ ModifierMask()) must be on and which must be off. */
+ virtual TUint ModifierValues() const=0;
+ private: // reserved. do not override!
+ IMPORT_C virtual void MModifiedCharacter_Reserved_1();
+ IMPORT_C virtual void MModifiedCharacter_Reserved_2();
+ };
+
+public:
+ IMPORT_C virtual ~CCoeFep();
+ IMPORT_C TBool IsSimulatingKeyEvent() const;
+ IMPORT_C TBool IsTurnedOnByL(const TKeyEvent& aKeyEvent) const;
+ IMPORT_C TBool IsTurnedOffByL(const TKeyEvent& aKeyEvent) const;
+public: // new public virtual functions
+ /** Cancels the FEP transaction.
+
+ A FEP transaction begins when an event is first intercepted by the FEP and
+ ends either when the processed text is committed to the application underneath,
+ or if it is cancelled. */
+ virtual void CancelTransaction()=0;
+public:
+ IMPORT_C void OnStartingHandlingKeyEvent_WithDownUpFilterLC();
+ IMPORT_C void OnStartingHandlingKeyEvent_NoDownUpFilterLC();
+ IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_WithDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
+ IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_NoDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
+protected:
+ IMPORT_C CCoeFep(CCoeEnv& aConeEnvironment);
+ IMPORT_C void BaseConstructL(const CCoeFepParameters& aFepParameters);
+ IMPORT_C void ReadAllAttributesL();
+ IMPORT_C void MakeDeferredFunctionCall(MDeferredFunctionCall& aDeferredFunctionCall);
+ IMPORT_C void SimulateKeyEventsL(const TArray<TUint>& aArrayOfCharacters);
+ IMPORT_C void SimulateKeyEventsL(const TArray<MModifiedCharacter>& aArrayOfModifiedCharacters);
+ IMPORT_C void WriteAttributeDataAndBroadcastL(TUid aAttributeUid);
+ IMPORT_C void WriteAttributeDataAndBroadcastL(const TArray<TUid>& aAttributeUids);
+ IMPORT_C TBool IsOn() const;
+public: // not for external use
+ void SetOnState(TBool aOnState);
+private:
+ class CHighPriorityActive;
+ class CLowPriorityActive;
+ class CCoeFepExtra;
+private:
+ void DoOnStartingHandlingKeyEventLC(TUint aFlagNoDownUpFilter);
+ TKeyResponse DoOnFinishingHandlingKeyEventL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
+ static void TurnOffKeyEventHandlingFlags(TAny* aFlags);
+ // from MFepAttributeStorer
+ IMPORT_C virtual void MFepAttributeStorer_Reserved_1();
+ IMPORT_C virtual void MFepAttributeStorer_Reserved_2();
+ // from MCoeForegroundObserver
+ IMPORT_C virtual void MCoeForegroundObserver_Reserved_1();
+ IMPORT_C virtual void MCoeForegroundObserver_Reserved_2();
+ // from MCoeFocusObserver
+ IMPORT_C virtual void MCoeFocusObserver_Reserved_1();
+ IMPORT_C virtual void MCoeFocusObserver_Reserved_2();
+ // from MCoeMessageObserver
+ IMPORT_C virtual TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters);
+ IMPORT_C virtual void MCoeMessageObserver_Reserved_1();
+ IMPORT_C virtual void MCoeMessageObserver_Reserved_2();
+ // new private virtual functions
+ /** Called to notify the FEP that it has either just been turned on or just been
+ turned off (it can find out which by calling CCoeFep::IsOn()).
+
+ If FEPs want to change their appearance when they are off (e.g. make themselves
+ invisible), then they should implement this function accordingly.
+
+ @publishedAll
+ @released */
+ virtual void IsOnHasChangedState()=0;
+
+ /**
+ @deprecated */
+ virtual void OfferKeyEventL(TEventResponse& /*aEventResponse*/, const TKeyEvent& /*aKeyEvent*/, TEventCode /*aEventCode*/){};
+
+ /**
+ @deprecated */
+ virtual void OfferPointerEventL(TEventResponse& /*aEventResponse*/, const TPointerEvent& /*aPointerEvent*/, const CCoeControl* /*aWindowOwningControl*/){};
+
+ /**
+ @deprecated */
+ virtual void OfferPointerBufferReadyEventL(TEventResponse& /*aEventResponse*/, const CCoeControl* /*aWindowOwningControl*/){};
+private: // reserved. do not override!
+ IMPORT_C virtual void CCoeFep_Reserved_1();
+ IMPORT_C virtual void CCoeFep_Reserved_2();
+private:
+ class SKeyEvent;
+ CCoeEnv& iConeEnvironment;
+ TUint iFlags;
+ CHighPriorityActive* iHighPriorityActive;
+ CCoeFepExtra* iExtra;
+ SKeyEvent* iLastKeyEvent;
+ TUint iSpare[13];
+ };
+
+
+/** Specifies the mixin protocol for handling pointer events in inline text.
+
+This class should be overridden by front end processors which support inline editing.
+
+An instance of a class which implements this protocol should be passed to
+MCoeFepAwareTextEditor::StartFepInlineEditL().
+
+@publishedAll
+@released */
+class MFepPointerEventHandlerDuringInlineEdit // to be overridden by inline-editing front-end processors
+ {
+public:
+ /** This function is called when a pointer event is received within the inline
+ text. It may need to update the cursor position within the inline text and
+ do text selection in response to drag events.
+
+ @param aType Pointer event types.
+ @param aModifiers Modifier keys (SHIFT, CTRL, FN etc.).
+ @param aPositionInInlineText The position at which the pointer event occurred,
+ as an offset from the start of the inline text string. */
+ virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers, TInt aPositionInInlineText)=0;
+private: // reserved. do not override!
+ IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_1();
+ IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_2();
+ };
+
+class TCharFormat;
+class TCursorSelection;
+class MFormCustomDraw;
+class MFepInlineTextFormatRetriever;
+class MCoeFepAwareTextEditor_Extension1;
+
+
+/** Specifies a protocol for FEP-aware text editors.
+
+TCoeInputCapabilities::FepAwareTextEditor() returns a pointer to an object
+of this class. A NULL return value indicates that the interface is not supported
+by any of the currently focused controls.
+
+Inline editing means composing text directly in the target text editor control
+rather than in the FEP's edit window first. The target text editor must implement
+the MCoeFepAwareTextEditor interface in order to support inline text. The
+inline text may be differentiated from the surrounding text by the use of
+different formatting. These differences are removed when the inline text transaction
+is committed (causing the inline text to become a real part of the document).
+Cancelling the inline text transaction deletes the inline text and restores
+any previously selected text. A benefit of inline editing is that the user
+only has to concentrate on one area of the screen rather than two.
+
+An inline editing transaction consists of the following sequence of function
+calls:
+
+- a call to StartFepInlineEditL()
+
+- zero, one or more calls to UpdateFepInlineTextL()
+
+- a call to either CommitFepInlineEditL() or CancelFepInlineEdit()
+
+@publishedAll
+@released */
+class MCoeFepAwareTextEditor // to be overridden by text-editors
+ {
+public:
+ /**
+ Starts a FEP inline editing transaction.
+
+ Inserts a descriptor containing the initial inline text into the text editor.
+ The inline text should normally replace any selected text.
+
+ The final three parameters are instances of abstract classes, so that the
+ caller of this function must create and instantiate classes deriving from
+ them. These instances must remain in existence for the entire duration of
+ the inline editing transaction.
+
+ Inline editing should not already be taking place when this function is called.
+
+ @param aInitialInlineText The inline text to insert into the text editor.
+ @param aPositionOfInsertionPointInInlineText An insertion position within the
+ inline text. This is an offset from the start of the inline text.
+ @param aCursorVisibility ETrue for visible text cursor, EFalse for invisible
+ text cursor in the text editor.
+ @param aCustomDraw Pointer to a custom drawing object. May be used to do advanced
+ formatting of the inline text. This parameter is optional; a NULL pointer
+ may be specified.
+ @param aInlineTextFormatRetriever Defines a single member function, GetFormatOfFepInlineText()
+ which is used by the text editor to find out the formatting to apply to the
+ inline text. It is also possible to apply different formatting to different
+ parts of the inline text.
+ @param aPointerEventHandlerDuringInlineEdit Defines a single function, HandlePointerEventInInlineTextL()
+ which is called when a pointer event is received within the inline text. This
+ function might update the cursor position within the inline text and do text
+ selection.
+ */
+ virtual void StartFepInlineEditL(const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText,
+ TBool aCursorVisibility, const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever,
+ MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit)=0;
+ /** Updates the inline text.
+
+ Called when a character is added to or deleted from the inline text.
+
+ The descriptor aNewInlineText contains the entire new inline text string,
+ not just the new text to be combined with the old inline text.
+
+ @param aNewInlineText Descriptor which holds the entire new inline text string.
+ @param aPositionOfInsertionPointInInlineText The position of the insertion
+ point (i.e. the cursor) within the inline text string aNewInlineText. This
+ is an offset from the start of the string. */
+ virtual void UpdateFepInlineTextL(const TDesC& aNewInlineText, TInt aPositionOfInsertionPointInInlineText)=0;
+ /** Sets the visibility of the text cursor in the text editor.
+
+ The cursor visibility is initialised using StartFepInlineEditL(). SetInlineEditingCursorVisibilityL()
+ is provided for FEPs which need to change the visibility of the cursor during
+ the inline editing transaction.
+
+ @param aCursorVisibility ETrue for visible text cursor, EFalse for invisible
+ text cursor. */
+ virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)=0;
+ IMPORT_C void CommitFepInlineEditL(CCoeEnv& aConeEnvironment);
+ /** Cancels the inline editing transaction.
+
+ The edit window should be rolled back to the state it was in before the FEP
+ transaction started, i.e. any inline text in the document which has not yet
+ been committed should be removed. If the inline text has replaced existing text,
+ (e.g. a selection) the replaced text should be reinstated. */
+ virtual void CancelFepInlineEdit()=0;
+ // with regard to the behaviour of the following functions (except GetScreenCoordinatesForFepL),
+ // note that when inline editing, the contents of the editor will be such that the text constituting
+ // the selection immediately prior to inline editing will be replaced by the inline text
+ // (CancelFepInlineEdit reinstates the previous selection)
+ /** Returns the total number of characters in the text editor.
+
+ @return The total number of characters in the text editor. */
+ virtual TInt DocumentLengthForFep() const=0;
+ /** Returns the upper limit (if any) on the length of text that the text editor
+ can hold.
+
+ @return The maximum number of characters that the text editor can hold. */
+ virtual TInt DocumentMaximumLengthForFep() const=0;
+ /** Sets the range of characters in the text editor which should be selected.
+
+ @param aCursorSelection Contains the cursor and anchor positions for the selection. */
+ virtual void SetCursorSelectionForFepL(const TCursorSelection& aCursorSelection)=0;
+ /** Gets the range of characters in the text editor which are selected.
+
+ @param aCursorSelection On return, contains the cursor and anchor positions
+ of the selection. */
+ virtual void GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const=0;
+ /** Copies a portion of the text editor's text content into a descriptor.
+
+ @param aEditorContent A descriptor; on return contains a copy of a portion
+ of the text.
+ @param aDocumentPosition The document position in the text editor from which
+ to copy.
+ @param aLengthToRetrieve The number of characters to copy. */
+ virtual void GetEditorContentForFep(TDes& aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const=0;
+ /** Gets the character formatting which applies to the document position specified.
+
+ This function allows FEPs to find out the ambient formatting so that the FEP
+ can choose a format for the inline text that will clearly differentiate it
+ from the surrounding text.
+
+ @param aFormat On return, contains the character formatting which applies
+ to the character at aDocumentPosition.
+ @param aDocumentPosition The document position of interest. */
+ virtual void GetFormatForFep(TCharFormat& aFormat, TInt aDocumentPosition) const=0;
+ /** Gets the x,y screen coordinates for the left hand side of the baseline of the
+ character located at a specified document position.
+
+ Also gets the height (ascent + descent) and ascent of the font of the character.
+ This function could be used to position the FEP window as close as possible to
+ the insertion point in the text editor.
+
+ @param aLeftSideOfBaseLine On return, contains the x,y coordinates of the
+ left side of the baseline of the character located at aDocumentPosition.
+ @param aHeight On return, contains the height (ascent + descent) of the font
+ of the character at aDocumentPosition.
+ @param aAscent On return, contains the ascent of the font of the character
+ at aDocumentPosition.
+ @param aDocumentPosition The document position of interest. */
+ virtual void GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt aDocumentPosition) const=0;
+
+ IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1();
+private:
+ /** Private function called by CommitFepInlineEditL().
+
+ Implementations should commit the inline text to the document. This
+ ends the inline editing transaction and causes the inline text to
+ become a part of the document.
+
+ @publishedAll
+ @released */
+ virtual void DoCommitFepInlineEditL()=0;
+ IMPORT_C virtual MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue);
+private: // reserved. do not override!
+ IMPORT_C virtual void MCoeFepAwareTextEditor_Reserved_2();
+ };
+
+
+class MLayDoc;
+
+/**
+MCoeFepLayDocExtension is an interface class which should be derived from by test editors to
+provide access to the current MLayDoc object, and to set a new MLayDoc object.
+Used directly from the FEP to decorate the inline edit text, without changing
+the actual document text.
+
+@publishedAll
+@released
+*/
+class MCoeFepLayDocExtension
+ {
+public:
+ /**
+ Retrives the current MLayDoc object from the text editor
+
+ @return Pointer to a MLayDoc object.
+ */
+ virtual MLayDoc* GetCurrentMLayDoc() const = 0;
+
+ /**
+ Sets a new MLayDoc object into the CTextLayout object
+
+ @param aLayDoc The new layout document
+ */
+ virtual void SetMLayDoc(MLayDoc* aLayDoc) = 0;
+
+ /**
+ Retrives inline edit positioning information from the editor
+ @param "TInt& aPositionInDocument" Position of the text in the document
+ @param "TInt& aCursorPositionInDocument" Position of the cursor in the document
+ @param "TInt& aSelectionLength" The number of characters in the selected text
+ */
+ virtual void GetFepEditorState(TInt& aPositionInDocument, TInt& aCursorPositionInDocument, TInt& aSelectionLength) = 0;
+
+ /**
+ Used to tell the editor when the size of the inline edit has changed, so
+ the text layout can update itself. Should be called before and after the inline
+ edit has been decorated.
+ @param "TCursorSelection aSelection" Position of the line edit from the beginning of the text
+ @param "TInt aDeletedChars" Number of character deleted since the last time the text was formatted.
+
+ */
+ virtual void HandleInsertDeleteL(TCursorSelection aSelection,TInt aDeletedChars) = 0;
+private: // reserved. do not override!
+ IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_1();
+ IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_2();
+ };
+
+
+/** An interface class which may be derived from by text editors to enable FEPs
+to store state information inside the editor.
+To be overridden by text-editors
+
+The CState class, defined within the scope of MCoeFepAwareTextEditor_Extension1
+represents the state information. This is information specific to the control
+which is only of interest to the FEP.
+
+A class which implements this interface must implement the pure virtual functions
+State() and SetStateTransferingOwnershipL() , to get and set the state. The
+class should also implement the MCoeFepAwareTextEditor interface. It must
+override the private virtual MCoeFepAwareTextEditor::Extension1() to return
+a pointer to itself (the default implementation returns NULL). The private
+virtual MCoeFepAwareTextEditor::Extension1() function is called by the public,
+non-virtual MCoeFepAwareTextEditor::Extension1() function.
+
+For example, if a FEP wants to set some state information in a text editor
+which is about to lose focus, the FEP should first call the editor's Extension1()
+function. If this returns non-NULL, the FEP should call the editor's implementation
+of SetStateTransferingOwnershipL() , passing in an object of a class derived
+from CState , which holds the state information. It should also pass in a
+UID which uniquely identifies the FEP. Later, when focus returns to the editor,
+the FEP can call State() to retrieve the state information it previously set.
+Note that CState has several reserved functions, to enable it to be extended
+in future, while retaining backwards compatibility.
+
+@publishedAll
+@released */
+class MCoeFepAwareTextEditor_Extension1
+ {
+public:
+ class CState : public CBase
+ /** State information for a text editor control.
+ This is information specific to the control which is only of interest to the
+ FEP which sets it. */
+ {
+ protected:
+ IMPORT_C CState();
+ IMPORT_C void BaseConstructL();
+ public:
+ IMPORT_C virtual ~CState();
+ private: // reserved. do not override!
+ IMPORT_C virtual void CState_Reserved_1();
+ IMPORT_C virtual void CState_Reserved_2();
+ IMPORT_C virtual void CState_Reserved_3();
+ IMPORT_C virtual void CState_Reserved_4();
+ private:
+ TAny* iSpareForFutureUse;
+ };
+public:
+ /** Sets state information in the text editor.
+
+ This function must only transfer ownership of the state object after it has
+ successfully done everything that can leave.
+
+ @param aState Pointer to the state information object.
+ @param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling
+ this function. The text editor should store this value for use by the State()
+ function. */
+ virtual void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid)=0; // this function must only transfer ownership after it has successfully done everything that can leave
+ /** Gets the state information previously set using SetStateTransferingOwnershipL().
+
+ This function does not transfer ownership. The function should first check
+ that aTypeSafetyUid matches the UID value previously specified by SetStateTransferingOwnershipL().
+ If it doesn't match, the function should return NULL.
+
+ @param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling
+ this function. The purpose of this is to enable the FEP to safely downcast
+ the CState pointer returned by this function to a pointer to a derived class
+ known about by the FEP.
+ @return Pointer to the state information object. */
+ virtual CState* State(TUid aTypeSafetyUid)=0;
+public:
+ /** Updates the inline text.
+
+ Called when a character is added to or deleted from the inline text.
+
+ The descriptor aNewInlineText contains the entire new inline text string,
+ not just the new text to be combined with the old inline text.
+
+ @param aSetToTrue Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
+ this is the implemented version and not the previous reserved funtion.
+ @param aCursorSelection The position of any hilighted text.
+ @param aNewInlineText Descriptor which holds the entire new inline text string.
+ @param aPositionOfInsertionPointInInlineText
+ The position of the insertion point (i.e. the cursor) within the inline text string aNewInlineText.
+ This is an offset from the start of the string.
+ */
+ IMPORT_C virtual void StartFepInlineEditL(TBool& aSetToTrue, const TCursorSelection& aCursorSelection,
+ const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility,
+ const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever,
+ MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit);
+
+ /** Changes the cursor displayed to indicate different modes of operation. For example how text is enterered
+ @param aSetToTrue Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
+ this is the implemented version and not the previously reserved funtion.
+ @param aTextCursor The new cursor to be displayed.
+ */
+ IMPORT_C virtual void SetCursorType(TBool& aSetToTrue, const TTextCursor& aTextCursor);
+
+ /**
+ Retrieves the current MCoeFepLayDocExtension object from the text editor
+ @param aSetToTrue Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
+ this is the implemented version and not the previously reserved funtion.
+ */
+ IMPORT_C virtual MCoeFepLayDocExtension* GetFepLayDocExtension(TBool& aSetToTrue);
+private: // reserved. do not override!
+ IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_4();
+ };
+
+
+/** Retrieves a control's caption for use by a FEP.
+
+An example of a caption is the non-editable text description displayed
+alongside each item in a dialog.
+
+TCoeInputCapabilities::CaptionRetrieverForFep() returns a pointer to an object
+of this class. A NULL return value indicates that the interface is not supported
+by any of the currently focused controls. If not NULL, call GetCaptionForFep(),
+which fills the supplied buffer with the control's caption, truncating it
+if the supplied buffer is too small for the whole caption.
+
+@publishedAll
+@released */
+class MCoeCaptionRetrieverForFep // to be overridden by captioned-controls
+ {
+public:
+ /** An implementation of this function should fill aCaption with the target control's
+ caption (or as much of the caption as will fit).
+
+ For example, code similar to the following might be used (assuming that your caption is
+ stored internally in iCaption):
+
+ @code
+ const TInt maximumLength=aCaption.MaxLength();
+ if (iCaption.Length()>maximumLength)
+ aCaption=iCaption.Left(maximumLength);
+ else
+ aCaption=iCaption;
+
+ @endcode
+ @param aCaption On return, this should be set to the caption of the target
+ control. */
+ virtual void GetCaptionForFep(TDes& aCaption) const=0; // gets as much as will fit in aCaption
+private: // reserved. do not override!
+ IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_1();
+ IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_2();
+ };
+
+#endif // __FEPBASE_H__
+