imstutils/imconversationview/imcvuiengine/inc/mimcvenginemessage.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:18 +0200
changeset 0 5e5d6b214f4f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* 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 interface
*
*/


#ifndef MIMCVENGINEMESSAGE_H
#define MIMCVENGINEMESSAGE_H

#include <e32base.h>
#include <badesca.h>

//	FORWARD CLASS DECLERATIONS
class MIMCVEngineMessageContainerInfo;
class TXIMPRequestId;
// MDesCArray must not be fwd declared, or compiling test code will break
// since it's a MACRO. hence the include to badesca.h

// CLASS DECLARATION

/**
 *  Interface for handling one message
 *
 *  @lib imcvengine.dll
 *  @since 5.0
 */
class MIMCVEngineMessage
	{
	public: // Definitions
	
		/** 
		 * Different message types
		 */
		enum TMessageType
			{
			EMessagePTOP,
			EMessageWhisper,
			EMessageGroup,
			EMessageSystem,
			EMessageInvalid
			};
	
        /**
         * System message enumerations.
         */			
	    enum TSystemMessage
	        {
	        ESystemMessageNone,
	        ESystemMessageWelcome,
	        ESystemMessageNewUsers,
	        ESystemMessageTopicChanged,
	        ESystemMessagePrivatChanged,
	        ESystemMessageLeftUsers,
	        ESystemMessageDateChange
	        };

		/**
		 * Direction of message. Coming or going or other.
		 */
		enum TMessagerType
			{
			EMessageSent,
			EMessageReceived,
			EMessageOther,
			EMessageStarted
			};
		
		/**
		 * Different message content types
		 */
		enum TContentType
			{
			EContentText,
			EContentPicture,
			EContentOther,
			EContentInvalid
			};
			
	    /**
	     * Content processing states
	     */
	    enum TContentProcessState
	        {
	        EContentNotProcessed = 0,
	        EContentNotSupported,
	        EContentNotSupportedDrm,
	        EContentCorrupted,
	        EBitmapDecoded,
	        EBitmapScaled,
	        EContentReady,
	        EContentDecoded,
	        EThumbnailReady
	        };
	
	public: // General information
	
		/**
		 * Get timestamp when this message has been created.
		 * For prioritization of message deletion and timestamping
		 * chat messages
		 */
		virtual const TTime& TimeStamp() const = 0;

		/**
		 * @see MIMMessageBase
		 */
		virtual void SetTimeStamp(TTime aTime ) = 0 ;
		
		/**
		 * Message size in bytes.
		 * @return Size of message in bytes.
		 */
		virtual TInt SizeInBytes() const = 0;

    public: // Type of message
		/**
		 * Type of message
		 * @return Type of message. EMessageGroup, EMessagePersonal, 
		 *         EMessageSystem
		 */
		virtual TMessageType MessageType() const = 0;

		/**
		 * Type of messager
		 * @return Type of message. EMessageFrom, EMessageTo, EMessageOther 
		 */
		virtual TMessagerType MessagerType() const = 0;

		/**
		 * Type of content of message
		 * @return Type of message. EMessageText, EMessagePicture
		 */
		virtual TContentType ContentType() const = 0;
		
		/**
		 * Is message failed or not
		 * @return ETrue if is, EFalse if not.
		 */ 
        virtual TBool FailedMessage() const = 0;
				
		/**
		 * Returns the type of system message.
		 * @return type of system message or
		 *         TSystemMessageNone if not system message
		 */ 
		virtual TSystemMessage SystemMessageType() = 0;
		
		/**
	     * Increase owner count. There can be multiply owners for one message. 
	     * This method is for increasing the count. Every owner class
	     * must use also DecreaseOwnerCount.
	     */
	    virtual void IncreaseOwnerCount() = 0;
	    
	    /**
	     * Decrease owner count. There can be multiply owners for one message.
	     * This method is for decreasing the count. Every owner class
	     * must have called IncreaseOwnerCount before calling this method. 
	     * @return ETrue if owner can delete message. EFalse if not.
	     */ 
	    virtual TBool DecreaseOwnerCount() = 0;
	    
		
	public: // Identification of message
		/**
		 * Operation code of message. One way to identify message.
		 * @return Operation code of message.
		 */
	    virtual TXIMPRequestId OperationCode() const = 0;
	    
	    /**
	     * Set operation code of message.
	     * @param aOpId, new operation code for message
	     */
	    virtual void SetOperationCode(TXIMPRequestId aRequestId ) = 0;
	    
	    

	    /**
	     * Part of container identifier which contains this message
	     * @return User id to identify container which contains this message
	     */
	    //virtual const TDesC& UserId() const = 0;
	    
	   	    
	    /**
	     * Set containerinfo of message. Needed for identifying of message.
	     * @param aInfo. ContainerInfo.
	     */
        virtual void SetContainerInfo( MIMCVEngineMessageContainerInfo* aInfo ) = 0;
	    	    
    public: // Content of message	    
	    
	    /**
	     * Recipient of message.
	     * @return Recipient of message. To whom the message is sent.
	     */
	    virtual const TDesC& Recipient() const = 0;
	    
	    /**
	     * Sender of message
	     * @return Sender of message. To who has sent the message.
	     */
	    virtual const TDesC& Sender() const = 0;

	    
	    /**
	     * Textual content of message
	     * @return Textual content.
	     */
	    virtual const TDesC& Text() const = 0;
	    
               
       
    public: 
     
		/**
		 * Virtual destructor
		 */
		virtual ~MIMCVEngineMessage(){}
	}; 

#endif      // MIMCVENGINEMESSAGE_H

// End of File