/** Copyright (c) 2004-2005 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: Interface for handling one message**/#ifndef MCAMESSAGE_H#define MCAMESSAGE_H#include <e32base.h>#include <badesca.h>// FORWARD CLASS DECLERATIONSclass MCAMessageContainerInfo;class MCALoggerMessage;class MCAContentProcessor;class MCAContentProcessObserver;// 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 CAEngine.dll * @since 3.0 */class MCAMessage { 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 }; /** * 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; /** * 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; public: // Identification of message /** * Operation code of message. One way to identify message. * @return Operation code of message. */ virtual TInt OperationCode() const = 0; /** * Set operation code of message. * @param aOpId, new operation code for message */ virtual void SetOperationCode( TInt aOpId ) = 0; /** * Part of container identifier which contains this message * @return Server address to identify container which contains * this message */ virtual const TDesC& ServerAddress() const = 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; /** * Part of container identifier which contains this message * @return Identifier to identify container which contains this message */ virtual const TDesC& Target() const = 0; /** * Set containerinfo of message. Needed for identifying of message. * @param aInfo. ContainerInfo. */ virtual void SetContainerInfo( MCAMessageContainerInfo* 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; /** * Recipients array. * @return Array of recipients */ virtual const MDesCArray* Recipients() const = 0; /** * Screennames array */ virtual const MDesCArray* ScreenNames() const = 0; /** * Textual content of message * @return Textual content. */ virtual const TDesC& Text() const = 0; /** * Mime type of content. * @return Mime type of content. */ virtual const TDesC8& MimeType() const = 0; /** * Content data in decriptor * @return Content data in descriptor */ virtual const TDesC8& ContentData() const = 0; /** * Set content data for message * @param aContent. Ownership is transferred. */ virtual void SetContentData( HBufC8* aContent ) = 0; /** * Current processing state. Might be different for different * content types * @return Processing state of message. */ virtual TContentProcessState ContentProcessState() const = 0; /** * Set current processing state. * @aNewState New processing state */ virtual void SetProcessState( TContentProcessState aNewState ) = 0; /** * Set the part of message to be forwarded, * used when forwarding a highlighted item from a message. * @param aFwdPart pointer to highlighted item descriptor, * use NULL to clear forward message part. */ virtual void SetForwardPartL( const HBufC* aFwdPart ) = 0; /** * Forwarded part of message. * @return forwarded part of message or NULL if not set */ virtual const HBufC* ForwardPart() const = 0; public: // Message owner managing. /** * 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: // Log interface of message. /** * Interface for logger. * @return Interface for logger. */ virtual MCALoggerMessage& LoggerMessage() = 0; public: // Content processing. /** * Add content processor for message * @param aProcessor Processor for content. */ virtual TInt AddContentProcessor( MCAContentProcessor& aProcessor, MCAContentProcessObserver* aObserver ) = 0; /** * Handle processing completion. Called by content processor when * processing is ready. * @param aProcessor Processor which made processing. * @param aStatus, Status of processing. KErrNone -> OK. */ virtual void HandleProcessingComplete( MCAContentProcessor& aProcessor, TInt aStatus ) = 0; /** * Release temporary content data */ virtual void ReleaseTemporaryContentData() = 0; public: //The following API's are used, if message content is a image //This is part of new implementation required for wvuing //While merging with wvui20, please make sure you preserve //this change also. /** * API used to set the iSaved Flag to ETrue * if the image is saved by the user. * @param aSaved - ETrue if Image is Saved by the user * @return void */ virtual void SetImageAsSaved( const TBool aSaved ) = 0; /** * API used to check whether the image was * SAVED or not. * @return TBool - ETrue if the user has already saved the image * else EFalse */ virtual TBool IsImageSaved() = 0; public: // For deletion of message /** * Virtual destructor */ virtual ~MCAMessage() {} };#endif // MCAMESSAGE_H// End of File