emailservices/nmailbase/inc/nmmessage.h
changeset 23 2dc6caa42ec3
parent 20 ecc8def7944a
--- a/emailservices/nmailbase/inc/nmmessage.h	Mon May 03 12:23:15 2010 +0300
+++ b/emailservices/nmailbase/inc/nmmessage.h	Fri May 14 15:41:10 2010 +0300
@@ -23,39 +23,54 @@
 #include "nmbasedef.h"
 #include "nmcommon.h"
 #include "nmmessagepart.h"
+#include "nmmessageenvelope.h"
 
 class CFSMailMessage;
 
+class NMBASE_EXPORT NmMessagePrivate : public QSharedData
+{
+public:
+    NmMessagePrivate();
+    virtual ~NmMessagePrivate();
+public:
+    NmMessageEnvelope mEnvelope;
+};
+
 class NMBASE_EXPORT NmMessage : public NmMessagePart
 {
 public:
     NmMessage();
-    NmMessage(const NmId &id);
-    NmMessage(const NmId &id, const NmId &parentId);
-    NmMessage(const NmId &id, const NmId &parentId, const NmId &mailboxId);
+    NmMessage(const NmId &messageId);
+    NmMessage(const NmId &messageId, const NmId &folderId);
+    NmMessage(const NmId &messageId, const NmId &folderId, const NmId &mailboxId);
     NmMessage(const NmMessageEnvelope &envelope);
+
     NmMessage(const NmMessage &message);
     virtual ~NmMessage();
     NmMessage(const NmMessagePart& message);
 
-    virtual NmId id() const;
-    virtual void setId(const NmId &id);
-
     const NmMessagePart *plainTextBodyPart() const;
     NmMessagePart *plainTextBodyPart();
     const NmMessagePart *htmlBodyPart() const;
     NmMessagePart *htmlBodyPart();
 
-    void setEnvelope(const NmMessageEnvelope &envelope);
     NmMessageEnvelope &envelope();
     const NmMessageEnvelope &envelope() const;
 
-    CFSMailMessage* getCFSMailMessage();
-
     void attachmentList(QList<NmMessagePart*> &parts) const;
     
 private:
+    // prohibited
     NmMessage &operator=(const NmMessage &message);
+    
+    // for CFSMailMessage
+    NmMessage(const NmMessageEnvelope &envelope,
+            QExplicitlySharedDataPointer<NmMessagePartPrivate> nmPrivateMessagePart);
+    
+    friend class CFSMailMessage;
+
+private:
+    QExplicitlySharedDataPointer<NmMessagePrivate> d;
 
 };