diff -r 6beaa9cf4752 -r 4ca382093dae buildverification/autosmoketest/messaging/Src/TestMessCreateSMS.cpp --- a/buildverification/autosmoketest/messaging/Src/TestMessCreateSMS.cpp Mon Feb 22 17:54:00 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,416 +0,0 @@ -// Copyright (c) 2002-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: -// This contains CTestMessCreateSMS. This class creates the sms message -// for GSM or CDMA. For CDMA mtm, it uses utility classes to create -// the respective GSM or CDMA sms message -// -// - - -#include "TestMessCreateSMS.h" -#include "TestMessEditEntryUtil.h" - -//Usage of macros of Cdma mtm -#include "TestMessCreateGsmSmsUtil.h" -#if (defined CDMA_API_ENABLED) -#include "TestMessCreateCdmaSmsUtil.h" -#endif - -// EPOC includes -#include -#include -#include -#include -#include //For CSmsMessageSettings - -/*@{*/ -// Literal constants read from the ini file -_LIT(KRecipients, "recipients"); -_LIT(KTo, "to%d"); -_LIT(KPtSaveDraft, "SaveInDraft"); -_LIT(KDefTo, "smsto"); - -_LIT(KPtMsgBearerGsm, "GSM"); -//Usage of macros for Cdma mtm -#if (defined CDMA_API_ENABLED) -_LIT(KPtMsgBearerType, "MessageBearerType"); -_LIT(KPtMsgBearerCdma, "CDMA"); -#endif -/*@}*/ - -#if (defined CDMA_API_ENABLED) -#define KPtDefaultCount 1 -#endif - -CTestMessCreateSMS::CTestMessCreateSMS() -: CTestMessBase(EFalse) -, iSimInDatabase(EFalse) - { - SetTestStepName(_L("CreateSms")); - } - -/** - Creates the SMS message for GSM or CDMA. - @return TVerdict -*/ - -TVerdict CTestMessCreateSMS::doTestStepPreambleL() - { - TVerdict ret=CTestMessBase::doTestStepPreambleL(); - // IMK iSimInDatabase=(GetPhoneSmsNumberL(iSimPhoneNumber)==KErrNone); - iSimInDatabase=false; //IMK (GetPhoneSmsNumberL(iSimPhoneNumber)==KErrNone); - return ret; - } - -/** - Creates the SMS message for GSM or CDMA. - @return TVerdict -*/ -TVerdict CTestMessCreateSMS::doTestStepL() - { - // Get scheduling data - TTimeIntervalMinutes scheduledTime=ReadScheduleTime(); - - //create the message - TBool saveDraft = EFalse; - GetBoolFromConfig(ConfigSection(), KPtSaveDraft, saveDraft); - - if ( saveDraft ) - { - //Create the message in Draft - CreateSmsL(KMsvDraftEntryId, scheduledTime); - } - else - { - //Creates the message in Outbox - CreateSmsL(KMsvGlobalOutBoxIndexEntryId, scheduledTime); - } - - return TestStepResult(); - } - -void CTestMessCreateSMS::CreateSmsL(const TMsvId aMsvId, TTimeIntervalMinutes aScheduledTime) - { - // Get the bearertype (CDMA/GSM) - TPtrC messageBearerType; - messageBearerType.Set(KPtMsgBearerGsm); -#if (defined CDMA_API_ENABLED) - GetStringFromConfig(ConfigSection(), KPtMsgBearerType, messageBearerType); - INFO_PRINTF2(_L("The message bearertype is : %S"), &messageBearerType); -#endif - - CTestMessCreateSmsUtilBase* createSmsUtil = NULL; - // Create the repective util class - if ( messageBearerType.Compare(KPtMsgBearerGsm)==0 ) - { - createSmsUtil=new (ELeave) CTestMessCreateGsmSmsUtil(*this); - } -#if (defined CDMA_API_ENABLED) - else if ( messageBearerType.Compare(KPtMsgBearerCdma)==0 ) - { - createSmsUtil=new (ELeave) CTestMessCreateCdmaSmsUtil(*this); - } -#endif - else - { - WARN_PRINTF1(_L("Unknown bearer type using Gsm")); - createSmsUtil=new (ELeave) CTestMessCreateGsmSmsUtil(*this); - } - CleanupStack::PushL(createSmsUtil); - -// All references to PrepareAccountL can be removed when DEF054045 is fixed -// createSmsUtil->PrepareAccountL(*iSession); - - if(!iBodyAvailable) - { - ERR_PRINTF1(_L("No Body")); - SetTestStepResult(EFail); - } - - if ( TestStepResult()==EPass ) - { - TInt err=KErrNone; - RSendAs sendAsServer; - User::LeaveIfError(sendAsServer.Connect()); - CleanupClosePushL(sendAsServer); - AddMtmCapabilitiesL(sendAsServer); - - RSendAsMessage sendAs; - TRAP(err, sendAs.CreateL(sendAsServer, KUidMsgTypeSMS)); - PrepareSendAsL(sendAs); - - if ( err!=KErrNone ) - { - SetTestStepError(err); - } - else - { - INFO_PRINTF1(_L("sendAs.SetBodyTextL")); - sendAs.SetBodyTextL(*iBodyText); - -#if (!defined CDMA_API_ENABLED) - TInt recipients=1; - GetIntFromConfig(ConfigSection(), KRecipients, recipients); - - TPtrC to(iSimPhoneNumber.iTelNumber); - TBool returnValue=ETrue; - for ( TInt recipient=0; (recipient tempStore; - tempStore.Format(KTo(), recipient); - returnValue=GetStringFromConfig(ConfigSection(), tempStore, to); - if ( !returnValue ) - { - returnValue=GetStringFromConfig(KDef, KDefTo, to); - } - } - if ( !returnValue ) - { - ERR_PRINTF1(_L("No To")); - SetTestStepResult(EFail); - } - else - { - INFO_PRINTF2(_L("To = %S"), &to); - sendAs.AddRecipientL(to, RSendAsMessage::ESendAsRecipientTo); - } - } -#endif - - TRAP(err, sendAs.SaveMessageAndCloseL()); - if ( err!=KErrNone ) - { - ERR_PRINTF1(_L("Save Message Failiure")); - SetTestStepResult(EFail); - sendAs.Close(); - } - else - { - TMsvId messageId=KMsvNullIndexEntryId; - CMsvEntry* parent=iSession->GetEntryL(KMsvDraftEntryIdValue); - CleanupStack::PushL(parent); - parent->SetSortTypeL(SelectionOrdering()); - CMsvEntrySelection* selection=parent->ChildrenL(); - CleanupStack::PushL(selection); - - if ( selection->Count()>0 ) - { - messageId=selection->At(0); - } - if ( messageId!=KMsvNullIndexEntryId ) - { - SetEntryL(messageId); - TMsvEntry child=EntryL().Entry(); - - //Get the message header - CSmsHeader* smsHeader = createSmsUtil->NewHeaderL(*iBodyText); - CleanupStack::PushL(smsHeader); - - //If message is too big lets concatenate..... - ConCatMessageTextL(*smsHeader); - - CMsvStore* store =NULL; - TRAPD(error, store = EntryL().EditStoreL()); - if(error != KErrNone) - { - ERR_PRINTF2(_L("Edit Store Failed. Error %d"), error); - SetTestStepError(error); - } - else - { - CleanupStack::PushL(store); - smsHeader->RestoreL(*store); -#if (defined CDMA_API_ENABLED) - //Adding the recipients... - CArrayPtrFlat& recips = smsHeader->Recipients(); - - TInt recipients=KPtDefaultCount; - GetIntFromConfig(ConfigSection(), KRecipients, recipients); - - TBool returnValue; - for ( TInt recipient=1; recipient<=recipients; recipient++) - { - TBuf tempStore; - - tempStore.Format(KTo(), recipient); - - TPtrC to; - returnValue=GetStringFromConfig(ConfigSection(), tempStore, to); - if ( !returnValue ) - { - returnValue=GetStringFromConfig(KDef, KDefTo, to); - } - if ( !returnValue ) - { - ERR_PRINTF1(_L("No To")); - SetTestStepResult(EFail); - } - else - { - INFO_PRINTF2(_L("To = %S"), &to); - - //Get the recipient array - CSmsNumber* newRecip = CSmsNumber::NewL(); - CleanupStack::PushL(newRecip); - - // Check for the email address in recipient - // This is for email over sms feature - if(to.Locate('@') != KErrNotFound) - { - newRecip->SetAddressL(to, EMsvAddressTypeEMail); - } - else - { - newRecip->SetAddressL(to, EMsvAddressTypeISDN); - } - - //Append the recipients - recips.AppendL(newRecip); - CleanupStack::Pop(newRecip); - } - } -#endif - child.SetSendingState(KMsvSendStateSuspended); - child.SetInPreparation(EFalse); - child.SetVisible(ETrue); - - //Get the details - TBuf details; - -//Usage of macros of Cdma mtm -#if (!defined CDMA_API_ENABLED) - if ( TSmsUtilities::GetDetails(EntryL().Session().FileSession(), smsHeader->Message(), details) == KErrNone ) - { - child.iDetails.Set(details); - } -#else - //if ( TSmsUtilities::GetDetails(EntryL().Session().FileSession(), smsHeader->Message(), details) == KErrNone ) - CArrayPtrFlat& smsNumberArray = smsHeader->Recipients(); - if ( smsNumberArray.Count() ) - { - details.Copy(smsNumberArray[0]->Address()); - } - if ( details.Length() ) - { - child.iDetails.Set(details); - } -#endif - - //Get the description - TBuf desc; - if ( TSmsUtilities::GetDescription(smsHeader->Message(), desc) == KErrNone ) - { - child.iDescription.Set(desc); - } - - //fill up the fields of the message header - PrepareHeaderL(*createSmsUtil, *smsHeader); - - //set the scheduled time if any - if ( aScheduledTime!=TTimeIntervalMinutes(0) ) - { - child.SetSendingState(KMsvSendStateScheduled); - child.SetScheduled(ETrue); - child.iDate.UniversalTime(); - child.iDate+=aScheduledTime; - } - - // Update entry with data set from .ini file - EntryL().ChangeL(child); - smsHeader->StoreL(*store); - store->CommitL(); - CleanupStack::PopAndDestroy(store); - - CTestMessEditEntryUtil* editUtil=new (ELeave) CTestMessEditEntryUtil(*this, ETrue, iSimInDatabase, iSimPhoneNumber); - CleanupStack::PushL(editUtil); - editUtil->ProcessEntryL(EntryL().EntryId()); - CleanupStack::PopAndDestroy(editUtil); - - if ( aMsvId==KMsvGlobalOutBoxIndexEntryId ) - { - // Move the selected message to out box - CTestActive* active=CTestActive::NewLC(*this); - CMsvOperation* op=parent->MoveL(child.Id(), KMsvGlobalOutBoxIndexEntryIdValue, active->iStatus); - CleanupStack::PushL(op); - active->Activate(); - CActiveScheduler::Start(); - CleanupStack::PopAndDestroy(2, active); - } - } - CleanupStack::PopAndDestroy(smsHeader); - } - CleanupStack::PopAndDestroy(2, parent); - } - } - - CleanupStack::PopAndDestroy(&sendAsServer); - } - CleanupStack::PopAndDestroy(createSmsUtil); - } - -void CTestMessCreateSMS::AddMtmCapabilitiesL(RSendAs& aSendAs) - { - aSendAs.ResetMessageFilter(); - } - -void CTestMessCreateSMS::PrepareSendAsL(RSendAsMessage& /*aSendAs*/) - { - } - -void CTestMessCreateSMS::PrepareHeaderL(CTestMessCreateSmsUtilBase& aCreateUtil, CSmsHeader& aSmsHeader) - { - aCreateUtil.PrepareHeaderL(aSmsHeader); - } - -//Usage of macro for CDMA mtm -#if (defined CDMA_API_ENABLED) -void CTestMessCreateSMS::ConCatMessageTextL(CSmsHeader& /*aHeader*/) - { - } -#else -void CTestMessCreateSMS::ConCatMessageTextL(CSmsHeader& aHeader) - //Doxygen compatible comments - /** - This method Concatenates the long message. Checks for the length of - body, if it is greater than 160 characters sets the concatenation - option on for the Sms. - - @param aHeader - Header for which the concatenation option is set on... - - */ - { - CSmsSettings* smsSettings = CSmsSettings::NewL(); - CleanupStack::PushL(smsSettings); - //if the length of the iBodyText is greater than the sms maximum length - //i.e 160 chars...Set the Concatenation On.... - if( aHeader.Message().MessageLengthL() > aHeader.Message().MaxMessageLength() ) - { - INFO_PRINTF1(_L("Concatenate Message...")); - INFO_PRINTF1(_L("Message Exceeds max length setting Concatenate On...")); - aHeader.GetSmsSettingsL(*smsSettings); - smsSettings->SetCanConcatenate(ETrue); - aHeader.SetSmsSettingsL(*smsSettings); - } - CleanupStack::PopAndDestroy(smsSettings); - } -#endif