messagingfw/sendas/test/sendastestmtm/src/csendastestsendoperation.cpp
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/sendas/test/sendastestmtm/src/csendastestsendoperation.cpp	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,103 @@
+// 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:
+// csendastestsendoperation.cpp
+//
+#include "csendastestsendoperation.h"
+
+#include <mtclbase.h>
+
+#include "tsendastestmtmprogress.h"
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS  
+#include "msvconsts.h"
+#endif
+
+CSendAsTestSendOperation* CSendAsTestSendOperation::NewL(
+								CMsvSession&				aMsvSession,
+								const CMsvEntrySelection&	aSelection, 
+								const TDesC8& 				aParameter, 
+								TRequestStatus& 			aRequestStatus)
+	{
+	CSendAsTestSendOperation* self = new (ELeave) CSendAsTestSendOperation(aMsvSession, aRequestStatus);
+	CleanupStack::PushL(self);
+	self->ConstructL(aSelection, aParameter);
+	CleanupStack::Pop(self);
+	return self;	
+	}
+	
+CSendAsTestSendOperation::~CSendAsTestSendOperation()
+	{
+	}
+
+CSendAsTestSendOperation::CSendAsTestSendOperation(CMsvSession& aMsvSession, TRequestStatus& aRequestStatus)
+: CMsvSendOperation(aMsvSession, aRequestStatus)
+	{
+	}
+	
+void CSendAsTestSendOperation::ConstructL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter)
+	{
+	CMsvOperation* operation = iMsvSession.TransferCommandL(aSelection, KMTMStandardFunctionsSendMessage, aParameter, iStatus);
+	// Ownership of operation passed to base class.
+	Start(operation);
+	}
+
+/*
+ *	Methods from CMsvSendOperation
+ */
+ 
+const TDesC8& CSendAsTestSendOperation::TranslateProgress(const TDesC8& aProgress)
+	{
+	TSendAsTestMtmProgressBuf progress;
+	progress.Copy(aProgress);
+	TSendAsTestMtmProgress pr = progress();
+
+	// Default progress
+	iProgress().iProgressMax = 0;
+	iProgress().iProgress = 0;
+	
+	// Convert the sendas test MTM progress into the standard send progress.
+	if( progress().iError != KErrNone )
+		{
+		iProgress().iState = ESendStateFailed;
+		}
+	else if( progress().iMessageCount == progress().iMessagesDone )
+		{
+		iProgress().iState = ESendStateDone;
+		}
+	else
+		{
+		switch( progress().iState )
+			{
+		case TSendAsTestMtmProgress::ESendAsTestInitSend:
+			{
+			iProgress().iState = ESendStateInPreparation;
+			} break;
+		case TSendAsTestMtmProgress::ESendAsTestSendNext:
+		case TSendAsTestMtmProgress::ESendAsTestSending:
+		case TSendAsTestMtmProgress::ESendAsTestMoving:
+			{
+			iProgress().iState = ESendStateSending;
+			} break;
+		case TSendAsTestMtmProgress::ESendAsTestWaiting:
+		default:
+			iProgress().iState = ESendStateWaitingToSend;	
+			break;			
+			}	
+		}
+	// Set the remaing progress info.
+	iProgress().iError			= progress().iError;
+	iProgress().iProgressMax	= progress().iMessageCount;
+	iProgress().iProgress		= progress().iMessagesDone;
+
+	return iProgress;
+	}