--- 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.