buildverification/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp
changeset 0 9736f095102e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildverification/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp	Tue Jan 26 15:16:33 2010 +0200
@@ -0,0 +1,262 @@
+// 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:
+// This class creates the Gsm sms header and service settings. It fills up the
+// fields using data read from the ini file
+// 
+//
+ 
+#include "Configuration.cfg"
+
+#include "TestMessCreateGsmSmsUtil.h"
+
+/** 
+ Constructor
+*/
+CTestMessCreateGsmSmsUtil::CTestMessCreateGsmSmsUtil(CTestMessBase &aTestStep)
+: 	CTestMessCreateSmsUtilBase(aTestStep)
+	{
+	aTestStep.INFO_PRINTF1(_L("The GSM SMS util is created"));
+	}
+
+/**
+ Prepares the SMS account details for CSendAs/RSendAs
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+void CTestMessCreateGsmSmsUtil::PrepareAccountL(CMsvSession& /*aSession*/)
+	{
+	}
+
+/**
+ Creates the header object for the GSM sms message
+ @param aBodyText - body text of the message
+ @return CSmsHeader* - pointer to CSmsHeader
+ @leave - KErrNoMemory
+ @leave - system wide error codes
+*/
+CSmsHeader* CTestMessCreateGsmSmsUtil::NewHeaderL(CRichText &aBodyText)
+	{
+	return CSmsHeader::NewL(CSmsPDU::ESmsSubmit, aBodyText);
+	}
+
+/**
+ Fills up the header object with the data read from the ini file.
+ @param aSmsHeader - sms header object ofthe sms message
+ @leave - system wide error codes
+*/
+void CTestMessCreateGsmSmsUtil::PrepareHeaderL(CSmsHeader &aSmsHeader)
+	{
+	//	Get bearer data
+	TPtrC	ptrBearer;
+	TBool	returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KBearer, ptrBearer);
+	if ( !returnValue )
+		{
+		//If bearer is not provided, read from the default section of the ini file
+		returnValue=iTestStep.GetStringFromConfig(KDef, KDefBearer, ptrBearer);
+		}
+
+	if ( returnValue )
+		{
+		//default value for Bio message ID type
+		TBioMsgIdType	bearer = EBioMsgIdNbs;
+
+		iTestStep.INFO_PRINTF2(_L("Bearer = %S"), &ptrBearer);
+		if (ptrBearer.CompareF(KBearerWap) == 0)
+			{
+			//Set Wap message ID
+			bearer = EBioMsgIdWap;
+			}
+		else if (ptrBearer.CompareF(KBearerWapSecure) == 0)
+			{
+			//Set WapSecure message ID
+			bearer = EBioMsgIdWapSecure;
+			}
+		else
+			{
+			iTestStep.INFO_PRINTF1(_L("No supported bearer is provided. Default is used"));
+			}
+
+		//Set the Bio message ID type.
+#if (defined CDMA_API_ENABLED)
+		aSmsHeader.BioMessage().SetBioMsgIdType(bearer);
+#else
+		aSmsHeader.SetBioMsgIdType(bearer);
+#endif
+		}
+
+	//	Get encoding data
+	TInt	encoding;
+	returnValue=iTestStep.GetIntFromConfig(iTestStep.ConfigSection(), KEncoding, encoding);
+	if ( !returnValue )
+		{
+		//If encoding is not provied, read it from the default section of the ini file
+		returnValue=iTestStep.GetIntFromConfig(KDef, KDefEncoding, encoding);
+		}
+	if ( returnValue )
+		{
+		iTestStep.INFO_PRINTF2(_L("Encoding = %d"), encoding);
+#if (defined CDMA_API_ENABLED)
+		TSmsCharacterEncoding	charEncoding;
+
+		switch (encoding)
+			{
+		case 7:
+			//7 bit encoding format
+			charEncoding = KSmsEncoding7BitGsm;
+			break;
+		case 8:
+			//8 bit encoding format
+			charEncoding = KSmsEncodingBinary;
+			break;
+		case 16:
+			//Unicode encoding format
+			charEncoding = KSmsEncodingUnicode;
+			break;
+		default:
+			//default encoding format
+			charEncoding = KSmsEncoding7BitGsm;
+			break;
+			}
+
+		//Set the character encoding
+		aSmsHeader.BioMessage().SetEncoding(charEncoding);
+#else
+		TSmsDataCodingScheme::TSmsAlphabet	alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+
+		switch (encoding)
+			{
+		case 7:
+			alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+			break;
+		case 8:
+			alpha = TSmsDataCodingScheme::ESmsAlphabet8Bit;
+			break;
+		case 16:
+			alpha = TSmsDataCodingScheme::ESmsAlphabetUCS2;
+			break;
+		default:
+			alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+			break;
+			}
+
+		CSmsPDU&	pdu=aSmsHeader.Message().SmsPDU();
+		if ( pdu.DataCodingSchemePresent() )
+			{
+			pdu.SetAlphabet(alpha);
+			}
+#endif
+		}
+
+	//	Get delivery report data
+	TPtrC	ptrDeliveryReport;
+	returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KDeliveryReport, ptrDeliveryReport);
+	if ( !returnValue )
+		{
+		returnValue=iTestStep.GetStringFromConfig(KDef, KDefDeliveryReport, ptrDeliveryReport);
+		}
+	if ( returnValue )
+		{
+		TBool	changeDR = EFalse;
+		TBool	deliveryReport = EFalse;
+
+		iTestStep.INFO_PRINTF2(_L("Delivery Report = %S"), &ptrDeliveryReport);
+		if (ptrDeliveryReport.CompareF(_L("NO")) == 0)
+			{
+			changeDR = ETrue;
+			deliveryReport = EFalse;
+			}
+		else if (ptrDeliveryReport.CompareF(_L("YES")) == 0)
+			{
+			changeDR = ETrue;
+			deliveryReport = ETrue;
+			}
+
+		if ( changeDR )
+			{
+#if (defined CDMA_API_ENABLED)
+			aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeDelivery, deliveryReport);
+#else
+			switch ( aSmsHeader.Type() )
+				{
+			case CSmsPDU::ESmsSubmit:
+				aSmsHeader.Submit().SetStatusReportRequest(deliveryReport);
+				break;
+			case CSmsPDU::ESmsCommand:
+				aSmsHeader.Command().SetStatusReportRequest(deliveryReport);
+				break;
+			default:
+				User::Leave(KErrNotSupported);
+				}
+#endif
+			}
+		}
+	}
+/**
+ Sets the fields for the sms account settings using data read from the ini file
+ If no data is given in ini file, the default settings in the account is used.
+ @param aSmsSettings - CSmsSettings reference
+*/
+void CTestMessCreateGsmSmsUtil::SetSmsAccountSettings(CSmsSettings &aSmsSettings)
+	{
+	iTestStep.INFO_PRINTF1(_L("Set SMS account Settings...."));
+	TBool	boolTemp;
+
+	//	Set the Reply quoted setting.
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyQuoted, boolTemp) )
+		{
+		aSmsSettings.SetReplyQuoted(boolTemp);
+		}
+
+	//	Set the Reject duplicate settings.
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KRejectDuplicate, boolTemp) )
+		{
+#if (defined CDMA_API_ENABLED)
+		aSmsSettings.MessageSettings().Gsm().SetRejectDuplicate(boolTemp);
+#else
+		aSmsSettings.SetRejectDuplicate(boolTemp);
+#endif
+		}
+
+	//	Set the option for delivery report.
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KDeliveryReport, boolTemp) )
+		{
+		aSmsSettings.SetDeliveryReport(boolTemp);
+		}
+
+	//	Set the concatenate feature
+	if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KConCatenate, boolTemp) )
+		{
+#if (defined CDMA_API_ENABLED)
+		aSmsSettings.MessageSettings().Gsm().SetCanConcatenate(boolTemp);
+#else
+		aSmsSettings.SetCanConcatenate(boolTemp);
+#endif
+		}
+
+	//	Set whether to use the same path while replying.
+	if(iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyPath, boolTemp))
+		{
+#if (defined CDMA_API_ENABLED)
+		aSmsSettings.MessageSettings().Gsm().SetReplyPath(boolTemp);
+#else
+		aSmsSettings.SetReplyPath(boolTemp);
+#endif
+		}
+
+	//can implement these features later...
+	aSmsSettings.SetValidityPeriod(ESmsVPWeek);	// week 
+	aSmsSettings.SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); //relative
+	aSmsSettings.SetDelivery(ESmsDeliveryImmediately);
+	aSmsSettings.SetMessageConversion(ESmsConvPIDNone);
+	}