diff -r 6a20128ce557 -r ebfee66fde93 inc/convergedmessage.h --- /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 +#include +#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