--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutmultilineicf.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,888 @@
+/*
+* Copyright (c) 2005-2006 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: header file of base class for Edwin-like editing area
+*
+*/
+
+#ifndef C_PENINPUTLAYOUTMULTILINEICF_H
+#define C_PENINPUTLAYOUTMULTILINEICF_H
+
+#include "peninputlayoutctrlgroup.h"
+#include <coecntrl.h>
+#include <AknsItemID.h>
+#include <gdi.h>
+
+class CRichText;
+class CParaFormatLayer;
+class CCharFormatLayer;
+class CTextLayout;
+class CTextView;
+class CCoeEnv;
+class TCharFormat;
+class TCharFormatMask;
+class CInsertionPoint;
+class CFepLayoutMIcfCustomDraw;
+class CFepLayoutMIcfCustomWrap;
+class CBubbleCtrl;
+class CFepUiCursor;
+
+class CAknEdwinFormExtendedInterfaceProvider;
+class CAknInlineTextSource;
+
+class CFepLayoutMultiLineIcfEditor;
+class CTooltipBubbleCtrl;
+class CPeninputSmileyManager;
+
+
+class CFepLayoutMultiLineIcf : public CControlGroup, public MEventObserver
+ {
+public:
+ enum TArrowBtnEvent
+ {
+ EArrowLeft,
+ EArrowRight,
+ EArrowUp,
+ EArrowDown
+ };
+
+ enum TIcfState
+ {
+ EIcfNormal,
+ EIcfInline,
+ EIcfAutoComplete
+ };
+public:
+
+ IMPORT_C static CFepLayoutMultiLineIcf* NewL(TRect aRect,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+ // EAttColor of charformat
+ IMPORT_C virtual void SetTextColorL(const TRgb aColor);
+
+ IMPORT_C virtual void SetAutoCompleteTextColor(const TRgb aColor);
+
+ // EAttFontHighlightColor of charformat
+ IMPORT_C virtual void SetTextSelColorL(const TRgb aColor);
+
+ // Tests if the field has focus.
+ // return ETrue if it has focus, otherwise EFalse
+ IMPORT_C virtual TBool IsFocused();
+
+ // Sets the text to be displayed
+ // cursorSel Current cursor selection
+ // aText The text to be set in fep ui
+ IMPORT_C virtual void SetTextL(const TFepInputContextFieldData& aData);
+
+ // Sets dim
+ // aDimFlag Dim flag, ETrue for dim
+ IMPORT_C virtual void SetDimmed(TBool aDimFlag);
+
+ IMPORT_C virtual void SetFontL(TInt aFontHeight, TInt aMaxFontHeight, const CFont* aFont);
+
+ // Set editor focus
+ IMPORT_C virtual void SetFocus(TBool aFlag = ETrue);
+
+ // Set cursor visibility
+ // aFlag ETrue for visisble, EFalse for invisible
+ IMPORT_C virtual void SetCursorVisible( TBool aCursorVisibleFlag = ETrue );
+
+ // Get cursor visibility
+ // return ETrue for visisble, EFalse for invisible
+ IMPORT_C virtual TBool CursorVisible() const;
+
+ IMPORT_C void SetRect(const TRect& aRect);
+
+ IMPORT_C virtual void SizeChangedL(const TRect& aRect,
+ TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+ IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+ IMPORT_C virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+ IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+ IMPORT_C virtual void CancelPointerDownL();
+
+ IMPORT_C virtual void HandlePointerLeave(const TPoint& aPoint);
+
+ IMPORT_C virtual void HandleArrowBtnEventL(TArrowBtnEvent aEventType);
+
+ IMPORT_C virtual void UpdateValidRegion(CFepUiBaseCtrl* aCtrl,TBool aRemoveFlag);
+
+ IMPORT_C TBool Contains(const TPoint& aPt);
+
+ IMPORT_C virtual void SetOverLapState(TBool aSupportOverlap, TRect aRect = TRect(0, 0, 0, 0));
+
+ IMPORT_C virtual void AddOverLapState(TRect aRect);
+
+ IMPORT_C virtual TInt GetEditorFieldMaxLen();
+
+ IMPORT_C virtual void SetTextAlignmentL(TInt aAlignment, TInt aLanguage);
+
+ // Move conntrol, aOffset The offset to be moved
+ IMPORT_C void Move(const TPoint& aOffset);
+
+ IMPORT_C virtual void SetPromptTextL(const TDesC& aPromptText, TBool aCleanContent = ETrue );
+
+ IMPORT_C virtual const HBufC* PromptText();
+
+
+ IMPORT_C virtual void InlineTextPos(TPoint& aPosBelow, TPoint& aPosRight);
+
+ IMPORT_C virtual void EnableTextSelection(TBool aEnable);
+
+ IMPORT_C virtual void SetTextIsSecret(TBool aIsSecret);
+
+ IMPORT_C virtual TBool TextIsSecret() const;
+
+ // ICF using frame as bg image
+ IMPORT_C virtual void SetBgImgSkinId(TAknsItemID aSkinId);
+
+ TAknsItemID BgImgSkinId() const;
+
+ // set whether there is line separator between prompt text and normal text
+ IMPORT_C virtual void SetLineSeparatorAfterPrompt(TBool aLineSeparator);
+
+ IMPORT_C virtual void SetLanguageId( TInt aLanguageId );
+
+ IMPORT_C virtual TBool NomatchState();
+
+ IMPORT_C virtual TBool IsEmpty();
+
+ IMPORT_C virtual TBool InlineStateOn();
+
+ IMPORT_C virtual void SetTextMargin
+ (TInt aLeftMargin, TInt aRightMargin, TInt aTopMargin, TInt aBottomMargin);
+
+ IMPORT_C virtual void SetLineSpace( TInt aLineSpace );
+
+ IMPORT_C virtual void ExtractText(TDes &aBuf, TInt aPos, TInt aLength);
+
+ IMPORT_C virtual CBubbleCtrl* MsgBubbleCtrl();
+ IMPORT_C virtual CBubbleCtrl* InfoBubbleCtrl();
+ IMPORT_C virtual void ShowBubble(const TDesC& aText, const TRect& aRect);
+ IMPORT_C virtual void ShowByteWarningBubble(const TDesC& aInfo);
+ IMPORT_C virtual void HideBubble();
+ IMPORT_C virtual void HideInfoBubble();
+ IMPORT_C virtual void SetMsgBubbleCtrlSize(const TSize& aSize);
+ IMPORT_C virtual void SetInfoBubbleCtrlSize(const TSize& aSize);
+
+ IMPORT_C virtual void SetBackgroundBitmapL(CFbsBitmap* aBmp);
+
+ void DrawIcfBackground( CFbsBitGc& aGc, const TRect& aDrawnRect,
+ TBool aBmpStretchFlag = ETrue );
+ IMPORT_C virtual void UpdateSecretTextL();
+
+ IMPORT_C virtual void ReDrawRect(const TRect& aRect);
+
+ IMPORT_C void SetNumberGrouping(TBool aIsNumberGrouping);
+
+ /**
+ * Return the pointer to Toolitp control
+ *
+ * @return the pointer to Toolitp control
+ */
+ IMPORT_C CTooltipBubbleCtrl* TooltipBubbleCtrl();
+
+ /**
+ * Show tooltip of ICF
+ *
+ * @param aText The text to be displayed in ICF
+ * @return None
+ */
+ IMPORT_C void ShowTooltipL( const TDesC& aText );
+
+
+ /**
+ * Hide tooltip of ICF
+ *
+ * @param aText The text to be displayed in ICF
+ * @param aPos The position of tooltip
+ * @return None
+ */
+ IMPORT_C void HideTooltip();
+
+protected: // Methods
+
+ /**
+ * Handle control event
+ *
+ * @since S60 v4.0
+ * @param aEventType The event type
+ * @param aCtrl The control who sends the event
+ * @param aEventData The event data
+ */
+ IMPORT_C virtual void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData);
+
+ IMPORT_C virtual void PrepareForFocusLoss();
+
+ IMPORT_C virtual TBool PrepareForFocusGain();
+
+ IMPORT_C CFepLayoutMultiLineIcf(CFepUiLayout* aUiLayout,
+ TInt aControlId);
+
+ IMPORT_C void BaseConstructL(TRect aRect,
+ TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+private: // Methods
+ /**
+ * Find what is the control of aPoint.
+ *
+ * @param aPoint The position to be checked
+ */
+ CFepUiBaseCtrl* ControlForPoints( const TPoint& aPoint );
+
+private: // Data
+ CFepLayoutMultiLineIcfEditor* iIcfEditor;
+ CBubbleCtrl* iMsgBubble;
+ CTooltipBubbleCtrl* iTooltip;
+ CBubbleCtrl* iInfoBubble;
+ };
+
+
+NONSHARABLE_CLASS(CFepLayoutMultiLineIcfEditor) : public CFepUiBaseCtrl
+ {
+public:
+
+ IMPORT_C static CFepLayoutMultiLineIcfEditor* NewL(TRect aRect,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+ virtual ~CFepLayoutMultiLineIcfEditor();
+
+ // EAttColor of charformat
+ void SetTextColorL(const TRgb aColor);
+
+ void SetAutoCompleteTextColor(const TRgb aColor);
+
+ // EAttFontHighlightColor of charformat
+ void SetTextSelColorL(const TRgb aColor);
+
+ // Tests if the field has focus.
+ // return ETrue if it has focus, otherwise EFalse
+ TBool IsFocused();
+
+ // Sets the text to be displayed
+ // cursorSel Current cursor selection
+ // aText The text to be set in fep ui
+ void SetTextL(const TFepInputContextFieldData& aData);
+
+ // Sets dim
+ // aDimFlag Dim flag, ETrue for dim
+ void SetDimmed(TBool aDimFlag);
+
+ void SetFontL(TInt aFontHeight, TInt aMaxFontHeight, const CFont* aFont);
+
+ // Set editor focus
+ void SetFocus(TBool aFlag = ETrue);
+
+ // Set cursor visibility
+ // aFlag ETrue for visisble, EFalse for invisible
+ void SetCursorVisible(TBool aCursorVisibleFlag = ETrue);
+
+ // Get cursor visibility
+ // return ETrue for visisble, EFalse for invisible
+ TBool CursorVisible() const;
+
+ void Draw();
+
+ void ReDrawRect(const TRect& aRect);
+
+ void SetRectL(const TRect& aRect);
+
+ void SizeChangedL(const TRect& aRect,
+ TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+ virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+ virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+ virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+ virtual void CancelPointerDownL();
+
+ virtual void HandlePointerLeave(const TPoint& aPoint);
+
+ void OnActivate();
+
+ void OnDeActivate();
+
+ void HandleArrowBtnEventL(CFepLayoutMultiLineIcf::TArrowBtnEvent aEventType);
+
+ void UpdateValidRegion(CFepUiBaseCtrl* aCtrl,TBool aRemoveFlag);
+
+ TBool Contains(const TPoint& aPt);
+
+ void SetOverLapState(TBool aSupportOverlap, TRect aRect = TRect(0, 0, 0, 0));
+
+ void AddOverLapState(TRect aRect);
+
+ virtual TInt GetEditorFieldMaxLen();
+
+ void SetTextAlignmentL(TInt aAlignment, TInt aLanguage);
+
+ // Move conntrol, aOffset The offset to be moved
+ void Move(const TPoint& aOffset);
+
+ void SetPromptTextL(const TDesC& aPromptText, TBool aCleanContent );
+
+ const HBufC* PromptText();
+
+
+ void InlineTextPos(TPoint& aPosBelow, TPoint& aPosRight);
+
+ inline void EnableTextSelection(TBool aEnable);
+
+ inline void SetTextIsSecret(TBool aIsSecret);
+
+ inline TBool TextIsSecret() const;
+
+ // ICF using frame as bg image
+ inline void SetBgImgSkinId(TAknsItemID aSkinId);
+
+ TAknsItemID BgImgSkinId() const;
+
+ // set whether there is line separator between prompt text and normal text
+ inline void SetLineSeparatorAfterPrompt(TBool aLineSeparator);
+
+ inline void SetLanguageId( TInt aLanguageId );
+
+ inline TBool NomatchState();
+
+ IMPORT_C TBool IsEmpty();
+
+ inline TBool InlineStateOn();
+
+ inline void SetTextMargin
+ (TInt aLeftMargin, TInt aRightMargin, TInt aTopMargin, TInt aBottomMargin);
+
+ inline void SetLineSpace( TInt aLineSpace );
+
+ IMPORT_C void ExtractText(TDes &aBuf, TInt aPos, TInt aLength);
+
+ IMPORT_C CBubbleCtrl* MsgBubbleCtrl();
+ IMPORT_C CBubbleCtrl* InfoBubbleCtrl();
+ IMPORT_C void ShowBubble(const TDesC& aText, const TRect& aRect);
+ IMPORT_C void ShowByteWarningBubble(const TDesC& aInfo);
+ IMPORT_C void HideBubble();
+ IMPORT_C void HideInfoBubble();
+ IMPORT_C void SetMsgBubbleCtrlSize(const TSize& aSize);
+ IMPORT_C void SetInfoBubbleCtrlSize(const TSize& aSize);
+
+ // For addition of ITI features on FSQ
+ void ShowTooltipL(const TDesC& aText);
+ void HideTooltip();
+ /**
+ * Returen the auto-completion state
+ *
+ * @return ETrue: AutoCompletion state is On
+ * EFalse: AutoCompletion state is Off
+ */
+ inline TBool AutoCompletionStateOn() const;
+
+
+ void DrawIcfBackground( CFbsBitGc& aGc, const TRect& aDrawnRect,
+ TBool aBmpStretchFlag = ETrue );
+ inline void SetMsgBubble(CBubbleCtrl* aCtrl);
+ inline void SetInfoBubble(CBubbleCtrl* aCtrl);
+ inline void SetTooltip(CTooltipBubbleCtrl* aCtrl);
+
+ IMPORT_C virtual void PrepareForFocusLoss();
+
+ IMPORT_C virtual TBool PrepareForFocusGain();
+
+ /**
+ * Handle pen UI graphic device size change event
+ *
+ * @since S60 V5.0
+ */
+ virtual IMPORT_C void GraphicDeviceSizeChanged();
+ void UpdateSecretTextL();
+
+ void SetNumberGroupingL(TBool aIsNumberGrouping);
+
+ /**
+ * remove padding in custom draw text.
+ *
+ * @since S60 v5.0
+ * @param aText text to be drawn
+ * @return None
+ */
+ void TrimCustomDrawText( TDes& aText );
+
+ /**
+ * test if smiley is enabled
+ *
+ * @since S60 v5.0
+ * @return ETrue if smiley is enabled
+ */
+ TBool SmileyEnabled();
+
+ /**
+ * Get smiley manager
+ *
+ * @since S60 v5.0
+ * @return smiley manager
+ */
+ CPeninputSmileyManager* SmileyManager();
+
+
+ /**
+ * Calculate draw region, excluding smiley icons
+ *
+ * @since S60 v5.0
+ * @param aRgn clip region
+ * @param aGc graphic context
+ * @param aFont font to draw text
+ * @param aText text to be drawn
+ * @param aBasePoint base point if text (left,bottom)
+ * @param aTopLine top margin of text
+ * @param aBottomLine bottom margin of text
+ */
+ void CalcSmileyClipRegionL( RRegion& aRgn, CGraphicsContext& aGc,
+ CFont& aFont, const TDesC& aText,
+ TPoint& aBasePoint,
+ TInt aTopLine, TInt aBottomLine );
+
+ /**
+ * Draw smiley icons, called by custom draw interface
+ *
+ * @since S60 v5.0
+ * @param aGc graphic context
+ * @param aFont font to draw text
+ * @param aText text to be drawn
+ * @param aBasePoint base point if text (left,bottom)
+ * @param aTopLine top margin of text
+ * @param aBottomLine bottom margin of text
+ */
+ void CustomDrawSmileyL( CGraphicsContext& aGc, CFont& aFont,
+ const TDesC& aText, TPoint& aBasePoint,
+ TInt aTopLine, TInt aBottomLine );
+
+private: // Methods
+
+ CFepLayoutMultiLineIcfEditor(TRect aRect,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId);
+
+ void BaseConstructL(TInt aFontHeight,
+ TInt aMaxFontHeight,
+ const CFont* aFont);
+
+ void InitTextLayoutL();
+
+ // set text margin to view rect
+ //void SetTextMarginL();
+
+ void RecalcualteTextPositionL();
+
+ inline TBool TextSelectionOn();
+
+ void SetInlineStateL(TBool aInline,
+ TInt aStartPos = 0,
+ TInt aEndPos = 0,
+ TBool aNoMatchState = EFalse,
+ const TDesC& aNoMatchText = KNullDesC);
+
+ void SetAutoCompleteStateL(TBool aAutoComplete,
+ TInt aStartPos = 0,
+ TInt aMidPos = 0,
+ TInt aEndPos = 0);
+
+ void SetSpecialStateL(TBool aStateOn,
+ TInt aStartPos,
+ TInt aEndPos,
+ TInt& aPreStartPos,
+ TInt& aPreEndPos,
+ TTextFormatAttribute aAttribute,
+ TBool aNoMatchState = EFalse,
+ const TDesC& aNoMatchText = KNullDesC);
+
+ inline TBool AutoCompleteStateOn();
+
+ /**
+ * Save current cursor state
+ *
+ * @since S60 v4.0
+ * @param aCtrl The control which may affects the cursor shown state
+ */
+ void SaveCursorState(CFepUiBaseCtrl* aCtrl);
+
+ /**
+ * Restore cursor state when overlapped area is removed.
+ *
+ * @since S60 v4.0
+ * @param aCtrl The control which may affects the cursor shown state
+ */
+ void RestoreCursorState(CFepUiBaseCtrl* aCtrl);
+
+ /**
+ * Restore cursor state when overlapped area is removed.
+ *
+ * @since S60 v4.0
+ * @param aIndex The control index in the list which may affects the cursor shown state
+ */
+ void RestoreCursorState(TInt aIndex);
+
+ /**
+ * Find whether the given control is one of the overlapped control.
+ *
+ * @since S60 v4.0
+ * @return The index in the list. KErrNotFound if not fouond
+ */
+ TInt FindOverlappedCtrl(CFepUiBaseCtrl* aCtrl);
+
+ TBool IsTextPosValid(TInt aPos);
+
+ void UpdateTextL(const TFepInputContextFieldData& aData);
+
+ static TInt UpdateSecretTextL(TAny* aEditArea);
+
+ void SetSelectionL(TCursorSelection aCurSel);
+
+ void UpdateNoMatchTextL(TInt aPos, const TDesC& aNoMatchText, TBool aNoMatchState);
+
+ void RemoveOverlappedCtrlIfNeeded();
+
+ void DeletePromptTextL();
+
+ void RecalculatePosByNewPromptTextL(const TDesC& aNewPromptText);
+
+ void AdjustIcfDataForPromptText(TFepInputContextFieldData& aData);
+
+ // used when need to set cursor pos to fep
+ void AdjustFepCursorPosForPromptText( TBool aSyncCursor = EFalse );
+
+ // judge if a given pos belong to prompt text
+ TBool BelongToPromptText(TInt aPos);
+
+ void SetPromptTextFormatL(TInt aPromptTextLen);
+
+ void SetCursorSizeAndType();
+
+ TFontSpec CursorFontSpec();
+
+ // convert current cursor pos to TPoint, aCaretPos carry
+ // the TPoint info on return
+ void CalculateCursorPos(TPoint& aCaretPos);
+
+ void AdjustBmpDeviceIfNeeded();
+
+ void ApplyFormatL();
+
+ void AdjustPromptTextL();
+
+ TInt TextWidth( const TDesC& aText );
+
+ void ResetApplyFont();
+
+ void TryDisplayMaxTextL(TInt aCursorPos);
+
+ TBool MoveCursorL( const TPoint& aPt, TInt& aCursorPos );
+
+ void ResetViewHeightL();
+
+ void SetMfneTextL(const TFepInputContextFieldData& aData);
+
+ void DrawMfneText();
+
+ void SetMsgBubbleRect();
+ void SetInfoBubbleRect();
+
+ void HideBubbleTemp();
+
+ TBool HighlightOverlapWithBubble( const TRect& aRect );
+
+ void AdjustSelectionL( const TCursorSelection& aCurSel );
+
+ void ApplyLineSpaceFormatL( TInt aLineHeight );
+ void CalcPromptTextRectL();
+
+ inline void SetCursorSelVisibility( TBool aCursorSelVisible );
+
+private: // Data
+
+ struct TOverlappedInfo
+ {
+ /*
+ * The control overlapped with ICF cursor
+ */
+ CFepUiBaseCtrl* iCtrl;
+
+ /*
+ * keep the cursor on state.
+ */
+ TBool iCursorStateBeforeOverlapped;
+ } ;
+
+ /**
+ * list of controls which overlapped with ICF
+ */
+ RArray<TOverlappedInfo> iOverlappedCtrlList;
+
+ TBool iHasFocus;
+
+ // The control which captures the pointer before
+ CFepUiBaseCtrl* iPreCaptureCtrl;
+
+ // Cursor visibility
+ TBool iCursorVisible;
+
+ // Cursor selection
+ TBool iCursorSelVisible;
+
+ // Editor is dimmed
+ TBool iDimmed;
+
+ CRichText* iRichText;
+ CParaFormatLayer* iParaFormatLayer;
+ CCharFormatLayer* iCharFormatLayer;
+ // text layout and view stuff
+ CTextLayout* iLayout;
+ CTextView* iTextView;
+
+ TBool iEnableTextSelection;
+ RWindow* iWin;
+ CCoeEnv* iCoeEnv;
+
+ TRgb iTextColor;
+ TRgb iTextSelColor;
+ TRgb iTextAutoColor;
+
+ TCharFormat iCharFormat;
+ TCharFormatMask iCharFormatMask;
+
+ TRect iViewRect;
+ TBool iTextSelectionOn;
+ RArray<TRect> iOverLapRects;
+ TBool iSupportOverLap;
+
+ TBool iTextIsSecret;
+ TBool iAutoComplete;
+
+ CFepUiCursor* iInsertionPoint;
+
+ TBool iTextInited;
+ TInt iMaxFontHeight;
+ TInt iFontHeight;
+
+ CPeriodic* iSecretTextTimer;
+
+ TBool iPntDownOnInline;
+
+ TInt iPreInlineStartPos;
+ TInt iPreInlineEndPos;
+ TInt iPreAutoStartPos;
+ TInt iPreAutoEndPos;
+ TInt iPreTextSelStartPos;
+ TInt iPreTextSelEndPos;
+ TAknsItemID iBgSkinId;
+ TBool iSkinIdSet;
+
+ CFepLayoutMIcfCustomDraw* iCustomDraw;
+ CFepLayoutMIcfCustomWrap* iTextWrapper;
+
+ TBool iNoMatchState;
+ const CFont* iFont;
+ HBufC* iInitPromptText;
+ HBufC* iPromptText;
+ TInt iPromptTextLen;
+ TBool iLineSeparator;
+ TInt iHorizontalMargin;
+
+ // following member variable used to calculate curosr position
+ TInt iWeight; // width of vertical cursors, height of horizontal ones
+
+ TBool iLeadingEdge;
+
+ TCursorSelection iCursorSel;
+
+ /**
+ * The last cursor position
+ */
+ TInt iLastCursorPos;
+
+ TInt iState;
+
+ TInt iLeftMargin;
+ CBubbleCtrl* iMsgBubble;
+ CBubbleCtrl* iInfoBubble;
+ TInt iRightMargin;
+ TInt iTopMargin;
+ TInt iBottomMargin;
+
+ TInt iLineSpace;
+ TSize iLastDeviceSize;
+ TBool iFormatChange;
+ TInt iFormatLineHeight;
+ HBufC* iMfneIcfData;
+ TBool iRtlMfneEditor;
+
+ TInt iLineNumber;
+ TInt iLineMaxCount;
+
+ TBool iHideBubbleTemp;
+ TBool iHideInfoBubbleTemp;
+ TBool iSycnFepData;
+ TInt iPreLanguageID;
+
+ CGraphicsContext::TTextAlign iTextAlign;
+ TInt iAlignment;
+
+ CAknEdwinFormExtendedInterfaceProvider* iFormExtendedInterfaceProvider;
+ CAknInlineTextSource* iPhoneNumberFormatter;
+
+ TInt iOffset;
+ TRect iPromptTextRect;
+ TInt iMaxIcfEditorHeight;
+ TBool iSynCursor;
+ RBuf iOldMfneText;
+ CTooltipBubbleCtrl* iTooltip;
+
+ /**
+ * Smiley manager
+ * own
+ */
+ CPeninputSmileyManager* iSmileyManager;
+ };
+
+inline void CFepLayoutMultiLineIcfEditor::EnableTextSelection(TBool aEnable)
+ {
+ iTextSelectionOn = aEnable;
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::TextSelectionOn()
+ {
+ return iTextSelectionOn;
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::InlineStateOn()
+ {
+ return iState == CFepLayoutMultiLineIcf::EIcfInline;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetTextIsSecret(TBool aIsSecret)
+ {
+ iTextIsSecret = aIsSecret;
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::TextIsSecret() const
+ {
+ return iTextIsSecret;
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::AutoCompleteStateOn()
+ {
+ return iAutoComplete;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetBgImgSkinId(TAknsItemID aSkinId)
+ {
+ iBgSkinId = aSkinId;
+ iSkinIdSet = ETrue;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetLineSeparatorAfterPrompt(TBool aLineSeparator)
+ {
+ if ( aLineSeparator )
+ {
+ iLineSeparator = aLineSeparator;
+ }
+ else
+ {
+ iLineSeparator = ( iPreLanguageID == ELangUrdu || iPreLanguageID == ELangArabic ||
+ iPreLanguageID == ELangFarsi || iPreLanguageID == ELangHebrew );
+ }
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetLanguageId( TInt aLanguageId )
+ {
+ if (iPreLanguageID == aLanguageId)
+ return;
+ iPreLanguageID = aLanguageId;
+ iLineSeparator = ( aLanguageId == ELangUrdu || aLanguageId == ELangArabic ||
+ aLanguageId == ELangFarsi || aLanguageId == ELangHebrew );
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::NomatchState()
+ {
+ return iNoMatchState;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetTextMargin
+ (TInt aLeftMargin, TInt aRightMargin, TInt aTopMargin, TInt aBottomMargin)
+ {
+ if( iLeftMargin == aLeftMargin &&
+ iRightMargin == aRightMargin &&
+ iTopMargin == aTopMargin &&
+ iBottomMargin == aBottomMargin )
+ {
+ return;
+ }
+
+ //iFormatChange = ETrue;
+ iLeftMargin = aLeftMargin;
+ iRightMargin = aRightMargin;
+ iTopMargin = aTopMargin;
+ iBottomMargin = ( aBottomMargin >= 0 )? aBottomMargin : 0;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetLineSpace( TInt aLineSpace )
+ {
+ if( iLineSpace != aLineSpace )
+ {
+ iLineSpace = aLineSpace;
+ //iFormatChange = ETrue;
+ }
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetMsgBubble(CBubbleCtrl* aCtrl)
+ {
+ iMsgBubble = aCtrl;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetInfoBubble(CBubbleCtrl* aCtrl)
+ {
+ iInfoBubble = aCtrl;
+ }
+inline void CFepLayoutMultiLineIcfEditor::SetTooltip(CTooltipBubbleCtrl* aCtrl)
+ {
+ iTooltip = aCtrl;
+ }
+
+inline TBool CFepLayoutMultiLineIcfEditor::AutoCompletionStateOn() const
+ {
+ return iState == CFepLayoutMultiLineIcf::EIcfAutoComplete;
+ }
+
+inline void CFepLayoutMultiLineIcfEditor::SetCursorSelVisibility( TBool aCursorSelVisible )
+ {
+ iCursorSelVisible = aCursorSelVisible;
+ }
+
+#endif // C_PENINPUTLAYOUTMULTILINEICF_H
\ No newline at end of file