diff -r 4697dfb2d7ad -r 1d7827e39b52 mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP --- 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.