messagingfw/msgsrvnstore/server/inc/CMsvAttachment.h
changeset 22 bde600d88860
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgsrvnstore/server/inc/CMsvAttachment.h	Fri Jun 04 10:32:16 2010 +0100
@@ -0,0 +1,156 @@
+// Copyright (c) 2004-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:
+// CMsvAttachment.h
+//
+/**
+ * @file 
+ * @publishedAll
+ * @released
+ */
+
+#ifndef __CMSVATTACHMENT_H__
+#define __CMSVATTACHMENT_H__
+
+#include <e32base.h>
+#include <msvstd.h>
+
+/**
+Attachment Id for uniquely identifying attachments. 
+
+This is unique on a per message entry basis.
+
+@publishedAll
+@released
+*/
+typedef TUint TMsvAttachmentId;
+
+class CMsvAttributeManager;
+
+/**
+Represents a single attachment and information about the attachment.
+
+This object is used to represent all types of attachments (file, linked file or message 
+entry). Note that some APIs may not be valid for particular attachment types. This is
+described under each method. It is the responsibility of the client to ensure that the
+data about the attachment is set such as its mime-type or size.
+
+@publishedAll
+@released
+*/
+class CMsvAttachment : public CBase
+	{
+public:
+	/**
+	Enum to define the different types of attachments supported by messaging.
+	*/
+	enum TMsvAttachmentType
+		{
+		/**
+		File attachment. This is a file attachment that is copied into the message store.
+		*/
+		EMsvFile = 0,
+		/**
+		Linked file attachment. This is an attachment that is linked to using its file path,
+		this is not copied into the message store.
+		*/
+		EMsvLinkedFile,
+		/**
+		Message entry attachment. This is a message entry that is registered as an attachment.
+		*/
+		EMsvMessageEntry
+		};
+	
+public:
+	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType);
+	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
+	
+	IMPORT_C static CMsvAttachment* NewL(const CMsvAttachment& aAttachment);
+	
+	IMPORT_C ~CMsvAttachment();
+	
+	IMPORT_C TMsvAttachmentId Id() const;
+	IMPORT_C void SetId(TMsvAttachmentId aId);
+	
+	IMPORT_C TMsvAttachmentType Type() const;
+	
+	IMPORT_C TMsvId EntryAttachmentId() const;
+	void SetEntryAttachmentId(TMsvId aEntryId);
+	
+	IMPORT_C const TDesC& AttachmentName() const;
+	IMPORT_C void SetAttachmentNameL(const TDesC& aAttachmentName);
+	
+	IMPORT_C const TDesC& FilePath() const;
+	void SetFilePathL(const TDesC& aFilePath);
+	
+	IMPORT_C TInt Size() const;
+	IMPORT_C void SetSize(TInt aSize);
+	
+	IMPORT_C const TDesC8& MimeType() const;
+	IMPORT_C void SetMimeTypeL(const TDesC8& aMimeType);
+		
+	IMPORT_C TBool Complete() const;
+	IMPORT_C void SetComplete(TBool aComplete);
+	
+	IMPORT_C void SetDesC8AttributeL(TUid aAttributeId, const TDesC8& aAttribute);
+	IMPORT_C TInt GetDesC8Attribute(TUid aAttributeId, TPtrC8& aAttribute) const;
+	IMPORT_C void RemoveDesC8Attribute(TUid aAttributeId);
+	
+	IMPORT_C void SetIntAttributeL(TUid aAttributeId, TInt aAttribute);
+	IMPORT_C TInt GetIntAttribute(TUid aAttributeId, TInt& aAttribute) const;
+	IMPORT_C void RemoveIntAttribute(TUid aAttributeId);
+	
+	void InternalizeL(RReadStream& aStream);
+	void ExternalizeL(RWriteStream& aStream) const;
+	
+	TBool IsPathRequired() const;
+	
+private:
+	CMsvAttachment(TMsvAttachmentType aType);
+	CMsvAttachment(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
+	void ConstructL();
+	void ConstructL(const CMsvAttachment& aAttachment);
+	
+private:
+	/** The unique attachment Id. This is unique per message entry and is auto-assigned. */
+	TMsvAttachmentId iId;
+	
+	/** The attachment type. */
+	TMsvAttachmentType iType;
+	
+	/** Size of the attachment in bytes. */
+	TInt iSize;
+	
+	/** Descriptor indicating the mime type of the attachment. */
+	HBufC8* iMimeType;
+			
+	/** The full file path and file name of attachment files and linked files. */
+	HBufC* iFilePath;
+		
+	/** The message entry Id of the entry attachment. */
+	TMsvId iEntryId;
+	
+	/** Name of the attachment to identify to the attachment. */
+	HBufC* iAttachmentName;
+	
+	/** Attachment entry completeness flag. */
+	TBool iComplete;
+	
+	/** Attribute manager for handling the attributes for this attachment. */
+	CMsvAttributeManager* iAttributeManager;
+	
+	/** Flag to indicate whether a path needs to be added. */
+	TBool iNeedsPath;
+	};
+
+#endif // __CMSVATTACHMENT_H__