diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/msgtestfw/TestActions/Sms/src/CMtfTestActionCreateEmailOverSmsMessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/TestActions/Sms/src/CMtfTestActionCreateEmailOverSmsMessage.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,201 @@ +// 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: +// __ACTION_INFO_BEGIN__ +// [Action Name] +// CreateEmailOverSmsMessage +// [Action Parameters] +// Session : Reference to the session. +// ParentId : Value of the parent id. +// ServiceId : Value of the the service id. +// (ConfigIndexHeader) : Value of config index for SMS header settings. Default is 0. +// MessageId : Value of the created message id. +// [Action Description] +// Creates a message on the specified parent. +// [APIs Used] +// TMsvEntry::iMtm +// TMsvEntry::iServiceId +// TMsvEntry::iDate +// TMsvEntry::Id +// CMsvEntry::SetEntryL +// CMsvEntry::CreateL +// CSmsHeader::NewL +// CSmsHeader::StoreL +// __ACTION_INFO_END__ +// +// + +// +#include "CMtfTestActionCreateEmailOverSmsMessage.h" +#include "CMtfTestCase.h" +#include "CMtfTestActionParameters.h" +#include "CMtfTestActionUtilsConfigFileParser.h" +#include +#include +#include +#include +#include + + +_LIT(KSentToAddress, "SentToAddress"); +_LIT(KBodyText, "BodyText"); + +CMtfTestAction* CMtfTestActionCreateEmailOverSmsMessage::NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters) + { + CMtfTestActionCreateEmailOverSmsMessage* self = new (ELeave) CMtfTestActionCreateEmailOverSmsMessage(aTestCase); + CleanupStack::PushL(self); + self->ConstructL(aActionParameters); + CleanupStack::Pop(self); + return self; + } + + +CMtfTestActionCreateEmailOverSmsMessage::CMtfTestActionCreateEmailOverSmsMessage(CMtfTestCase& aTestCase) + : CMtfSynchronousTestAction(aTestCase) + { + } + +void CMtfTestActionCreateEmailOverSmsMessage::ExecuteActionL() + { + TestCase().Logger().Write(_L("CMtfTestActionCreateEmailOverSmsMessage::ExecuteActionL IN")); + TInt paramCount = ActionParameters().Count(); + if( paramCount != 5) + { + User::Leave(KErrArgument); + } + + CMsvSession* paramSession = ObtainParameterReferenceL(TestCase(),ActionParameters().Parameter(0)); + TMsvId paramParentId = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(1)); + TMsvId paramServiceId = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(2)); + + + TMsvEntry indexEntry; + indexEntry.iType = KUidMsvMessageEntry; + indexEntry.iMtm = KUidMsgTypeSMS; + indexEntry.iServiceId = paramServiceId; + indexEntry.SetVisible(ETrue); + indexEntry.iDate.HomeTime(); + indexEntry.iSize=0; + + _LIT(KNullDesC, "" ); + indexEntry.iDescription.Set(KNullDesC); + indexEntry.iDetails.Set(KNullDesC); + + indexEntry.SetSendingState(KMsvSendStateWaiting); + indexEntry.SetInPreparation(ETrue); + + CMsvEntry* entry = paramSession->GetEntryL(paramParentId); + CleanupStack::PushL(entry); + entry->CreateL(indexEntry); + TMsvId paramMessageId = indexEntry.Id(); + paramSession->CleanupEntryPushL(paramMessageId); + entry->SetEntryL(paramMessageId); + + InitializeHeaderFromConfigL(&indexEntry , entry); + + paramSession->CleanupEntryPop(); + CleanupStack::PopAndDestroy(entry); + + StoreParameterL(TestCase(),paramMessageId,ActionParameters().Parameter(4)); + + TestCase().Logger().Write(_L("CMtfTestActionCreateEmailOverSmsMessage::ExecuteActionL OUT")); + TestCase().ActionCompletedL(*this); + } + + +void CMtfTestActionCreateEmailOverSmsMessage::InitializeHeaderFromConfigL(TMsvEntry* indexEntry, CMsvEntry* aEntry) + { + TInt paramConfigIndexHeader = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(3),0); + TPtrC smsMessageFileName = TestCase().GetConfigurationFileL(CMtfConfigurationType::EMtfSmsMessage,paramConfigIndexHeader); + CMtfTestActionUtilsConfigFileParser* configParser = CMtfTestActionUtilsConfigFileParser::NewL(smsMessageFileName); + CleanupStack::PushL(configParser); + + CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL(); + CleanupStack::PushL(paraFormatLayer); + + CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL(); + CleanupStack::PushL(charFormatLayer); + + CRichText* richText = CRichText::NewL(paraFormatLayer,charFormatLayer); + CleanupStack::PushL(richText); + + CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *richText); + CleanupStack::PushL(header); + + + + CSmsEmailFields* emailFields = CSmsEmailFields::NewL(); + CleanupStack::PushL(emailFields); + + _LIT( KEmailToAddress, "EmailToAddress" ); + TPtrC emailToAddressText; + if(configParser->GetFieldAsString(KEmailToAddress, emailToAddressText) != KErrNotFound) + { + indexEntry->iDetails.Set(emailToAddressText); + emailFields->AddAddressL( emailToAddressText ); + } + + + _LIT( KSubject, "Subject" ); + TPtrC subjectText; + if(configParser->GetFieldAsString(KSubject, subjectText) != KErrNotFound) + { + indexEntry->iDescription.Set( subjectText ); + emailFields->SetSubjectL( subjectText ); + } + + + header->SetEmailFieldsL(*emailFields); + + + //header->SetServiceCenterAddressL(KServiceCentre); //????? + //header->SetSmsSettingsL(ServiceSettings()); //????? + + + CleanupStack::PopAndDestroy(emailFields); + + CMsvStore* store = aEntry->EditStoreL(); + CleanupStack::PushL(store); + + TPtrC toAddress; + if(configParser->GetFieldAsString(KSentToAddress,toAddress) != KErrNotFound) + { + CArrayPtrFlat& recipientList = header->Recipients(); + CSmsNumber* recipient = CSmsNumber::NewL(); + CleanupStack::PushL(recipient); + recipient->SetAddressL(toAddress); + CleanupStack::Pop(recipient); + recipientList.AppendL(recipient); + } + TestCase().Logger().WriteFormat(_L("CMtfTestActionCreateEmailOverSmsMessage:: recipient: %S"), &toAddress); + + TPtrC bodyText; + if(configParser->GetFieldAsString(KBodyText, bodyText) != KErrNotFound) + { + richText->InsertL(0, bodyText); + } + + + TestCase().Logger().WriteFormat(_L("CMtfTestActionCreateEmailOverSmsMessage:: body text: %S"), &bodyText); + + header->StoreL(*store); + store->StoreBodyTextL(*richText); + store->CommitL(); + + indexEntry->SetInPreparation(EFalse); + aEntry->ChangeL(*indexEntry); + + + CleanupStack::PopAndDestroy(6, configParser); + } +