mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP
branchRCL_3
changeset 9 1d7827e39b52
parent 0 72b543305e3a
child 14 c6838af47512
--- a/mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP	Tue Feb 02 00:08:43 2010 +0200
+++ b/mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP	Fri Feb 19 22:47:38 2010 +0200
@@ -819,20 +819,13 @@
 	{
 	__ASSERT_DEBUG(iMsvEntry,Panic(ESmscEntryNotSet));
 
-	RestoreServiceAndSettingsL();
-
-	ResetHeader();
-	Body().Reset();
 	CMsvStore* msvstore=iMsvEntry->ReadStoreL();
 	CleanupStack::PushL(msvstore);
 	switch (iMsvEntry->Entry().iType.iUid)
 		{
 		case KUidMsvServiceEntryValue:
 			{
-			CSmsAccount* account = CSmsAccount::NewLC();
-			// just v2
-			account->LoadSettingsL(*iServiceSettings);
-			CleanupStack::PopAndDestroy(account);    
+			RestoreServiceAndSettingsL();
 			break;
 			}
 		case KUidMsvFolderEntryValue:
@@ -841,6 +834,9 @@
 			}
 		case KUidMsvMessageEntryValue:
 			{
+			ResetHeader();
+			Body().Reset();
+			
 			CSmsHeader* smsheader=CSmsHeader::NewL(CSmsPDU::ESmsSubmit,Body());
 			CleanupStack::PushL(smsheader);
 			smsheader->RestoreL(*msvstore);
@@ -1539,6 +1535,46 @@
 		}
  	}
 
+
+
+/** 
+Creates a new outgoing SMS message entry as a child of the current context.
+
+Used by CSendAs::CreateMessageL to create an outgoing SMS message.
+
+@param	
+The entry with the required fields set.
+
+*/
+EXPORT_C void CSmsClientMtm::CreateMessageL(TMsvEntry& aEntry)
+	{
+	RestoreServiceAndSettingsL();
+
+ 	aEntry.SetVisible(EFalse);
+ 	aEntry.SetInPreparation(ETrue);
+ 	aEntry.iDate.UniversalTime();
+ 	
+ 	// store entry in folder
+ 	iMsvEntry->CreateL(aEntry);
+ 	SwitchCurrentEntryL(aEntry.Id());
+ 	// End of fix
+
+	delete iSmsHeader;
+	iSmsHeader=NULL;
+	iSmsHeader=CSmsHeader::NewL(CSmsPDU::ESmsSubmit,Body());
+	iSmsHeader->SetSmsSettingsL(*iServiceSettings);
+
+	// service centre was not being set 
+	TInt defaultSC = iServiceSettings->DefaultServiceCenter();
+	if(defaultSC > -1)
+		{
+		if (iServiceSettings->ServiceCenterCount() > defaultSC )
+			{
+			iSmsHeader->SetServiceCenterAddressL( iServiceSettings->GetServiceCenter(defaultSC).Address() );	
+			}
+		}
+ 	}
+
 /**
 Resets the current SMS message.