imstutils/imconversationview/imcvuiapp/inc/cimcvappmessageeditor.h
author Simon Howkins <simonh@symbian.org>
Mon, 29 Nov 2010 11:18:43 +0000
branchRCL_3
changeset 37 7506649dda4d
parent 0 5e5d6b214f4f
permissions -rw-r--r--
Corrected path to files being exported - not in the same dir as bld.inf

/*
* Copyright (c) 2007-2008 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:  message editer class
*
*/

#ifndef __CIMCVAPPMESSAGEEDITOR__H
#define __CIMCVAPPMESSAGEEDITOR__H


// INCLUDE FILES
#include <coecntrl.h>
#include <eikedwin.h>
#include <eikrted.h>
#include <eikedwin.h>
#include <AknUtils.h>

// FORWARD DECLARATION
class CAknInputFrame;
class MIMCVTapEventObserver;
class CIMCVAppView;
class CIMCVAppMessageExtensionsHandler;
/**
 * Helper class to get editor content events.
 * @since S60 v5.0
 */
class MIMCVAppMessageEditorObserver
    {
    public: // Enumerations
        enum TEditorEvent
            {
            EEditorContentCleared = 0,
            EEditorContentChanged
            };
            
    public: // New methods
        
        /**
         * Handle editor event.
         */
        virtual void HandleMessageEditorEventL( TEditorEvent aEvent ) = 0;
        
    protected:
        
        /**
         * Destructor for protection.
         */
        virtual ~MIMCVAppMessageEditorObserver() {};
    };

/**
* Message Editor for meco application. 
* It looks just like a search field.
* 
* @imcvappui.exe
* @since Series 60 1.2
*/
class CIMCVAppMessageEditor:
        public CCoeControl, 
        public MCoeControlObserver,
        public MEikEdwinObserver
    {
    public:
        /**
        * Two-phased constructor. Leaves on failure.
        * @since Series60 1.2
        * @param aParent Parent control        
        * @return The constructed Goto Pane control
        */
        static CIMCVAppMessageEditor* NewL
              ( 
              const CCoeControl* aParent, 
              TDesC& mbmPath,
              CIMCVAppView& aAppView,
              CIMCVAppMessageExtensionsHandler& aExtensionHandler
              );

        /**
        * Destructor.
        */
        virtual ~CIMCVAppMessageEditor(); 

        /**
        * See description in calslbs.h.
        */
        void HandleFindSizeChanged();       
        
        
    public:    // from MCoeControlObserver

        /**
         * Handle control event.
         * @since Series60 1.2
         * @param aControl The control
         * @param aEventType Event type
         */
        void HandleControlEventL
        ( CCoeControl* aControl, TCoeEvent aEventType );
        /**
         * Catches EEventTextUpdate event.
         * @since Series60 1.2
         * @param aKeyEvent
         * @param aType
         * @return
         */
        virtual void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType);

    public: // from CCoeControl

        /**
        * Handle key event.
        * @since Series60 1.2
        * @param aKeyEvent The key event
        * @param aType Key event type
        * @return Response (was the key event consumed?)
        */
        virtual TKeyResponse OfferKeyEventL
            ( const TKeyEvent& aKeyEvent, TEventCode aType );

        /**
        * HandlePointerEventL
        * From CCoeControl
        *
        */
        void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/);
        
    private:    // From MObjectProvider
        
            /**
             * @see MObjectProvider
             */
           TTypeUid::Ptr MopSupplyObject(TTypeUid aId);

    public:     // from CCoeControl

        /**
        * Count component controls.
        * @since Series60 1.2
        * @return Number of component controls
        */
        virtual TInt CountComponentControls() const;

        /**
        * Get a component control by index.
        * @since Series60 1.2
        * @param aIndex Index of component control to be returned
        * @return Component control or NULL
        */
        virtual CCoeControl* ComponentControl( TInt aIndex ) const;
      

    public:     // Text manipulation

        /**
        * Lengt of the text in the editor.
        * @since Series60 1.2
        * @return The text length
        */
        TInt TextLength() const;
    

        /**
        * Set text.
        * @since Series60 1.2
        * @param aTxt Text to set
        * appended if needed.
        */
        virtual void SetTextL( const TDesC& aTxt ); 

        /**
        * Returns editor control of goto pane.
        * @since Series60 1.2
        * @return editor control of goto pane
        */
        CEikRichTextEditor& Editor() const;
        
        /**
         * Sets message editor observer.
         * @since S60 v3.2
         * @param aObserver Pointer to observer, ownership not transfered.
         */
        void SetMessageEditorObserver( MIMCVAppMessageEditorObserver* aObserver );
        /**
         * This method is called when observed object is tapped
         * @since S60 v5.0
         * @param aEvent Event which happened in touchable control
         * @param aControlId in which control the event occured
         * @return none
         */
        void SetTapObserver( MIMCVTapEventObserver* aObserver, TUint aId );       
		

    private:  // Construct / destruct
        /**
        * Constructor.
        * @param 
        */
        CIMCVAppMessageEditor(CIMCVAppView& aAppView,
                CIMCVAppMessageExtensionsHandler& aExtensionHandler);

        /**
        * Second-phase constructor. Leaves on failure.
        * @param aParent Parent control
        */
        void ConstructL( const CCoeControl* aParent, TDesC& mbmPath );
        
    private:
        
        /**
         * Notifies message editor observer when needed.
         * @since S60 v5.0
         * @param aOldLen Editor content length before editing.
         * @param aCurLen Editor content current length
         */
        void NotifyObserverIfNeededL( TInt aOldLen, TInt aCurLen ) const;
        

    protected:  // from CCoeControl

        /**
        * Handle size change, lay out and draw components.
        */
        virtual void SizeChanged();

        /**
        * Handle focus change.
        * @since Series60 1.2
        * @param aDrawNow Draw now?
        */
        virtual void FocusChanged( TDrawNow aDrawNow );
        
    private:    // data		
		
        // Editor. Owned.
		CEikRichTextEditor* iEditor;  
        
        // Input frame. Owned.
        CAknInputFrame* iInputFrame;        
        // Not owned.
        MIMCVAppMessageEditorObserver* iEditorObserver;
        // Not owned. Pointer to observer
        MIMCVTapEventObserver* iTapObserver;
        // ID which needs to be reported back to TapObserver
        TUint iTapControlId;
        // does not own. Reference to the AppView object
        CIMCVAppView& iAppView;
        //does not own. reference to the smiley extension handler
        CIMCVAppMessageExtensionsHandler& iExtensionHandler;
        
        TInt iServiceId;
        
        // Owns
        CAknsBasicBackgroundControlContext* iBgContext;
    
      
    };

#endif