wvuing/wvuiave/AppSrc/CCAMessageEditor.h
changeset 0 094583676ce7
--- /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 <eikrted.h>
+#include <eikedwin.h>
+#include <aknutils.h>
+
+// 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