messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionSetImap4ServiceParameters.cpp
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionSetImap4ServiceParameters.cpp	Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,170 @@
+// Copyright (c) 2003-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:
+// __ACTION_INFO_BEGIN__ 
+// [Action Name]
+// SetImap4ServiceParameters
+// [Action Parameters]
+// Session                   <input>: Reference to the session.
+// ServiceId                 <input>: Value of the Imap4 service id.
+// (ConfigIndexSettingsFile) <input>: Value of config index for settings file. Default is 0. 
+// [Action Description]
+// Sets parameters of Imap4 service.
+// [APIs Used]
+// CMsvEntry::SetEntryL
+// CMsvEntry::EditStoreL
+// CImImap4Settings::Reset
+// CImImap4Settings::SetServerAddressL
+// CImImap4Settings::SetLoginNameL
+// CImImap4Settings::SetPasswordL
+// CImImap4Settings::SetAutoSendOnConnect
+// CImImap4Settings::StoreL
+// CMsvStore::CommitL
+// __ACTION_INFO_END__
+// 
+//
+
+/**
+ @file
+*/
+
+
+#include  <cemailaccounts.h>
+
+#include <msvapi.h>
+#include <imapset.h>
+#include <iapprefs.h>
+
+#include "CMtfTestActionSetImap4ServiceParameters.h"
+#include "CMtfTestCase.h"
+#include "CMtfTestActionParameters.h"
+#include "CMtfConfigurationType.h"
+#include "CMtfTestActionUtilsImapScripts.h"
+#include "CMtfTestActionUtilsConfigFileMachineName.h"
+
+_LIT(KServerName,	"ServerName");
+_LIT(KEmailAddressExtension, "EmailAddressExtension");
+_LIT(KLoginName,	"LoginName"); 
+_LIT(KPassword,		"Password");  
+_LIT(KFolderPath,	"FolderPath"); 
+_LIT(KEmailDeleteFlag,	"DeleteEmailWhenDisconnected");
+_LIT(KAutoSendFlag, "AutoSendFlag");
+_LIT(KImapSearchString,"ImapSearchString");
+
+CMtfTestAction* CMtfTestActionSetImap4ServiceParameters::NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters)
+	{
+	CMtfTestActionSetImap4ServiceParameters* self = new (ELeave) CMtfTestActionSetImap4ServiceParameters(aTestCase);
+	CleanupStack::PushL(self);
+	self->ConstructL(aActionParameters);
+	CleanupStack::Pop();
+	return self;
+	}
+	
+
+CMtfTestActionSetImap4ServiceParameters::CMtfTestActionSetImap4ServiceParameters(CMtfTestCase& aTestCase)
+	: CMtfSynchronousTestAction(aTestCase)
+	{
+	}
+
+
+CMtfTestActionSetImap4ServiceParameters::~CMtfTestActionSetImap4ServiceParameters()
+	{
+	delete iParser;
+	}
+
+
+
+void CMtfTestActionSetImap4ServiceParameters::ExecuteActionL()
+	{
+	TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionSetImap4ServiceParameters);
+	CMsvSession* paramSession = ObtainParameterReferenceL<CMsvSession>(TestCase(),ActionParameters().Parameter(0));
+	TMsvId paramServiceId = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(1));
+	TInt paramConfigIndex = ObtainValueParameterL<TInt>(TestCase(),ActionParameters().Parameter(2),0);
+
+	CImImap4Settings* settings = new(ELeave) CImImap4Settings();
+	CleanupStack::PushL(settings);
+	TPtrC fileName = TestCase().GetConfigurationFileL(CMtfConfigurationType::EMtfImap4Settings,paramConfigIndex);
+	iParser = CMtfTestActionUtilsConfigFileParser::NewL(fileName);
+	
+	settings->Reset();
+
+	TPtrC serverName;
+	User::LeaveIfError(iParser->GetFieldAsString(KServerName,serverName));
+	settings->SetServerAddressL(serverName);
+
+	CMtfTestActionUtilsConfigFileMachineName* machineNameFile = NULL;
+
+	TPtrC emailAddressExtension;
+	if (iParser->GetFieldAsString(KEmailAddressExtension, emailAddressExtension) == KErrNone)
+		{
+		machineNameFile = CMtfTestActionUtilsConfigFileMachineName::NewLC(emailAddressExtension);
+		}
+	else
+		{
+		machineNameFile = CMtfTestActionUtilsConfigFileMachineName::NewLC(serverName);
+		}
+
+	TPtrC8 machineName(machineNameFile->MachineName());
+
+	TPtrC8 loginName;
+	if(iParser->GetFieldAsString8(KLoginName,loginName)==KErrNone)
+		{
+		settings->SetLoginNameL(loginName);	
+		}
+	else
+		{
+		settings->SetLoginNameL(machineName);	
+		}
+
+	TPtrC8 password;
+	if(iParser->GetFieldAsString8(KPassword,password)==KErrNone)
+		{
+		settings->SetPasswordL(password);	
+		}
+	else
+		{
+		settings->SetPasswordL(machineName);	
+		}
+
+	TPtrC8 folderPath;
+	TInt err = iParser->GetFieldAsString8(KFolderPath,folderPath);
+	if (err == KErrNone)
+		settings->SetFolderPathL(folderPath);
+	
+	TPtrC8 imapSearchString;
+	err = iParser->GetFieldAsString8(KImapSearchString,imapSearchString);
+	if (err == KErrNone)
+		settings->SetSearchStringL(imapSearchString);
+
+	TInt emailDeleteFlag;
+	err = iParser->GetFieldAsInteger(KEmailDeleteFlag,emailDeleteFlag);
+	if (err == KErrNone)
+		settings->SetDeleteEmailsWhenDisconnecting(emailDeleteFlag);
+
+	TInt autoSendFlag;
+	err = iParser->GetFieldAsInteger(KAutoSendFlag,autoSendFlag);
+	if (err == KErrNone)
+		settings->SetAutoSendOnConnect(autoSendFlag);	
+	
+ 	CEmailAccounts* accounts = CEmailAccounts::NewLC();
+ 	TImapAccount imapAccount;
+ 	accounts->GetImapAccountL(paramServiceId, imapAccount);
+ 	accounts->SaveImapSettingsL(imapAccount, *settings);
+ 	//Pop and destroy settings, machineNameFile and accounts
+	CleanupStack::PopAndDestroy(3, settings);    
+	
+	TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionSetImap4ServiceParameters);	
+	
+	TestCase().ActionCompletedL(*this);
+	}
+