ipsservices/ipssosplugin/src/ipsplgsearch.cpp
changeset 1 12c456ceeff2
parent 0 8466d47a6819
child 2 5253a20d2a1e
--- a/ipsservices/ipssosplugin/src/ipsplgsearch.cpp	Thu Dec 17 08:39:21 2009 +0200
+++ b/ipsservices/ipssosplugin/src/ipsplgsearch.cpp	Thu Jan 07 12:38:38 2010 +0200
@@ -960,18 +960,36 @@
 void CIpsPlgSearch::CollectMessagesL()
     {
     FUNC_LOG;
+    TMsvId mailboxId = iCurrentSearch.iMailbox.Id();
+	TMsvId serviceId;
+	TMsvEntry tEntry;
+	TMsvEntry mailboxServiceEntry;
+	
     // Lets make a huge list of message id's. 
     iEmailMessages.Reset();    
     
     const TInt folders = iCurrentSearch.iFolderIds.Count();
     for ( TInt folder = 0; folder < folders; folder++ )
         {
-        iActiveEntry->SetEntryL( iCurrentSearch.iFolderIds[folder].Id() );        
+        iActiveEntry->SetEntryL( iCurrentSearch.iFolderIds[folder].Id() );  
+    	if( iActiveEntry->Entry().Parent() == KMsvLocalServiceIndexEntryIdValue )
+    		{
+    		User::LeaveIfError(
+    			iMsvSession.GetEntry( mailboxId, serviceId, tEntry ) );
+    		User::LeaveIfError(
+    		    iMsvSession.GetEntry( tEntry.iRelatedId, serviceId, mailboxServiceEntry ) );
+    		}
+    	else
+    		{
+     		serviceId = mailboxId;
+    		}
+
         const TInt msgs = iActiveEntry->Count();
         for ( TInt msg = 0; msg < msgs; msg++ )
             {
             const TMsvEntry& entry = ( *iActiveEntry )[msg];
             if ( entry.iType == KUidMsvMessageEntry &&
+            	 entry.iServiceId == serviceId &&
                  ( entry.iMtm.iUid == KSenduiMtmSmtpUidValue ||
                    entry.iMtm.iUid == iPlugin.MtmId().iUid ) )
                 {