harvesterplugins/messaging/smsmms/src/cmessagedatahandler.cpp
changeset 12 993ab30e92fc
parent 11 773be20e0a25
child 17 7d8c8d8f5eab
equal deleted inserted replaced
11:773be20e0a25 12:993ab30e92fc
   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,