void CTextMtmClient::SaveMessageL() // Store entry data // If it is a service entry, store the current settings. Otherwise it has to be // a message. // { __ASSERT_DEBUG(iMsvEntry!=NULL,gPanic(ETxtcNoCMsvEntrySet)); // get an editable message store CMsvStore* store = iMsvEntry->EditStoreL(); CleanupStack::PushL(store); switch (iMsvEntry->Entry().iType.iUid) { case KUidMsvServiceEntryValue: iSettings->SaveSettingsL(iMsvEntry->Entry().Id(), iTxtSettings); break; case KUidMsvMessageEntryValue: StoreBodyL(*store); break; default: __ASSERT_DEBUG(EFalse, gPanic(ETxtcEntryTypeNotSupported)); break; } store->CommitL(); CleanupStack::PopAndDestroy(); // store }
void CheckNoAttachmentsL() { CDummyObserver* ob1 = new(ELeave) CDummyObserver; CleanupStack::PushL(ob1); CMsvSession* session = CMsvSession::OpenSyncL(*ob1); CleanupStack::PushL(session); CMsvEntry* cEntry = CMsvEntry::NewL(*session, KMsvDraftEntryId, TMsvSelectionOrdering(KMsvNoGrouping,EMsvSortByNone,ETrue)); CleanupStack::PushL(cEntry); CMsvEntrySelection* selection = cEntry->ChildrenL(); CleanupStack::PushL(selection); test(selection->Count() == 1); cEntry->SetEntryL((*selection)[0]); if (cEntry->HasStoreL()) { CMsvStore* store = cEntry->ReadStoreL(); CleanupStack::PushL(store); MMsvAttachmentManager& attachmentMgr = store->AttachmentManagerL(); test(attachmentMgr.AttachmentCount() == 0); CleanupStack::PopAndDestroy(store); } CleanupStack::PopAndDestroy(4, ob1); // selection, cEntry, session, ob1 }
void CMtfTestActionCompareAttachment::ExecuteActionL() { TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionCompareAttachment); CMsvSession* paramSession = ObtainParameterReferenceL<CMsvSession>(TestCase(),ActionParameters().Parameter(0)); TMsvId messageEntry = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(1)); TMsvAttachmentId attachId = ObtainValueParameterL<TMsvAttachmentId>(TestCase(),ActionParameters().Parameter(2)); HBufC* dataFilePath = ObtainParameterReferenceL<HBufC>(TestCase(),ActionParameters().Parameter(3)); CMsvEntry* entry = paramSession->GetEntryL(messageEntry); CleanupStack::PushL(entry); CMsvStore* store = entry->ReadStoreL(); CleanupStack::PushL(store); MMsvAttachmentManager& manager = store->AttachmentManagerL(); RFile fileAttachment = manager.GetAttachmentFileL(attachId); CleanupClosePushL(fileAttachment); CompareFileL(fileAttachment, *dataFilePath); CleanupStack::PopAndDestroy(&fileAttachment); CleanupStack::PopAndDestroy(2, entry); // store, entry TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionCompareAttachment); TestCase().ActionCompletedL(*this); }
void CMtfTestActionAddAttachmentAsLink::RunTestL() { CMsvStore* paramStore = ObtainParameterReferenceL<CMsvStore>(TestCase(),ActionParameters().Parameter(0)); HBufC* paramFilePath = ObtainParameterReferenceL<HBufC>(TestCase(),ActionParameters().Parameter(1)); HBufC8* paramMimeType = ObtainParameterReferenceL<HBufC8>(TestCase(),ActionParameters().Parameter(2)); CMtfAsyncWaiter* waiter = CMtfAsyncWaiter::NewL(); CleanupStack::PushL(waiter); CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvLinkedFile); CleanupStack::PushL(attachment); attachment->SetMimeTypeL(*paramMimeType); TParse fileNameParser; User::LeaveIfError(fileNameParser.Set(*paramFilePath, NULL, NULL)); attachment->SetAttachmentNameL(fileNameParser.NameAndExt()); MMsvAttachmentManager& manager = paramStore->AttachmentManagerL(); manager.AddLinkedAttachmentL(*paramFilePath, attachment, waiter->iStatus); CleanupStack::Pop(attachment); // ownership passed to manager waiter->StartAndWait(); User::LeaveIfError(waiter->Result()); CleanupStack::PopAndDestroy(waiter); TMsvAttachmentId attachmentId = attachment->Id(); paramStore->CommitL(); StoreParameterL<TMsvAttachmentId>(TestCase(),attachmentId,ActionParameters().Parameter(3)); }
void CMtfTestActionGetAttachmentFileFromIndex::RunTestActionL() { CMsvSession* paramSession = ObtainParameterReferenceL<CMsvSession>(TestCase(),ActionParameters().Parameter(0)); TMsvId messageEntry = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(1)); TInt attachIndex = ObtainValueParameterL<TInt>(TestCase(),ActionParameters().Parameter(2)); HBufC* dataFilePath = ObtainParameterReferenceL<HBufC>(TestCase(),ActionParameters().Parameter(3), NULL); CMsvEntry* entry = paramSession->GetEntryL(messageEntry); CleanupStack::PushL(entry); CMsvStore* store = entry->ReadStoreL(); CleanupStack::PushL(store); MMsvAttachmentManager& manager = store->AttachmentManagerL(); RFile fileAttachment = manager.GetAttachmentFileL(attachIndex); CleanupClosePushL(fileAttachment); if( dataFilePath != NULL ) { // check of contents of attachment file is requested CompareFileL(fileAttachment, *dataFilePath); } CleanupStack::PopAndDestroy(3, entry); // fileAttachment, store, entry }
void CAddObexAttachmentAsEntryState::StartL(TRequestStatus& aStatus) { // Add an attachment as a child entry CBaseMtm& clientMtm = iClientTest.ObexTestUtils().GetCurrentObexClientMtm(); CMsvEntry& entry = clientMtm.Entry(); CMsvStore* store = entry.EditStoreL(); CleanupStack::PushL(store); CAsyncWaiter* waiter = CAsyncWaiter::NewL(); CleanupStack::PushL(waiter); CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachment); TParse fileNameParser; User::LeaveIfError(fileNameParser.Set(iFileName, NULL, NULL)); attachment->SetAttachmentNameL(fileNameParser.NameAndExt()); store->AttachmentManagerL().AddAttachmentL(iFileName, attachment, waiter->iStatus); CleanupStack::Pop(attachment); waiter->StartAndWait(); User::LeaveIfError(waiter->Result()); CleanupStack::PopAndDestroy(waiter); store->CommitL(); CleanupStack::PopAndDestroy(store); TRequestStatus* status = &aStatus; User::RequestComplete(status, KErrNone); }
// --------------------------------------------------------- // // --------------------------------------------------------- void CMmsAttachmentHandler::RemoveAttachmentL( TMsvAttachmentId aAttaId, CMsvStore& aStore ) { MMsvAttachmentManager& attaMan = aStore.AttachmentManagerL(); MMsvAttachmentManagerSync& attaManSync = aStore.AttachmentManagerExtensionsL(); // can only remove synchronously if index is known. TInt count = attaMan.AttachmentCount(); TInt i = count - 1; TBool found = EFalse; while ( i >= 0 && !found ) { CMsvAttachment* attachmentInfo = attaMan.GetAttachmentInfoL( i ); CleanupStack::PushL( attachmentInfo ); if ( attachmentInfo->Id() == aAttaId ) { found = ETrue; } else { i--; } CleanupStack::PopAndDestroy( attachmentInfo ); attachmentInfo = NULL; } if ( i >= 0 && found ) { attaManSync.RemoveAttachmentL( i ); } }
// --------------------------------------------------------- // CUniObjectList::EnsureAllObjectsHaveContentLocationL // // EnsureAllObjectsHaveContentLocationL // --------------------------------------------------------- // EXPORT_C void CUniObjectList::EnsureAllObjectsHaveContentLocationL() { CMsvStore* store = iMtm.Entry().EditStoreL(); CleanupStack::PushL( store ); MMsvAttachmentManager& manager = store->AttachmentManagerL(); MMsvAttachmentManagerSync& managerSync = store->AttachmentManagerExtensionsL(); TBool commit( EFalse ); TInt a = iObjectArray->Count(); while ( a-- ) { CUniObject* obj = iObjectArray->At( a ); if ( !obj->MimeInfo()->ContentLocation().Length() && obj->AttachmentId( ) ) { CMsvAttachment* attachment = manager.GetAttachmentInfoL( obj->AttachmentId() ); CleanupStack::PushL( attachment ); TParsePtrC parse( obj->MediaInfo()->FullFilePath() ); TPtrC nameAndExt( parse.NameAndExt() ); obj->MimeInfo()->EnsureContentLocationL( manager, *attachment, nameAndExt ); managerSync.ModifyAttachmentInfoL( attachment ); CleanupStack::Pop( attachment ); commit = ETrue; } } if ( commit ) { store->CommitL(); } CleanupStack::PopAndDestroy( store ); }
/** Schedules aMessage on the schedule referred to by aRef. Updates the message entry and the schedule data using the utility function UpdateEntryAfterSchedule(). @see CMsvScheduleSend::UpdateEntryAfterSchedule @param aMessage The message to be scheduled. @param aFinalState The sending state to set to the messages to if the message is successfully scheduled. @param aFromTime The time to schedule the messages for sending. @param aRef The ID of the schedule to add this task to. @param aPendingConditions A flag indicating whether this message is schedule for conditions. */ void CMsvScheduleSend::ScheduleEntryL(CMsvScheduledEntry& aMessage, const TInt aFinalState, const TTime& aStartTime, const TSchedulerItemRef& aRef, TBool aPendingConditions) { //Create a new task to associate with the schedule TTaskInfo taskInfo; iPackage.iId = aMessage.Id(); ScheduleEntryL(iScheduler, aRef, iPackage, taskInfo); // Change the scheduled flag and sending state of the message if( iServerEntry.SetEntry(aMessage.Id()) == KErrNone ) { TMsvEntry entry(iServerEntry.Entry()); aMessage.Entry(entry); UpdateEntryAfterSchedule(aRef, taskInfo, aStartTime, aFinalState, entry, aMessage.iData); entry.SetPendingConditions(aPendingConditions); SCHSENDLOG(FLog(_L8("\t\tScheduled msg %d (Mtm=%d, State=%d, Sch=%d, Task=%d, Pending=%d)"), entry.Id(), entry.iMtm.iUid, aFinalState, aMessage.iData.iRef.iHandle, aMessage.iData.iTaskId, entry.PendingConditions())); User::LeaveIfError(iServerEntry.ChangeEntry(entry)); //Store the message data CMsvStore* store = iServerEntry.EditStoreL(); CleanupStack::PushL(store); aMessage.StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy(store); iServerEntry.SetEntry(KMsvNullIndexEntryId); } }
void CMsgImOutboxSend::RestoreBccRecipientsToHeaderL() { if (!iServerEntry.HasStoreL() || !iBccRcptArray || iBccRcptArray->Count()==0) return; // no recipients to restore. CMsvStore* store = iServerEntry.EditStoreL(); CleanupStack::PushL(store); // Must have an rfc822 header. CImHeader* header = CImHeader::NewLC(); if (store->IsPresentL( KUidMsgFileIMailHeader) ) { header->RestoreL(*store); header->BccRecipients().Reset(); TInt ii = iBccRcptArray->Count(); while (ii-- > 0) header->BccRecipients().InsertL(0, (*iBccRcptArray)[ii]); header->StoreL(*store); store->CommitL(); } // To stop the array growing, delete and recreate. iBccRcptArray->Reset(); delete iBccRcptArray; iBccRcptArray=0; iBccRcptArray = new (ELeave) CDesCArrayFlat(KBccArraySegment); CleanupStack::PopAndDestroy(header); CleanupStack::PopAndDestroy(store); }
// ----------------------------------------------------------------------------- // CWPMessage::StoreMsgL // ----------------------------------------------------------------------------- // void CWPMessage::StoreMsgL() { FLOG( _L( "CWPMessage::StoreMsgL" ) ); // create an invisible blank entry TMsvEntry entry; PrepareEntryLC( entry ); // details on cleanup stack entry.iBioType = iBioUID.iUid; entry.iMtm = KUidBIOMessageTypeMtm; // Look up and set the description FLOG( _L( "CWPMessage::StoreMsgL 1" ) ); TInt index; CBIODatabase* bioDB = CBIODatabase::NewLC( iSession->FileSession() ); FLOG( _L( "CWPMessage::StoreMsgL 2" ) ); TRAPD( err, bioDB->GetBioIndexWithMsgIDL( iBioUID, index ) ); if (err ==KErrNone) { FLOG( _L( "CWPMessage::StoreMsgL 3" ) ); HBufC* description = bioDB->BifReader(index).Description().AllocL(); FLOG( _L( "CWPMessage::StoreMsgL 4" ) ); entry.iDescription.Set(*description); FLOG( _L( "CWPMessage::StoreMsgL 5" ) ); CleanupStack::PopAndDestroy(); // bioDB CleanupStack::PushL( description ); } else { FTRACE(RDebug::Print(_L(" CWPMessage::StoreMsgL err (%d)"), err)); CleanupStack::PopAndDestroy(); // bioDB } FLOG( _L( "CWPMessage::StoreMsgL 6" ) ); // Store entry in inbox CMsvEntry* msvEntry = iSession->GetEntryL( KMsvGlobalInBoxIndexEntryId ); FLOG( _L( "CWPMessage::StoreMsgL 7" ) ); CleanupStack::PushL(msvEntry); msvEntry->CreateL(entry); msvEntry->Session().CleanupEntryPushL(entry.Id()); msvEntry->SetEntryL(entry.Id()); FLOG( _L( "CWPMessage::StoreMsgL 8" ) ); // Save the message CMsvStore* store = msvEntry->EditStoreL(); CleanupStack::PushL(store); FLOG( _L( "CWPMessage::StoreMsgL 9" ) ); iMessage->StoreL( *store ); store->CommitL(); // Complete processing the message PostprocessEntryL( *msvEntry, entry ); CleanupStack::PopAndDestroy(); //store msvEntry->Session().CleanupEntryPop(); //entry CleanupStack::PopAndDestroy(3); //description, details, msvEntry FLOG( _L( "CWPMessage::StoreMsgL Done" ) ); }
void CSmsReplyToStep::CreateMessageL() { INFO_PRINTF1(_L("Creating message...")); TMsvEntry entry; entry.SetVisible(ETrue); entry.SetInPreparation(ETrue); entry.iServiceId = iTestUtils->iSmsServiceId; entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsgTypeSMS; entry.iDate.HomeTime(); entry.iSize = 0; entry.iDescription.Set(KNullDesC); entry.iDetails.Set(KNullDesC); entry.SetSendingState(KMsvSendStateScheduled); // Create the SMS header object... CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *iTestUtils->iRichText); CleanupStack::PushL(header); // Set the body text... iTestUtils->iRichText->Reset(); iTestUtils->iRichText->InsertL(0, KMessageData); // Copy the message settings... header->SetSmsSettingsL(*iTestUtils->iServiceSettings); // Set the service centre TInt defaultIndex = iTestUtils->iServiceSettings->DefaultServiceCenter(); header->SetServiceCenterAddressL(iTestUtils->iServiceSettings->GetServiceCenter(defaultIndex).Address()); // Set recipient - ask derived class SetRecipientsL(*header); // Update entry description and details... CArrayPtrFlat<CSmsNumber>& recipient = header->Recipients(); entry.iDetails.Set(recipient[0]->Address()); entry.iDescription.Set(iTestUtils->iRichText->Read(0, iTestUtils->iServiceSettings->DescriptionLength())); entry.SetInPreparation(EFalse); // Create the entry - set context to the global outbox. iTestUtils->iMsvEntry->SetEntryL(KMsvGlobalOutBoxIndexEntryId); iTestUtils->iMsvEntry->CreateL(entry); // Create new store and save header information iTestUtils->iMsvEntry->SetEntryL(entry.Id()); CMsvStore* store = iTestUtils->iMsvEntry->EditStoreL(); CleanupStack::PushL(store); header->StoreL(*store); store->StoreBodyTextL(*iTestUtils->iRichText); store->CommitL(); CleanupStack::PopAndDestroy(2, header); iMessageId = entry.Id(); }
// ----------------------------------------------------------------------------- // CWPMessage::StoreMsgL // ----------------------------------------------------------------------------- // void CWPMessage::StoreMsgL( TInt aResource ) { FLOG( _L( "CWPMessage::StoreMsgL(aResource)" ) ); // create an invisible blank entry TMsvEntry entry; PrepareEntryLC( entry ); // details on cleanup stack entry.iMtm = KUidMsgTypeSMS; // Store entry in inbox CMsvEntry* msvEntry = iSession->GetEntryL(KMsvGlobalInBoxIndexEntryId); CleanupStack::PushL(msvEntry); msvEntry->CreateL(entry); msvEntry->Session().CleanupEntryPushL(entry.Id()); msvEntry->SetEntryL(entry.Id()); // Save the message body CMsvStore* store = msvEntry->EditStoreL(); CleanupStack::PushL(store); CParaFormatLayer* paraFormat = CParaFormatLayer::NewL(); CleanupStack::PushL( paraFormat ); CCharFormatLayer* charFormat = CCharFormatLayer::NewL(); CleanupStack::PushL( charFormat ); CRichText* body = CRichText::NewL( paraFormat, charFormat ); CleanupStack::PushL( body ); HBufC* text = LoadStringLC( aResource ); body->InsertL( body->DocumentLength(), *text ); store->StoreBodyTextL( *body ); // Store the actual message for post-mortem analysis iMessage->StoreL( *store ); // Save the SMS header and create a description field CSmsHeader* header = CSmsHeader::NewL( CSmsPDU::ESmsDeliver, *body ); CleanupStack::PushL( header ); TBuf<KSmsDescriptionLength> description; CSmsGetDetDescInterface* smsPlugin = CSmsGetDetDescInterface::NewL(); CleanupStack::PushL( smsPlugin ); smsPlugin->GetDescription( header->Message(), description ); CleanupStack::PopAndDestroy( smsPlugin ); entry.iDescription.Set( description ); header->StoreL( *store ); store->CommitL(); CleanupStack::PopAndDestroy( 5 ); // header, text, body, charformat, paraFormat // Complete processing the message PostprocessEntryL( *msvEntry, entry ); CleanupStack::PopAndDestroy(); //store msvEntry->Session().CleanupEntryPop(); //entry CleanupStack::PopAndDestroy(2); //details, msvEntry }
//--------------------------------------------------------------- // CNativeMmsUtility::ConstructL // @see header //--------------------------------------------------------------- void CNativeMmsUtility::ConstructL(const TMsvId& msgId, CMsvSession& session) { #ifdef _DEBUG_TRACES_ qDebug() << " Enter CNativeMmsUtility::ConstructL"; #endif //Get message entry imsventry = CMsvEntry::NewL(session, msgId, TMsvSelectionOrdering()); CleanupStack::PushL(imsventry); //Read message store CMsvStore* store = imsventry->ReadStoreL(); CleanupStack::PushL(store); //Get message store's attachment manager iattachmanager = &store->AttachmentManagerL(); //get the smil file from attachment manager ismilfilepath = getSmilFileL(); if (!ismilfilepath.isEmpty()) { //get smilfile's handle to parse RFile smilfile; HBufC* path = XQConversions::qStringToS60Desc(ismilfilepath); RFs fsSession; User::LeaveIfError(fsSession.Connect()); if (KErrNone == smilfile.Open(fsSession, *path, EFileRead)) { CleanupClosePushL(smilfile); //create an instance of smil reader ireader = SmilXmlReader::NewL(smilfile); //close smilfile CleanupStack::PopAndDestroy(); } else { //reset the smilfilepath ismilfilepath.clear(); } smilfile.Close(); //close file server session fsSession.Close(); } CleanupStack::Pop(2, imsventry); #ifdef _DEBUG_TRACES_ qDebug() << " Exit CNativeMmsUtility::ConstructL"; #endif }
/* ----------------------------------------------------------------------------- RFile GetAttachmentFileL(TMsvAttachmentId aId) ---------------------------------------------------------------------------- */ void CMailBoxContainer::OpenFileL(TBool /*aOpenWith*/) { if(iSession && iSelectionBox) { TInt CurrItmIndex = iSelectionBox->CurrentItemIndex(); TMsvSelectionOrdering sort; sort.SetShowInvisibleEntries(ETrue); sort.SetSorting(EMsvSortByDate); // Take a handle to the folder entry CMsvEntry* parentEntry = CMsvEntry::NewL(*iSession,iCurrentMailBox,sort); CleanupStack::PushL(parentEntry); // A selection of all BT entries CMsvEntrySelection* entries = parentEntry->ChildrenL();//ChildrenWithMtmL(KUidMsgTypeBt); CleanupStack::PushL(entries); //Process all entries if(CurrItmIndex >= 0 && CurrItmIndex < iIDArray->Count()) { //Get entry CMsvEntry* btEntry = iSession->GetEntryL(iIDArray->At(CurrItmIndex).iEnt); CleanupStack::PushL(btEntry); //Then get entrys child CMsvEntrySelection* btChildren = btEntry->ChildrenL(); CleanupStack::PushL(btChildren); btEntry->SetEntryL(iIDArray->At(CurrItmIndex).iMsg); if (btEntry->HasStoreL()) { CMsvStore* store = btEntry->ReadStoreL(); CleanupStack::PushL(store); MMsvAttachmentManager& attMngr = store->AttachmentManagerL(); CMsvAttachment* attachment = attMngr.GetAttachmentInfoL(iIDArray->At(CurrItmIndex).iAtt); if(attachment) { RFile SourceFil(attMngr.GetAttachmentFileL(iIDArray->At(CurrItmIndex).iAtt)); iUtils.GetFileUtils().OpenFileWithHandler(SourceFil); SourceFil.Close(); } CleanupStack::PopAndDestroy(store); } CleanupStack::PopAndDestroy(2); } CleanupStack::PopAndDestroy(2); } }
// --------------------------------------------------------- // CUniSmilList::GetSmilFullPathByIndex // // GetSmilFullPathByIndex. // --------------------------------------------------------- // EXPORT_C RFile CUniSmilList::GetSmilFileByIndexL( TInt aIndex ) { if ( aIndex < 0 || aIndex >= iSmilAttachmentArray->Count() ) { User::Leave( KErrArgument ); } CMsvStore* store = iMtm.Entry().ReadStoreL(); CleanupStack::PushL( store ); MMsvAttachmentManager& manager = store->AttachmentManagerL(); RFile file = manager.GetAttachmentFileL( iSmilAttachmentArray->At( aIndex ) ); CleanupStack::PopAndDestroy( store ); return file; }
LOCAL_C void TestReadOnlyDeletionL() { CDummyObserver* ob = new(ELeave)CDummyObserver; CleanupStack::PushL(ob); CMsvSession* session = CMsvSession::OpenSyncL(*ob); CleanupStack::PushL(session); CMsvEntry* cEntry = CMsvEntry::NewL(*session, KMsvDraftEntryId, TMsvSelectionOrdering()); CleanupStack::PushL(cEntry); // Create an entry TMsvEntry entry; entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvLocalServiceMtm; entry.iServiceId = KMsvLocalServiceIndexEntryId; cEntry->CreateL(entry); // Generate name of attachment cEntry->SetEntryL(entry.Id()); TFileName fileName; fileName.Append(_L("Test")); CMsvStore* store = cEntry->EditStoreL(); CleanupStack::PushL(store); CAsyncWaiter* waiter = CAsyncWaiter::NewL(); CleanupStack::PushL(waiter); CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvFile); CleanupStack::PushL(attachment); fileName.Append(_L("Test")); attachment->SetAttachmentNameL(fileName); RFile file; store->AttachmentManagerL().CreateAttachmentL(fileName, file, attachment, waiter->iStatus); CleanupStack::Pop(attachment); // ownership passed waiter->StartAndWait(); User::LeaveIfError(waiter->Result()); CleanupStack::PopAndDestroy(waiter); CleanupClosePushL(file); User::LeaveIfError(file.Write(_L8("some text"))); User::LeaveIfError(file.SetAtt(KEntryAttReadOnly, KEntryAttNormal)); CleanupStack::PopAndDestroy(2, store); // file, store // Now try and delete the file cEntry->SetEntryL(entry.Parent()); cEntry->DeleteL(entry.Id()); CleanupStack::PopAndDestroy(3); // cEntry, session, ob }
TBool CT_MsgVerifyHeaders::VerifyMimeHeaderPartsL(CMsvEntrySelection* aEntrySelection) { TBool status = EPass; for(int index = 0; index < aEntrySelection->Count(); ++index) { CMsvEntry* entry = iSharedDataPOP.iSession->GetEntryL(aEntrySelection->At(index)); CleanupStack::PushL(entry); CMsvStore* store = entry->ReadStoreL(); CleanupStack::PushL(store); if (store->IsPresentL(KUidMsgFileMimeHeader)) { CImMimeHeader* mimeHeader = CImMimeHeader::NewLC(); mimeHeader->RestoreL(*store); TBuf<256> param; TPtrC contentType; param.Format(KContentType, index); if(GetStringFromConfig( ConfigSection(), param, contentType)) { TPtrC8 content8 = mimeHeader->ContentType(); HBufC* content16 = HBufC::NewLC(content8.Length()); content16->Des().Copy(content8); if(contentType.Compare(content16->Des())) { ERR_PRINTF1(_L("Content Type is not matched")); status = EFail; } CleanupStack::PopAndDestroy(content16); } TPtrC contentSubType; param.Format(KContentSubType, index); if(GetStringFromConfig( ConfigSection(), param, contentSubType)) { TPtrC8 content8 = mimeHeader->ContentSubType(); HBufC* content16 = HBufC::NewLC(content8.Length()); content16->Des().Copy(content8); if(contentSubType.Compare(content16->Des())) { ERR_PRINTF1(_L("Content Sub Type is not matched")); status = EFail; } CleanupStack::PopAndDestroy(content16); } CleanupStack::PopAndDestroy(mimeHeader); } CleanupStack::PopAndDestroy(store); CleanupStack::PopAndDestroy(entry); } return status; }
LOCAL_C void CreateNewPlaintextMessageL() { CTestActive* testActive = new(ELeave) CTestActive(); CleanupStack::PushL(testActive); TMsvEmailTypeList msvEmailTypeList = 0; TMsvPartList partList = (KMsvMessagePartBody | KMsvMessagePartAttachments); CImEmailOperation* emailOperation = CImEmailOperation::CreateNewL(testActive->iStatus, *(testUtils->iMsvSession),KMsvGlobalOutBoxIndexEntryId, partList, msvEmailTypeList, KUidMsgTypeSMTP); CleanupStack::PushL(emailOperation); TestMsvOperationTimer* testMsvOperationTimer = TestMsvOperationTimer::NewLC(test.Console(), emailOperation, test); testActive->StartL(); testMsvOperationTimer->IssueRequest(); CActiveScheduler::Start(); //check progress TMsvId temp; TPckgC<TMsvId> paramPack(temp); const TDesC8& progBuf = emailOperation->ProgressL(); paramPack.Set(progBuf); TMsvId newMessageId; newMessageId = paramPack(); test(newMessageId != NULL); testUtils->WriteComment(_L("\t Created New plaintext message")); testUtils->iMsvEntry->SetEntryL(newMessageId); CMsvStore* store = testUtils->iMsvEntry->EditStoreL(); CleanupStack::PushL(store); CImHeader* header = CImHeader::NewLC(); header->RestoreL(*store); TInt serverLength = testUtils->MachineName().Length(); HBufC* serverad = HBufC::NewL(serverLength + 7 ); // 7 is the length of KServerAddress CleanupStack::PushL(serverad); serverad->Des().Copy(testUtils->MachineName()); serverad->Des().Append(KServer); HBufC* emailaddress = HBufC::NewL(serverLength + 8 + serverad->Des().Length() + 1 ); CleanupStack::PushL(emailaddress); emailaddress->Des().Copy(testUtils->MachineName()); emailaddress->Des().Append(KAt); emailaddress->Des().Append(*serverad); header->ToRecipients().AppendL(*emailaddress); header->SetSubjectL(_L("Test sending message using CMsvEntry::CopyL!!")); header->StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy(emailaddress); CleanupStack::PopAndDestroy(serverad); CleanupStack::PopAndDestroy(5,testActive); // header,store,testMsvOperationTimer,emailOperation,testActive }
// --------------------------------------------------------- // CUniSmilList::CreateSmilAttachmentL // // Create SMIL from DOM // --------------------------------------------------------- // EXPORT_C void CUniSmilList::CreateSmilAttachmentL( MUniSmilComposeObserver& aObserver, CMsvStore& aEditStore, CMDXMLDocument* aDom ) { iDom = aDom; iObserver = &aObserver; //iSmilAttaId = KMsvNullIndexEntryId; //iSmilAttaFullpath.Zero(); iManager = &( aEditStore.AttachmentManagerL() ); CMsvAttachment* attachment = CMsvAttachment::NewL( CMsvAttachment::EMsvFile ); CleanupStack::PushL( attachment ); //TODO: Set size(?) & complete flag(?) //attachment->SetSize() //attachment->SetComplete( EFalse ); iEditFile = new ( ELeave ) RFile; CMuiuOperationWait* wait = CMuiuOperationWait::NewLC(); iManager->CreateAttachmentL( KPresentationFileName, *iEditFile, attachment, wait->iStatus ); wait->Start(); //manager.AddAttachmentL( aPath, attachment, iStatus ); CleanupStack::PopAndDestroy( wait ); CleanupStack::Pop( attachment ); iAttachment = attachment; //Do self complete to trigger runL RunL(); }
void CImOperationQueueList::StoreQueuedListL(CImQueuedList &aList) // // Store contents of aList back in current entry (pointed to by iServiceEntry) // to aList. // { __ASSERT_DEBUG( iServiceEntry->Entry().iMtm == KUidMsgTypeIMAP4, gPanic(EOffOpBadMtmTypeUid)); __ASSERT_DEBUG( iServiceEntry->Entry().iType == KUidMsvFolderEntry || iServiceEntry->Entry().iType == KUidMsvServiceEntry, gPanic(EOffOpEntryShouldBeFolder)); CMsvStore* store = iServiceEntry->EditStoreL(); CleanupStack::PushL(store); CImOffLineArrayStore externaliser(aList); externaliser.StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy();//store }
void CMsvSendExe::UpdateEntryL(CMsvEntry& aMsvEntry, TMsvEntry& aEntry, const TSchedulerItemRef& aRef, const TTaskInfo& aInfo, const TTime& aStartTime) { CMsvStore* store = aMsvEntry.EditStoreL(); CleanupStack::PushL(store); TMsvEntryScheduleData data; data.RestoreL(*store); CMsvScheduleSend::UpdateEntryAfterSchedule(aRef, aInfo, aStartTime, KMsvSendStateResend, aEntry, data); data.StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy(store); aMsvEntry.ChangeL(aEntry); }
void CMtfTestActionRemoveAllAttachments::ExecuteActionL() { TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionRemoveAllAttachments); CMsvSession* paramSession = ObtainParameterReferenceL<CMsvSession>(TestCase(),ActionParameters().Parameter(0)); TMsvId messageEntry = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(1)); TInt attachIdFlag = ObtainValueParameterL<TInt>(TestCase(),ActionParameters().Parameter(2), 0); CMsvEntry* entry = paramSession->GetEntryL(messageEntry); CleanupStack::PushL(entry); CMsvStore* store = entry->EditStoreL(); CleanupStack::PushL(store); MMsvAttachmentManager& manager = store->AttachmentManagerL(); TInt attachmentCount = manager.AttachmentCount(); for ( ; attachmentCount > 0 ; attachmentCount-- ) { CMtfAsyncWaiter* waiter = CMtfAsyncWaiter::NewL(); CleanupStack::PushL(waiter); if( attachIdFlag == 1 ) { CMsvAttachment* attachInfo = manager.GetAttachmentInfoL(0); CleanupStack::PushL(attachInfo); manager.RemoveAttachmentL(attachInfo->Id(), waiter->iStatus); CleanupStack::PopAndDestroy(attachInfo); } else { manager.RemoveAttachmentL(0, waiter->iStatus); } waiter->StartAndWait(); User::LeaveIfError(waiter->Result()); CleanupStack::PopAndDestroy(waiter); } store->CommitL(); CleanupStack::PopAndDestroy(2, entry); // store, entry TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionRemoveAllAttachments); TestCase().ActionCompletedL(*this); }
EXPORT_C void CImOffLineArrayStore::RestoreL(const CMsvStore& aMessageStore ) { if (aMessageStore.IsPresentL(KUidImQueuedOperationList)) { RMsvReadStream in; in.OpenLC( aMessageStore, KUidImQueuedOperationList ); // pushes 'in' to the stack InternalizeL(in); CleanupStack::PopAndDestroy(); } }
/* ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ void CFakeSMSSender::FinalizeMessageL(TMsvId aEntryId,const TDesC& aBody,const TDesC& aRecipientName,TTime aMsgTime) { CMsvEntry* entry = iMsvSession->GetEntryL(aEntryId); CleanupStack::PushL(entry); TMsvEntry newEntry(entry->Entry()); // This represents an entry in the Message Server index newEntry.SetInPreparation(EFalse); // a flag that this message is in preparation newEntry.iDetails.Set(aRecipientName); newEntry.SetUnread(ETrue); newEntry.iDate = aMsgTime; newEntry.SetReadOnly(ETrue); CMsvStore* srore = entry->EditStoreL(); CleanupStack::PushL(srore); if(srore) { CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL(); CleanupStack::PushL(paraFormatLayer); CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL(); CleanupStack::PushL(charFormatLayer); CRichText* messageBodyContent = CRichText::NewL(paraFormatLayer, charFormatLayer); CleanupStack::PushL(messageBodyContent); messageBodyContent->InsertL(0,aBody); srore->StoreBodyTextL(*messageBodyContent); srore->CommitL(); CleanupStack::PopAndDestroy(3); // messageBodyContent, charFormatLayer,paraFormatLayer if(aBody.Length() > 50) newEntry.iDescription.Set(aBody.Left(50)); else newEntry.iDescription.Set(aBody); } CleanupStack::PopAndDestroy(srore); entry->ChangeL(newEntry); entry->MoveL(aEntryId,KMsvGlobalInBoxIndexEntryId); CleanupStack::PopAndDestroy(entry); }
TBool CSmsReplyToStep::CheckMessageL() { INFO_PRINTF1(_L("Received new message in Inbox - should be status report...")); TMsvSelectionOrdering ordering; ordering.ShowInvisibleEntries(); CMsvEntry* entry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId,ordering); CleanupStack::PushL(entry); CMsvEntrySelection* msvEntrySelection; msvEntrySelection=entry->ChildrenL(); CleanupStack::PushL(msvEntrySelection); // Check how many mesasges there are - should be just 1 TInt count = msvEntrySelection->Count(); INFO_PRINTF3(_L("Number of new messages: %d, should be: %d"), count, 1); // Restore the message CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *iTestUtils->iRichText); CleanupStack::PushL(header); entry->SetEntryL((*msvEntrySelection)[0]); CMsvStore* store = entry->ReadStoreL(); CleanupStack::PushL(store); header->RestoreL(*store); if(store->HasBodyTextL()) { store->RestoreBodyTextL(*iTestUtils->iRichText); } TBuf<KSmsDescriptionLength> desc; User::LeaveIfError(TSmsUtilities::GetDescription(header->Message(), desc)); //Check for a reply address field CSmsReplyAddressOperations& operations = STATIC_CAST(CSmsReplyAddressOperations&,header->Message().GetOperationsForIEL(CSmsInformationElement::ESmsReplyAddressFormat)); TBool result=operations.ContainsReplyAddressIEL(); CleanupStack::PopAndDestroy(4,entry); return result; }
/** Stores the Unknown Push message in the message store. Saves the message data in a new attachment file. This makes it more efficient for the UI to read the data. @param aSession Message server session @param aParent ID of the parent for the new entry. It is the caller's responsibility to ensure that the parent ID is correct. @return ID of the new message server entry. @see CPushMsgEntryBase::SaveL() */ EXPORT_C TMsvId CUnknownPushMsgEntry::SaveL(CMsvSession& aSession, TMsvId aParent) { CMsvEntry* entryPtr = aSession.GetEntryL(KMsvRootIndexEntryId); CleanupStack::PushL(entryPtr); // This tidies itself up TMsvId newEntry = CPushMsgEntryBase::SaveL(aSession, aParent); #ifdef __MESSAGING_API_V2__ TRAPD( saveError, TFileName fileName = ContentFileNameL(); entryPtr->SetEntryL(newEntry); CMsvStore* store = entryPtr->EditStoreL(); CleanupStack::PushL(store); SaveMessageBodyL(store->AttachmentManagerL(), fileName); store->CommitL(); CleanupStack::PopAndDestroy(store); )
EXPORT_C void CImSSmtpSettings::StoreL(CMsvStore& aMsvStore) const { RMsvWriteStream out; out.AssignLC( aMsvStore, KUidMsvServiceEntry ); // pushes 'out' to the stack TRAPD(error, ExternalizeL(out)); if (error==KErrNone) out.CommitL(); out.Close(); // make sure we close the file User::LeaveIfError(error); aMsvStore.CommitL(); CleanupStack::PopAndDestroy(); }
// ----------------------------------------------------------------------------- // CWPPushMessage::StoreL // ----------------------------------------------------------------------------- // EXPORT_C void CWPPushMessage::StoreL( CMsvStore& aStore ) const { TUid uid; uid.iUid = KProvisioningMessageStreamUid; aStore.Remove( uid ); RMsvWriteStream stream; stream.AssignLC( aStore, uid ); ExternalizeL( stream ); CleanupStack::PopAndDestroy(); // stream }
/* Sets the message's scheduled flag to EFalse Resets the schedule data associated with each message Resets the number of retries for each recipient Stores the data and recipients (in a stream associated with the TMsvEntry) */ void CMsvScheduleSend::SendingCompleteL(CMsvScheduledEntry& aMessage, const TBool aChangeEntry) { __ASSERT_DEBUG(iServerEntry.Entry().Id() == aMessage.Id(), gPanic(EServerEntryNotSetToCorrectEntry)); aMessage.SetScheduled(EFalse); aMessage.iData.Reset(); aMessage.RecipientsResetRetries(); if (aChangeEntry) { TMsvEntry entry = iServerEntry.Entry(); aMessage.Entry(entry); User::LeaveIfError(iServerEntry.ChangeEntry(entry)); } CMsvStore* store = iServerEntry.EditStoreL(); CleanupStack::PushL(store); aMessage.StoreL(*store); store->CommitL(); CleanupStack::PopAndDestroy(store); }