diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAMessageEditor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuiave/AppSrc/CCAMessageEditor.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,306 @@ +/* +* Copyright (c) 2002 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: This class creates message editor +* +*/ + + + +#ifndef CCAMESSAGEEDITOR_H +#define CCAMESSAGEEDITOR_H + +// INCLUDES +#include +#include +#include + +// FORWARD DECLERATIONS + +class CCAMessageExtensionsHandler; +class CAknsBasicBackgroundControlContext; +class MCATapEventObserver; +class CCAEditIndicator; + +// CLASS DECLARATION + +/** + * Helper class to get editor content events. + * @since S60 v3.2 + */ +class MCAMessageEditorObserver + { + public: // Enumerations + enum TEditorEvent + { + EEditorContentCleared = 0, + EEditorFirstContentAdded + }; + + public: // New methods + + /** + * Handle editor event. + */ + virtual void HandleMessageEditorEventL( TEditorEvent aEvent ) = 0; + + protected: + + /** + * Destructor for protection. + */ + virtual ~MCAMessageEditorObserver() {}; + }; + +/** +* Chat application's message editor +* +* @lib chat.app +* @since 1.2 +*/ +class CCAMessageEditor : public CEikRichTextEditor + { + public: // Constructors and destructor + + /** + * C++ default constructor. + * @param aMessageHandler Helper message handler for copy/paste feature. + */ + CCAMessageEditor( CCAMessageExtensionsHandler& aMessageHandler ); + + /** + * Default Symbian OS constructor. + * @param aParent Handle to parent control + * @param aNumberOfLines Number of lines + * @param aTextLimit Text limit + * @param aEdwinFlags Edwin flags + * @param aFontControlFlags Control flags + * @param aFontNameFlags Font name flags + */ + void ConstructL( const CCoeControl* aParent, TInt aNumberOfLines, + TInt aTextLimit, TInt aEdwinFlags, + TInt aFontControlFlags = EGulFontControlAll, + TInt aFontNameFlags = EGulNoSymbolFonts ); + + /** + * Destructor. + */ + virtual ~CCAMessageEditor(); + + public: // New functions + + /** + * This method returns number of lines + * @return Number of lines ( if editor is expanded or reduced ) + */ + TInt NumberOfLines( ) const; + + /** + * This method clears the editor + */ + void ResetL(); + + /** + * This method sets the font, that is used by editor + * @param aFont desired for editor + */ + void SetFontL( const CFont* aFont ); + + /** + * This method sets the font color, that is used by editor + * @param aFontColor desired font color for the editor + */ + void SetFontColor( const TRgb aFontColor ); + + /** + * This method sets the baseline of font + * @param aBaseLine desired baseline + */ + void SetBaseLine( const TInt aBaseLine ); + + /** + * This method deletes private icon in editor + * @param aFormatHasChanged ETrue if format is changed + * @param aSelection Selection if somethig is selected + * @param aCode Event code + * @param aIsPicture ETrue if picture is deleted + */ + void DeletePictureL( TBool& aFormatHasChanged, + const TCursorSelection& aSelection, TBool aCode, + TBool aIsPicture ); + + /** + * This method sets the view rect. This is the "rect" where editor is located + * @param aRect Parent control's view rect + */ + void SetViewRect( const TRect& aRect ); + + /** + * Sets skinned background context for editor. + * @param aForceUpdate ETrue causes full update of skin context, + * ETrue used when display flipped from portrait to + * landscape and vice versa. + */ + void SetupSkinContextL( TBool aForceUpdate = EFalse ); + + /** + * Force editor update so that correct vertical alignment for smiley + * icons will be used. Called by container which owns this editor. + * @since 3.0 + */ + void RefreshEditorL(); + + /** + * Sets message editor observer. + * @since S60 v3.2 + * @param aObserver Pointer to observer, ownership not transfered. + */ + void SetMessageEditorObserver( MCAMessageEditorObserver* aObserver ); + + /** + * Set observer for handling tap events. + * Supports only single observer. + * @param aObserver observer to handle tap events + * @param aId control id which is used by the observer to + * identify this object. + */ + void SetTapObserver( MCATapEventObserver* aObserver, TUint aId ); + + private: + + /** + * Notifies message editor observer when needed. + * @since S60 v3.2 + * @param aOldLen Editor content length before editing. + * @param aCurLen Editor content current length + */ + void NotifyObserverIfNeededL( TInt aOldLen, TInt aCurLen ) ; + + public: // from CCoeControl + + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * @see CCoeControl + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + public: + /** + * Shows edit indicator + */ + void ShowIndicator(); + + /** + * Hides edit indicator + */ + void HideIndicator(); + + /** + * Sets the active object which has called show/hide of + * edit indicator + */ + void SetActiveObject( CCAEditIndicator* aActiveObject ); + + /** + * ReSets the active object which has called show/hide of + * edit indicator + */ + void ReSetActiveObject(); + + private: // from MEikCcpuEditor + + /** + * Handle needed extension modififications for cut feature. + * @since 2.6 + * @see MEikCcpuEditor + */ + void CcpuCutL(); + + /** + * Handle needed extension modififications for copy feature. + * @since 2.6 + * @see MEikCcpuEditor + */ + void CcpuCopyL(); + + /** + * Handle needed extension modififications for paste feature. + * @since 2.6 + * @see MEikCcpuEditor + */ + void CcpuPasteL(); + + private: // from CEikRichTextEditor + + /** + * @see CEikRichTextEditor + */ + void EditObserver( TInt aStartEdit, TInt aEditLength ); + + private: // From MObjectProvider + + /** + * @see MObjectProvider + */ + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + private: // New helper methods + + /** + * Constructs clipboard buffer if needed and + * sets its content and selection correctly, + * method called before copying or cutting. + * @since S60 v3.1 + */ + void ConstructAndSetUpClipboardBufferL(); + + private: + + TInt iBaseLine; + TRgb iFontColor; + TRect iViewRect; + + TAknLayoutRect iTextLine1; + TAknLayoutRect iTextLine2; + + // Does not own. Extension handler for messages + CCAMessageExtensionsHandler& iMessageHandler; + + // Owns + CAknsBasicBackgroundControlContext* iBgContext; + // Owns + CAknsBasicBackgroundControlContext* iFgContext; + + // Not owned. + MCAMessageEditorObserver* iEditorObserver; + + // Not owned. Pointer to observer + MCATapEventObserver* iTapObserver; + + // ID which needs to be reported back to TapObserver + TUint iTapControlId; + + // Owned. Editor to be used when copying or + // cutting. Perform extension conversions in + // in this buffer editor to avoid flickering + // and crashes on UI. + CEikEdwin* iClipboardBuffer; + + //doesnt own + CCAEditIndicator* iEditIndicatorActiveObj; + }; + +#endif // CCAMESSAGEEDITOR_H + +// End of File