emailservices/emailstore/message_store/client/api/MsgStoreMessagePart.h
changeset 0 8466d47a6819
child 8 e1b6206813b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/emailstore/message_store/client/api/MsgStoreMessagePart.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2006 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:  Message store multipart message support.
+*
+*/
+
+
+
+#ifndef __MSG_STORE_MESSAGE_PART_H__
+#define __MSG_STORE_MESSAGE_PART_H__
+
+//<cmail>
+#include "MsgStoreTypes.h"
+#include "MsgStorePropertyContainerWithContent.h"
+//</cmail>
+
+class CMsgStoreMessage;
+
+/** This class represents a part of a message */
+class CMsgStoreMessagePart : public CMsgStorePropertyContainerWithContent
+	{
+	public:
+
+        /** check if this part contains any child parts */
+		//IMPORT_C TBool IsMultiPart();
+
+        /** Adds a child part to this part 
+
+            /param aProperties the headers of the newly added part
+            /param aContentFilenams optional parameter that contains the name of the content/attachment file.
+            
+            /note This method leaves with KErrNotSupported if it is NOT multi-part, i.e. this part
+            already has content.
+         */
+		IMPORT_C CMsgStoreMessagePart* AddChildPartL( const CMsgStorePropertyContainer& aProperties,
+                                                      const TDesC& aContentFilename = KNullDesC      );
+//cmail
+		
+        /** Adds a child part to this part and set the content to the same content stored in the input file handle
+
+            /param aProperties the headers of the newly added part
+            /param aFile file handle that contains the content.
+//cmail
+                   NOTE 1: RFs.ShareProtected() must have been called before calling this method.
+                   NOTE 2: Ownersip of the file handle is transferred to this method.
+//~cmail
+            
+            /note This method leaves with KErrNotSupported if it is NOT multi-part, i.e. this part
+            already has content.
+         */
+		IMPORT_C CMsgStoreMessagePart* AddChildPartL( const CMsgStorePropertyContainer& aProperties,
+                                                      RFile& aFile );
+
+//~cmail
+		
+        /** Adds an embedded message to this part 
+         * 
+            /param aProperties the headers of the newly added part
+            /note This method leaves with KErrNotSupported if it is NOT multi-part, i.e. this part
+            already has content.
+         */
+		IMPORT_C CMsgStoreMessage* AddChildMessageL( CMsgStorePropertyContainer& aProperties );
+
+		/** Copies an attachment from one message to another message.
+			
+			This function copies an an attachment, including the properties and content, from one
+			message to another message.  This function will leave with KErrNotFound if the specified
+			message is not found in the source folder or if the destination message is not found in
+			the destination folder.
+	
+            KMsgStoreInvalidId may be passed for the destination folder ID if there is no desire to 
+            check the source folder.
+            
+			ECapabilityWriteUserData is required to use this function.		
+			
+			\param aNewParentId the destination parent, either a message or a part	
+			
+			\retval Returns the ID of the new message.
+	
+		    \note Only works if the store is in an authenticated state, otherwise this function leaves
+		          with KErrNotReady.
+		*/		
+		IMPORT_C TMsgStoreId CopyChildPartL( TMsgStoreId aPartId,
+		                                      TMsgStoreId aNewParentId );
+		
+        /** Removes a child part from this part 
+            \param aRecursive if true, recursively search into the tree 
+         */
+		IMPORT_C void RemoveChildPartL( TMsgStoreId aPartId, TBool aRecursive = EFalse );
+
+        /** gets a child part fo this part 
+            \param aRecursive if true, recursively search into the tree 
+         */
+		IMPORT_C CMsgStoreMessagePart* ChildPartL( TMsgStoreId aPartId, TBool aRecursive = EFalse  );
+
+        /** list all the child part to this part 
+            /note This method leaves with KErrNotSupported if it is NOT multi-part.
+        */
+		IMPORT_C void ChildPartsL( RPointerArray<CMsgStoreMessagePart>& aParts );
+		
+        /** flag that indicates whether this part is actually a message.
+            /note This method can be used to check if a child part is actually 
+                  an embedded message, if it is, than it is safe to cast
+                  this part to CMsgStoreMessage.  This can avoid run-time
+                  type checking.
+        */
+		IMPORT_C TBool IsEmbeddedMessageL();
+
+		// ---------------------------
+		// INTERNAL USE (NOT EXPORTED)
+		// ---------------------------
+		
+		static CMsgStoreMessagePart* NewL( CMsgStoreSessionContext& aSessionContext, 
+									       TMsgStoreId              aId, 
+									       TMsgStoreId              aParentId, 
+									       TMsgStoreId              aMailBoxId,
+									       const TDesC8&            aPropertiesBuf );
+
+	protected:
+	
+		CMsgStoreMessagePart( CMsgStoreSessionContext& aSessionContext, TMsgStoreId aId, TMsgStoreId aParentId, TMsgStoreId aMailBoxId ); 
+	
+		void ConstructL( const TDesC8& aPropertiesBuf );
+		
+	}; // end CMsgStoreMessagePart
+		
+#endif // __MESSAGE_STORE_CLIENT_H__