diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutmultilineicf.h --- /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 +#include +#include + +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 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 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