messagingfw/msgsrvnstore/server/inc/MSVCOPY.H
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgsrvnstore/server/inc/MSVCOPY.H	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,193 @@
+// Copyright (c) 1998-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:
+//
+
+#if !defined(__MSVCOPY_H__)
+#define __MSVCOPY_H__
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#endif
+
+#if !defined(__MSVSTD_H__)
+#include <msvstd.h>
+#endif
+
+#include "MSVCMBSE.H"
+
+class CCopyOneFile;
+class CCopyFiles;
+class CMsvServer;
+
+
+//**********************************
+// CMsvCopyEntry
+//**********************************
+//
+//
+//
+
+class CMsvCopyEntry : public CActive
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	static CMsvCopyEntry* NewL(CMsvServer& aServer);
+	~CMsvCopyEntry();
+	//
+	void StartL(TMsvId aOrigEntryId, TMsvId aTargetId, TRequestStatus& aObserverStatus);
+	inline TMsvId NewEntryId() const;
+	//
+private:
+	CMsvCopyEntry(CMsvServer& aServer);
+	void ConstructL();
+	//
+	void Completed(TInt aError);
+	void NextState();
+	void CopyStoreFile();
+	void CopyFolder();
+
+	// from CActive
+	void RunL();
+	void DoCancel();
+
+
+private:
+
+	enum TState {ENotYetStarted=0, EEntryCreated, ECopyingStore, ECopyingFolder, ECompleted };
+
+private:
+	CMsvServer& iServer;
+	TRequestStatus* iObserverStatus;
+	CCopyOneFile* iCopyOneFile;
+	CCopyFiles* iCopyFiles;
+	TState iState;
+	TMsvId iOrigEntryId;
+	TMsvEntry* iNewEntry;
+	
+#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
+	TMsvEntry* iOrigEntry;
+#endif
+
+	TFileName *iFromName;
+	TFileName *iToName;
+	};
+
+
+//**********************************
+// CMsvCopy
+//**********************************
+//
+//
+//
+
+class CMsvCopy : public CActive
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	static CMsvCopy* NewL(CMsvServer& aServer);
+	~CMsvCopy();
+	//
+	void StartL(TMsvId aOrigEntryId, TMsvId aTargetId, TRequestStatus& aObserverStatus, TBool aDescendentCopying);
+	//
+	inline TMsvId NewEntryId() const;
+	inline void DeleteAllOnFailure();
+	//
+private:
+	CMsvCopy(CMsvServer& aServer);
+	void ConstructL();
+	void Completed();
+	void DoRunL(TBool aTopLevel);
+	// from CActive
+	void RunL();
+	void DoCancel();
+	//
+private:
+	CMsvServer& iServer;
+	TRequestStatus* iObserverStatus;
+	TMsvId iOrigTargetId;
+	TMsvId iOrigSourceId;
+	TMsvId iTopLevelId;
+	TMsvId iTempTargetId;
+	TMsvId iTempSourceId;
+	TBool iDescendentCopying;
+	TMsvId iDescendentId;
+	CMsvEntrySelection* iFailedEntryParents;
+	CMsvEntrySelection* iRecursionList;
+	CMsvCopyEntry* iCopyEntry;
+	TInt iError;
+	TBool iDeleteAllOnFailure;
+	};
+
+
+//**********************************
+// CMsvCopyEntries
+//**********************************
+//
+//
+//
+
+class CMsvCopyEntries : public CMsvCopyMoveEntriesBase
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	static CMsvCopyEntries* NewL(CMsvServer& aServer);
+	~CMsvCopyEntries();
+	//
+	inline const CMsvEntrySelection& NewEntryIds() const;
+	//
+private:
+	void DoStartL(TMsvId aSourceId, TMsvId aTargetId, TRequestStatus& aObserverStatus);
+	CMsvCopyEntries();
+	void ConstructL(CMsvServer& aServer);
+	void DoCancel();
+	void RunL();
+	//
+private:
+	CMsvCopy* iCopy;
+	CMsvEntrySelection* iNewEntries;
+	};
+
+
+// inline functions
+
+inline TMsvId CMsvCopyEntry::NewEntryId() const
+	{
+	return iNewEntry->Id();
+	}
+
+inline TMsvId CMsvCopy::NewEntryId() const
+	{
+	return iTopLevelId;
+	}
+
+inline void CMsvCopy::DeleteAllOnFailure()
+	{
+	iDeleteAllOnFailure = ETrue;
+	}
+
+inline const CMsvEntrySelection& CMsvCopyEntries::NewEntryIds() const
+	{
+	return *iNewEntries;
+	}
+
+#endif