inc/convergedmessage.h
changeset 31 ebfee66fde93
child 34 84197e66a4bd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/convergedmessage.h	Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,429 @@
+/*
+ * Copyright (c) 2009 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: This is the domain header API for message data used
+ *              in sending and receiving services
+ *
+ */
+
+#ifndef CONVERGED_MESSAGE_H
+#define CONVERGED_MESSAGE_H
+
+#include <QString>
+#include <QDataStream>
+#include "convergedmessageaddress.h"
+#include "convergedmessageattachment.h"
+#include "msgutilsapidefines.h"
+
+// FORWARD DECLARATIONS
+class ConvergedMessageId;
+class ConvergedMessageImpl;
+
+/**
+ * ConvergedMessage data object.
+ * Encapsulates the message data for sending and receiving services.
+ */
+class MSG_UTILS_API_EXPORT ConvergedMessage
+    {
+
+public:
+
+    /**
+     * Enum defining possible Message types
+     * Ex. Sms, MMs etc.
+     * @attention This enum can have values from 0 to 255 only.
+     */
+    enum MessageType // keep the value's equal to server enums (ccsdefs.h)
+        {        
+        Sms = 0x00,
+        Mms = 0x01,
+        MmsNotification = 0x02,        
+        BioMsg = 0x03,
+        BT = 0x04,
+        None = 0x50,
+        IM = 0x51 
+        };
+    
+    /**
+     * Enum defining possible Message sub-types
+     * Ex. vCard, vCal etc..
+     */
+    enum MessageSubType
+    {
+        RingingTone = 0x00,
+        Provisioning = 0x01,
+        VCard = 0x02,
+        VCal = 0x03,
+        Audio = 0x04
+    };
+
+    /**
+
+     * Enum defining priority
+     * @attention This enum can have values from 0 to 255 only.
+     */
+    enum Priority
+        {
+        Normal = 0x00,
+        High = 0x01,
+        Low = 0x02
+        };
+
+    /**
+     * Enum defining Message Location
+     * @attention these are values range from
+     * 0 to FFFF
+     */
+    enum MessageLocation
+        {
+        Delete = 0x00,
+        Inbox = 0x01,
+        Outbox = 0x02,
+        Draft = 0x03,
+        Sent = 0x04,
+        MyFolder = 0x05
+        };
+    /**
+     * Enum defining MessageProperty
+     * @attention these are bitmask values range from
+     * 0 to FFFF
+     */
+    enum MessageProperty
+        {
+        Unread = 0x0001,
+        Attachment = 0x0002
+        };
+
+    /**
+     * Enum defining Message Direction
+     * @attention This enum can have values from 0 to 255 only.
+     */
+    enum Direction
+        {
+        Incoming = 0x00,
+        Outgoing = 0x01,
+        Missed = 0x02
+        };
+
+    /**
+     * Enum defining Message Sending State
+     * @attention This enum can have values from 0 to 255 only.
+     */
+    enum SendingState
+        {
+        Unknown = 0x00,
+        UponRequest = 0x01,
+        Waiting = 0x02,
+        Sending = 0x03,
+        Scheduled = 0x04,
+        Resend = 0x05,
+        Suspended = 0x06,
+        Failed = 0x07,
+        SentState = 0x08,
+        NotApplicable = 0x09
+        };
+    
+    /**
+     * Enum defining MMS Notification's Msg State
+     * @attention This enum can have values from 0 to 255 only
+     * Add any new states only at the bottom of this enum
+     */
+    enum MmsNotificationState
+        {
+        NotifNull              = 0x00, // unknown status
+        NotifReadyForFetching  = 0x01, // first state when received in inbox
+        NotifRetrieving        = 0x02, // when MM is fetching ongoin
+        NotifForwarding        = 0x03, // forwarding without retrival
+        NotifForwarded         = 0x04, // state after successful forwarding
+        NotifWaiting           = 0x05, // when settings changed manual->automatic
+        NotifExpired           = 0x06, // expired time has exceed
+        NotifFailed            = 0x07, // when fetching has failed (forwarding?)
+        NotifDeleted           = 0x08  // when msg deleted from server
+        };
+
+public:
+
+    /**
+     * Constructor
+     */
+
+    ConvergedMessage(ConvergedMessage::MessageType messageType
+            = ConvergedMessage::None);
+
+    /**
+     * Constructor
+     */
+    ConvergedMessage(const ConvergedMessageId &id);
+
+    /**
+     * Copy Constructor
+     */
+    ConvergedMessage(const ConvergedMessage& msg);
+
+    /**
+     * Destructor
+     */
+    ~ConvergedMessage();
+
+    /**
+     * Get the message id
+     * @return message id
+     */
+    ConvergedMessageId* id() const;
+
+    /**
+     * Set the message id
+     * @param id message id
+     */
+    void setMessageId(ConvergedMessageId &id);
+
+    /**
+     * Get the message type
+     * @return message type
+     */
+    MessageType messageType() const;
+
+    /**
+     * Set the message type
+     * @param type message type
+     */
+    void setMessageType(MessageType type);
+    
+    /**
+     * Get the message sub-type
+     * @return message sub-type
+     */
+    MessageSubType messageSubType() const;
+
+    /**
+     * Set the message sub-type
+     * @param type message sub-type
+     */
+    void setMessageSubType(MessageSubType type);
+
+    /**
+     * Get the message priority
+     * @return the message priority
+     */
+    Priority priority() const;
+
+    /**
+     * Set the message priority
+     * @param newPriority the message priority
+     */
+    void setPriority(Priority newPriority);
+
+    /**
+     * Get the message direction
+     * @return the direction
+     */
+    Direction direction() const;
+
+    /**
+     * Set the message direction
+     * @param direction direction of message
+     */
+    void setDirection(Direction direction);
+
+    /**
+     * Get the message sending state
+     * @return the SendingState of message
+     */
+    SendingState sendingState() const;
+
+    /**
+     * Set the message sending state
+     * @param state message sending status
+     */
+    void setSendingState(SendingState state);
+
+    /**
+     * Get the message status is Unread 
+     * @return bool if the message Unread
+     */
+    bool isUnread() const;
+
+    /**
+
+     * Get the message attachment status 
+     * @return bool if the message has attachment Unread
+     */
+    bool hasAttachment() const;
+
+    /**
+     * Get the message location
+     * @return the MessageLocation of message
+     */
+    MessageLocation location() const;
+
+    /**
+     * Set the message location
+     * @param attribute specifying message location
+     */
+    void setLocation (
+            ConvergedMessage::MessageLocation location);
+
+    /**
+     * Set the message property
+     * @param attribute specifying message property
+     */
+    void setProperty (ConvergedMessage::MessageProperty property);
+
+    /**
+     * Get the message status is Oubox message 
+     * @return integer for the message attribute set
+     */
+    quint16 properties() const;
+    /**
+     * Get the subject
+     * @return message subject
+     */
+    const QString& subject() const;
+
+    /**
+     * Set the message subject
+     * @param subject message subject
+     */
+    void setSubject(const QString &subject);
+
+    /**
+     * Get the message received/sent date
+     * @return The message timestamp
+     */
+    qint64 timeStamp() const;
+
+    /**
+     * Set the message received date
+     * @param timeStamp The message timestamp
+     */
+    void setTimeStamp(qint64 timeStamp);
+
+    /**
+     * Returns message body text.
+     * @return QString Message body text.
+     */
+    //TODO:OPEN: Should we use QString? as no formatting is there
+    const QString& bodyText() const;
+
+    /**
+     * Set message body
+     * @param bodyText message body text
+     */
+    void setBodyText(const QString &bodyText);
+
+    /**
+     * Add a recipient
+     * @param recipient recipient address    
+     */
+    void addToRecipient(ConvergedMessageAddress &recipient);
+    /**
+     * Add recipients
+     * This method takes the ownership of recipients array
+     * @param recipients array of recipient address   
+     */
+    void addToRecipients(ConvergedMessageAddressList &recipientList);
+    /**
+     * Add a recipient
+     * @param recipient recipient address   
+     */
+    void addCcRecipient(ConvergedMessageAddress &recipient);
+
+    /**
+     * Add recipients
+     * This method takes the ownership of recipients array
+     * @param recipients array of recipient address    
+     */
+    void addCcRecipients(ConvergedMessageAddressList &recipientList);
+    /**
+     * Add a recipient
+     * @param recipient recipient address   
+     */
+    void addBccRecipient(ConvergedMessageAddress &recipient);
+    /**
+     * Add recipients
+     * This method takes the ownership of recipients array
+     * @param recipients array of recipient address   
+     */
+    void addBccRecipients(ConvergedMessageAddressList &recipientList);
+
+    /**
+     * Add a recipient
+     * @param recipient recipient address   
+     */
+    void addFromRecipient(ConvergedMessageAddress &recipient);
+    /**
+     * Returns array of To addresses and their aliases.
+     * @return Array of To addresses and their aliases.
+     */
+    const ConvergedMessageAddressList toAddressList() const;
+
+    /**
+     * Returns array of Cc addresses and their aliases.
+     * @return Array of Cc addresses and their aliases.
+     */
+    const ConvergedMessageAddressList ccAddressList() const;
+
+    /**
+     * Returns array of Bcc addresses and aliases.
+     * @return Array of Bcc addresses and aliases.
+     */
+    const ConvergedMessageAddressList bccAddressList() const;
+
+    /**
+     * Returns array of From addresses and aliases.
+     * @return Array of From addresses and aliases.
+     */
+    ConvergedMessageAddress* fromAddress() const;
+
+    /**
+     * Get the attachment list
+     * @return Attachment list
+     */
+    ConvergedMessageAttachmentList attachments() const;
+
+    /**
+     * Add a list of attachments to the message
+     * @param attachmentList List of attachments
+     */
+    void addAttachments(
+            ConvergedMessageAttachmentList &attachmentList);
+
+    /**
+
+     * Serialize the data memebers into the stream.
+     * @param stream data stream to which data is serialized. 
+     */
+    void serialize(QDataStream &stream) const;
+
+    /**
+     * Deserialize the stream to data members.
+     * @param stream data stream from which data is deserialized. 
+     */
+    void deserialize(QDataStream &stream);
+
+private:
+    /**
+     * Operator= overloading. Making it private with no implementation to prevent its usage
+     */
+    ConvergedMessage& operator=(const ConvergedMessage &msg);
+
+private:
+
+    /**
+     * Converged Message implementation
+     * Own
+     */
+    ConvergedMessageImpl* mConvergedMessageImpl;
+    };
+
+#endif // CONVERGED_MESSAGE_H