imstutils/imconversationview/imcvuiapp/inc/cimcvappsmileyutil.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:33:36 +0100
branchRCL_3
changeset 23 9a48e301e94b
parent 0 5e5d6b214f4f
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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:  Utility for selecting smile icon and converting
*                between smile id and smile string.
*
*/


#ifndef CIMCVAPPSMILEYUTIL_H
#define CIMCVAPPSMILEYUTIL_H

// INCLUDE

#include "mimcvappmessageextension.h"
#include "cimcvappsmileiconutility.h"
#include <e32base.h>

// FORWARD DECLARATIONS

class CIMCVAppSmileIconUtility;
class MIMCVAppUi;
class MIMCVUiAppSkinVariant;
class CIMCVEngine;

// CLASS DECLARATION


/**
* CIMCVAPPSmileyUtil
*
* Utility for dealing with smileys in editor
*/
class CIMCVAppSmileyUtil : public CBase, public MIMCVAppMessageExtension
    {
    public:  // Constructors and destructor

        /**
        * Two-phased constructor.
        * aAppUi CIMCVAppUI reference
        * @param aType message extension type
        */
		static CIMCVAppSmileyUtil* NewL( MIMCVUiAppSkinVariant& aSkinVariant,  
                             MIMCVAppUi& aAppUi, 
                             TMessageExtensionTypes aType,
                             CIMCVEngine& aServiceEngine);

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

	private: // From MIMCVAPPMessageExtension
       
      

        /**
        * Inserts icon to editor
        * @param anEditor Reference to editor
        */
		void InsertExtensionL( CEikRichTextEditor& anEditor,
		                       TBool& aCancelled, TSize size );

		/**
		* Deletes icon from editor
		* @param aEditor Reference to editor
		* @param aPos Position where icon is located
		*/
		void DeleteExtensionL( CEikRichTextEditor& aEditor, TInt aPos );

		/**
		* Converts smiley icons to string smileys
		* @param anEditor Reference to editor
		* @param aDes Text from editor
		*/
		void ExtensionToStringL( CEikRichTextEditor& anEditor, TDes& aDes );

        /**
         *  @see MIMCVAPPMessageExtension	
         */
        void ConvertSelectionToExtensionL( CEikRichTextEditor& aEditor );
        
        /**
         *  Converts all the extensions in selection area from strings to extensions. 	
         *  @since 3.0
         *  @param aRichText Rich text to be converted
         *  @param aSelection Selection area
         */
        void ConvertSelectionToExtensionL( CRichText& aRichText, TCursorSelection& aSelection );

        /**
         *  @see MIMCVAPPMessageExtension	
         */
        void ConvertSelectionToStringL( CEikRichTextEditor& aEditor, TBool aPreserve );

        /**
         *	@see MIMCVAPPMessageExtension
         */
        void Reset();
        
        /**         
         * Informs the extensions about changed size
         * @param aSize
         */
        void SizeChanged( TSize& aSize );

        /**
         *	@see MIMCVAPPMessageExtension
         */
        void ConvertSelectionToStringL(
            CEikRichTextEditor& aEditor,
            TDes& aResultString,
            TCursorSelection& aSelectionAfterConversion,
            TBool aPreserve );
        
        
       TInt ServiceId() const ;
                                          
    private:  // Constructors and destructor

        /**
        * C++ constructor.
        * @param aType Type of TMessageExtensionTypes
        */
        CIMCVAppSmileyUtil( TMessageExtensionTypes aType  );

        /**
        * Second-phased constructor
        */
        void ConstructL( MIMCVUiAppSkinVariant& aSkinVariant, 
                          MIMCVAppUi& aAppUi,
                          CIMCVEngine& aServiceEngine );

    private: // Data

		//util for icon/string convertings
		CIMCVAppSmileIconUtility* iSmileUtil;

		// Doesn't own
		CEikRichTextEditor* iEditor;

        // Count of current smiley icons in editor
		TInt iCurrentCount;

        // Is smiley converted or not
        RPointerArray< CIMCVAppSmileyInformation > iConvertArray;
        
        // service id
        TInt iServiceId;
       
    };

#endif  // CIMCVAPPSMILEYUTIL_H