196 TBuf<20> docid_str; |
196 TBuf<20> docid_str; |
197 docid_str.AppendNum(aMsvId); |
197 docid_str.AppendNum(aMsvId); |
198 if (iMessagePlugin.GetIndexer()) |
198 if (iMessagePlugin.GetIndexer()) |
199 { |
199 { |
200 TRAPD(err, iMessagePlugin.GetIndexer()->DeleteL(docid_str)); |
200 TRAPD(err, iMessagePlugin.GetIndexer()->DeleteL(docid_str)); |
201 if (err == KErrNone) |
201 OstTrace1( TRACE_NORMAL, DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL():DeleteL;err=%d", err ); |
202 { |
|
203 OstTrace0( TRACE_NORMAL, DUP1_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Document deleted." ); |
|
204 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Document deleted."); |
|
205 } |
|
206 else |
|
207 { |
|
208 OstTrace1( TRACE_NORMAL, DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in deleting the doc=%d", err ); |
|
209 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in deleting the document.", err); |
|
210 } |
|
211 } |
202 } |
212 return; |
203 return; |
213 } |
204 } |
214 |
205 |
215 // Check message type |
206 // Check message type |
222 switch (messageType) |
213 switch (messageType) |
223 { |
214 { |
224 case EMsgTypeSms: |
215 case EMsgTypeSms: |
225 { |
216 { |
226 TRAPD(err, index_item = CreateSmsDocumentL(aMsvId, aFolderId)); |
217 TRAPD(err, index_item = CreateSmsDocumentL(aMsvId, aFolderId)); |
227 if (err == KErrNone) |
218 OstTrace1( TRACE_NORMAL, DUP1_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): SMS document creation;err=%d", err ); |
228 { |
|
229 OstTrace0( TRACE_NORMAL, DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): SMS document created." ); |
|
230 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): SMS document created."); |
|
231 } |
|
232 else |
|
233 { |
|
234 OstTrace1( TRACE_NORMAL, DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in creating the sms doc=%d", err ); |
|
235 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating SMS document.", err); |
|
236 } |
|
237 break; |
219 break; |
238 } |
220 } |
239 case EMsgTypeMms: |
221 case EMsgTypeMms: |
240 { |
222 { |
241 TRAPD(err, index_item = CreateMmsDocumentL(aMsvId, aFolderId)); |
223 TRAPD(err, index_item = CreateMmsDocumentL(aMsvId, aFolderId)); |
242 if (err == KErrNone) |
224 OstTrace1( TRACE_NORMAL, DUP2_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): MMS document created;err=%d", err ); |
243 { |
|
244 OstTrace0( TRACE_NORMAL, DUP5_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): MMS document created." ); |
|
245 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): MMS document created."); |
|
246 } |
|
247 else |
|
248 { |
|
249 OstTrace1( TRACE_NORMAL, DUP6_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in creating the mms doc=%d", err ); |
|
250 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating MMS document.", err); |
|
251 } |
|
252 break; |
|
253 } |
|
254 case EMsgTypeEmailPop3: |
|
255 case EMsgTypeEmailImap4: |
|
256 case EMsgTypeEmailSmtp: |
|
257 { |
|
258 TRAPD(err, index_item = CreateEmailDocumentL(aMsvId, aFolderId)); |
|
259 if (err == KErrNone) |
|
260 { |
|
261 OstTrace0( TRACE_NORMAL, DUP7_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): E-mail document created." ); |
|
262 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): E-mail document created."); |
|
263 } |
|
264 else |
|
265 { |
|
266 OstTrace1( TRACE_NORMAL, DUP8_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in ccreating the email doc=%d", err ); |
|
267 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in creating e-mail document.", err); |
|
268 } |
|
269 break; |
225 break; |
270 } |
226 } |
271 case EMsgTypeInvalid: |
227 case EMsgTypeInvalid: |
272 // For EMsgTypeDraft there is no way to tell if it was a SMS, MMS or email, |
228 // For EMsgTypeDraft there is no way to tell if it was a SMS, MMS , |
273 // so don't create index_item. |
229 // so don't create index_item. |
274 case EMsgTypeDraft: |
230 case EMsgTypeDraft: |
275 default: |
231 default: |
276 // Error occurred |
232 // Error occurred |
277 break; |
233 break; |
300 if (iMessagePlugin.GetIndexer()) |
256 if (iMessagePlugin.GetIndexer()) |
301 { |
257 { |
302 if (aActionType == ECPixAddAction) |
258 if (aActionType == ECPixAddAction) |
303 { |
259 { |
304 TRAPD(err, iMessagePlugin.GetIndexer()->AddL(*index_item)); |
260 TRAPD(err, iMessagePlugin.GetIndexer()->AddL(*index_item)); |
305 if (err == KErrNone) |
261 OstTrace1( TRACE_NORMAL, DUP3_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Added;err=%d", err ); |
306 { |
|
307 OstTrace0( TRACE_NORMAL, DUP10_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Added." ); |
|
308 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Added."); |
|
309 } |
|
310 else |
|
311 { |
|
312 OstTrace1( TRACE_NORMAL, DUP11_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in Adding=%d", err ); |
|
313 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in adding.", err); |
|
314 } |
|
315 } |
262 } |
316 else if (aActionType == ECPixUpdateAction) |
263 else if (aActionType == ECPixUpdateAction) |
317 { |
264 { |
318 TRAPD(err, iMessagePlugin.GetIndexer()->UpdateL(*index_item)); |
265 TRAPD(err, iMessagePlugin.GetIndexer()->UpdateL(*index_item)); |
319 if (err == KErrNone) |
266 OstTrace1( TRACE_NORMAL, DUP4_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Updated;err=%d", err ); |
320 { |
|
321 OstTrace0( TRACE_NORMAL, DUP12_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL(): Updated." ); |
|
322 CPIXLOGSTRING("CMessageDataHandler::CreateMessageIndexItemL(): Updated."); |
|
323 } |
|
324 else |
|
325 { |
|
326 OstTrace1( TRACE_NORMAL, DUP13_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "CMessageDataHandler::CreateMessageIndexItemL;Error in Updating=%d", err ); |
|
327 CPIXLOGSTRING2("CMessageDataHandler::CreateMessageIndexItemL(): Error %d in updating.", err); |
|
328 } |
|
329 } |
267 } |
330 } |
268 } |
331 else |
269 else |
332 { |
270 { |
333 OstTrace0( TRACE_NORMAL, DUP14_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "END CMessageDataHandler::CreateMessageIndexItemL(): No indexer present." ); |
271 OstTrace0( TRACE_NORMAL, DUP14_CMESSAGEDATAHANDLER_CREATEMESSAGEINDEXITEML, "END CMessageDataHandler::CreateMessageIndexItemL(): No indexer present." ); |
538 |
476 |
539 // Pop the item |
477 // Pop the item |
540 CleanupStack::Pop(index_item); |
478 CleanupStack::Pop(index_item); |
541 return index_item; |
479 return index_item; |
542 } |
480 } |
543 |
|
544 // --------------------------------------------------------------------------- |
|
545 // CMessageDataHandler::CreateEmailDocumentL |
|
546 // --------------------------------------------------------------------------- |
|
547 // |
|
548 CSearchDocument* CMessageDataHandler::CreateEmailDocumentL(const TMsvId& aMsvId, const TMsvId& aFolderId) |
|
549 { |
|
550 // creating CSearchDocument object with unique ID for this application |
|
551 TBuf<KMaxDocId> docid_str; |
|
552 docid_str.AppendNum(aMsvId); |
|
553 CSearchDocument* index_item = CSearchDocument::NewLC(docid_str, _L(EMAILAPPCLASS)); |
|
554 |
|
555 // Open the message entry |
|
556 CMsvEntry* message_entry = CMsvEntry::NewL(iMsvSession, aMsvId, TMsvSelectionOrdering()); |
|
557 CleanupStack::PushL(message_entry); |
|
558 |
|
559 // Get body |
|
560 CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL(); |
|
561 CleanupStack::PushL(paraFormatLayer); |
|
562 CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL(); |
|
563 CleanupStack::PushL(charFormatLayer); |
|
564 CRichText* richtext = CRichText::NewL(paraFormatLayer, charFormatLayer); |
|
565 CleanupStack::PushL(richtext); |
|
566 CImEmailMessage* message_body = CImEmailMessage::NewLC(*message_entry); |
|
567 message_body->GetBodyTextL(aMsvId, CImEmailMessage::EThisMessageOnly, *richtext, *paraFormatLayer, *charFormatLayer); |
|
568 |
|
569 // Read the message header |
|
570 CMsvStore* message_store = message_entry->ReadStoreL(); |
|
571 CleanupStack::PushL(message_store); |
|
572 CImHeader* header = CImHeader::NewLC(); |
|
573 header->RestoreL(*message_store); |
|
574 |
|
575 // Add from field |
|
576 index_item->AddFieldL(KFromField, header->From()); |
|
577 |
|
578 // Add the ToRecipients as content items |
|
579 TBuf<64> to_field; |
|
580 for (TInt i = 0; i < header->ToRecipients().MdcaCount(); i++) |
|
581 { |
|
582 to_field = KToField; |
|
583 if (i>0) |
|
584 to_field.AppendNum(i); |
|
585 index_item->AddFieldL(to_field, header->ToRecipients().MdcaPoint(i)); |
|
586 } |
|
587 |
|
588 // Add the CcRecipients as content items |
|
589 TBuf<64> cc_field; |
|
590 for (TInt i = 0; i < header->CcRecipients().MdcaCount(); i++) |
|
591 { |
|
592 cc_field = KCcField; |
|
593 if (i>0) |
|
594 cc_field.AppendNum(i); |
|
595 index_item->AddFieldL(cc_field, header->CcRecipients().MdcaPoint(i)); |
|
596 } |
|
597 |
|
598 // Add the BccRecipients as content items |
|
599 TBuf<64> bcc_field; |
|
600 for (TInt i = 0; i < header->BccRecipients().MdcaCount(); i++) |
|
601 { |
|
602 bcc_field = KBccField; |
|
603 if (i>0) |
|
604 bcc_field.AppendNum(i); |
|
605 index_item->AddFieldL(bcc_field, header->BccRecipients().MdcaPoint(i)); |
|
606 } |
|
607 |
|
608 const TInt richTxtLen = (richtext->DocumentLength() < KMaxDocumentSize) ? richtext->DocumentLength() : KMaxDocumentSize; |
|
609 HBufC* body_text = richtext->Read(0).Left(richTxtLen).AllocLC(); |
|
610 |
|
611 // Add subject |
|
612 TPtrC subject(header->Subject()); |
|
613 index_item->AddFieldL(KSubjectField, subject); |
|
614 |
|
615 // Add message body |
|
616 index_item->AddFieldL(KBodyField, *body_text); |
|
617 |
|
618 // Add excerpt |
|
619 HBufC* excerpt = CreateExcerptLC(header->From(), header->ToRecipients(), subject, *body_text, aFolderId); |
|
620 index_item->AddExcerptL(*excerpt); |
|
621 CleanupStack::PopAndDestroy(excerpt); |
|
622 |
|
623 // Cleanup everything last item message entry |
|
624 CleanupStack::PopAndDestroy(8, message_entry); |
|
625 |
|
626 // Pop the item |
|
627 CleanupStack::Pop(index_item); |
|
628 return index_item; |
|
629 } |
|
630 |
|
631 // --------------------------------------------------------------------------- |
481 // --------------------------------------------------------------------------- |
632 // CMessageDataHandler::CreateExcerptLC |
482 // CMessageDataHandler::CreateExcerptLC |
633 // --------------------------------------------------------------------------- |
483 // --------------------------------------------------------------------------- |
634 // |
484 // |
635 HBufC* CMessageDataHandler::CreateExcerptLC(const TDesC& aFromAddress, |
485 HBufC* CMessageDataHandler::CreateExcerptLC(const TDesC& aFromAddress, |