wvuing/wvuieng/EngInc/MCAMessage.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngInc/MCAMessage.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,353 @@
+/*
+* 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 DECLERATIONS
+class 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
+