harvesterplugins/messaging/src/cmessageharvester.cpp
changeset 2 208a4ba3894c
parent 0 ccd0fd43f247
child 3 6832643895f7
--- a/harvesterplugins/messaging/src/cmessageharvester.cpp	Mon Apr 19 14:40:05 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Harvester message plugin
-*
-*/
-
-
-//  INCLUDES 
-
-#include <e32base.h>
-#include <mtclreg.h>
-#include <mmsclient.h>
-#include <smsclnt.h>
-#include <smuthdr.h>
-#include <smsclnt.h>
-#include <smut.h>
-#include <gsmuelem.h>
-#include <msventry.h>
-#include <msvuids.h>
-#include <mmsconst.h>
-#include "cmessageharvester.h"
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// CMessageHarvester::NewL
-// ---------------------------------------------------------------------------
-//
-CMessageHarvester* CMessageHarvester::NewL(  CMessagePlugin& aMessagePlugin, CMsvSession& aSession )
-	{
-	CMessageHarvester* self = new (ELeave) CMessageHarvester(  aMessagePlugin, aSession );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CMessageHarvester::~CMessageHarvester
-// ---------------------------------------------------------------------------
-//
-CMessageHarvester::~CMessageHarvester()
-	{   
-	Cancel();  
-    delete iChildren;
-    iToBeSearchedFolders.Close();
-	}
-	  
-// ---------------------------------------------------------------------------
-// CMessageHarvester::CMessageHarvester
-// ---------------------------------------------------------------------------
-//
-CMessageHarvester::CMessageHarvester( CMessagePlugin& aMessagePlugin, CMsvSession& aSession  ) :
-	CActive(CActive::EPriorityIdle),
-	iMessagePlugin( aMessagePlugin ),
-	iMsvSession( aSession ),
-	iState(EStateIdle)
-	{
-	CActiveScheduler::Add( this );
-	}
-
-// ---------------------------------------------------------------------------
-// CMessageHarvester::StartHarvesting
-// ---------------------------------------------------------------------------
-//	
-void CMessageHarvester::StartHarvestingL()
-	{
-	// First, get message folders
-	GetMessageFoldersL();
-	
-	// Then, harvest them
-	iState = EStateNextFolder;
-	HandleNextRequest();
-	}
-
-// ---------------------------------------------------------------------------
-// CMessageHarvester::AddFolderWithSubFoldersL
-// ---------------------------------------------------------------------------
-//		
-void CMessageHarvester::AddFolderWithSubFoldersL( const TMsvId& aFolderId )
-	{
-	// Add a folder to the search list
-	User::LeaveIfError(iToBeSearchedFolders.Append(aFolderId));	
-	CMsvEntry* folderEntry = CMsvEntry::NewL(iMsvSession, aFolderId, TMsvSelectionOrdering(KMsvGroupByStandardFolders, EMsvSortByDetails, EFalse));
-	CleanupStack::PushL(folderEntry);	
-	ListSubFoldersL(*folderEntry);
-	CleanupStack::PopAndDestroy(folderEntry);
-	}
-
-// ---------------------------------------------------------------------------
-// CMessageHarvester::ListSubFoldersL
-// ---------------------------------------------------------------------------
-//	
-void CMessageHarvester::ListSubFoldersL(  const CMsvEntry& aFolderEntry ) 
-	{
-	// Only list "folder" children
-    CMsvEntrySelection* children = aFolderEntry.ChildrenL();
-	CleanupStack::PushL( children );
-
-	for ( TInt i=0; i < children->Count(); i++ )
-		{
-		TMsvId& childId = ( *children )[i];
-		const TMsvEntry& childEntry ( aFolderEntry.ChildDataL( childId ) );
-		if ( ( childEntry.iType == KUidMsvServiceEntry ) || 
-    		 ( childEntry.iType == KUidMsvFolderEntry ) )
-		    {
-		    // Add this folder to search list
-            AddFolderWithSubFoldersL( childId );		
-		    }
-		}
-	CleanupStack::PopAndDestroy();  // children
-	}
-	
-// ---------------------------------------------------------------------------
-// CMessageHarvester::GetMessageFoldersL
-// ---------------------------------------------------------------------------
-//
-void CMessageHarvester::GetMessageFoldersL()
-    {
-    // Get list of folders
-    CMsvEntry* rootEntry;
-    rootEntry = CMsvEntry::NewL( iMsvSession, KMsvRootIndexEntryIdValue,
-    TMsvSelectionOrdering( KMsvGroupByStandardFolders, EMsvSortByDetails, EFalse ) );
-    CleanupStack::PushL( rootEntry );
-	ListSubFoldersL( *rootEntry);
-	CleanupStack::PopAndDestroy( rootEntry );
-    }
-
-			
-// ---------------------------------------------------------------------------
-// CMessageHarvester::GetNextFolderL
-// ---------------------------------------------------------------------------
-//		
-void CMessageHarvester::GetNextFolderL()
-    {
-    if ( iToBeSearchedFolders.Count() > 0 )
-        
-    	{
-    	// Open the new folder
-        CMsvEntry* folder = CMsvEntry::NewL(
-	                            iMsvSession, 
-	                            iToBeSearchedFolders[0],
-	                            TMsvSelectionOrdering( KMsvGroupByStandardFolders, EMsvSortByDetails ));
-        
-        iCurrentFolder = iToBeSearchedFolders[0];
-        
-        // Get the message items from the folder
-        CleanupStack::PushL(folder);        
-        iChildren = folder->ChildrenWithTypeL( KUidMsvMessageEntry );
-        CleanupStack::PopAndDestroy( folder );
-        
-        // Remove current folder from the queue
-        iToBeSearchedFolders.Remove(0);
-        iState = EStateNextMessage;
-        HandleNextRequest();
-        }
-    else
-        {
-        // No more folders in the queue
-        iState = EStateIdle;
-        HandleNextRequest();      
-        }
-    }
-
-			
-// ---------------------------------------------------------------------------
-// CMessageHarvester::GetMessageId
-// ---------------------------------------------------------------------------
-//		    
-void CMessageHarvester::GetMessageIdL()
-    { 
-    if (iChildren && iChildren->Count() > 0)
-        {
-        // Take first item from list of message items, and give it for indexing
-        iMessagePlugin.MessageItemL((*iChildren)[0], ECPixAddAction, iCurrentFolder);
-        
-        // Delete the item from list
-        iChildren->Delete( 0 );   
-        if ( iChildren->Count() > 0 )
-            {
-            // Get the next message
-            iState = EStateNextMessage;
-            HandleNextRequest();      
-            }
-        else 
-            {
-            // No messages in this folder
-            iState = EStateNextFolder;
-            HandleNextRequest();      
-            }
-        }
-    else 
-        {
-        // Current folder dosen't contain any message items so change folder
-        iState = EStateNextFolder;
-        HandleNextRequest();      
-        }
-    }
-      
-// -----------------------------------------------------------------------------
-// CMessageHarvester::DoCancel
-// -----------------------------------------------------------------------------
-//   
-void CMessageHarvester::DoCancel()
-	{
-	}
-
-// -----------------------------------------------------------------------------
-// CMessageHarvester::RunL
-// -----------------------------------------------------------------------------
-//   
-void CMessageHarvester::RunL()	
-	{
-	
-	 // Simple Round-Robin scheduling.
-    Deque();
-    CActiveScheduler::Add( this );
-    
-	switch (iState)
-		{
-	       case EStateIdle:
-	            {
-	            // Delete current folder items
-	            delete iChildren; 
-	            iChildren = NULL;
-	            
-	            // Started idling, close the folders
-	            iToBeSearchedFolders.Reset();
-
-	            // Update harvester status
-	            iMessagePlugin.HarvestingCompleted(KErrNone);	            
-	            break; 
-	    	    }    
-		    case EStateNextMessage:
-		        {
-		        // Get the next message
-		        GetMessageIdL();	
-		        break;	        
-		        }
-	        case EStateNextFolder:
-	            {
-	            // Delete current folder items
-	            delete iChildren; 
-	            iChildren = NULL;
-	            
-	            // Start harvesting folders. 
-	            GetNextFolderL();	         
-				break;
-	            }
-		}
-	}
-	         				
-// -----------------------------------------------------------------------------
-// CMessageHarvester::RunError
-// -----------------------------------------------------------------------------
-//   
-TInt CMessageHarvester::RunError( TInt aError )	
-	{
-	iState = EStateIdle;
-    iMessagePlugin.HarvestingCompleted(aError);
-	return KErrNone;
-	}
-	
-// ---------------------------------------------------------------------------
-// SetNextRequest
-// ---------------------------------------------------------------------------
-//
-void CMessageHarvester::HandleNextRequest()
-    {
-    if (!IsActive())
-        {
-        SetActive();
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete( status, KErrNone );
-        }
-    }
-
-
-// End of File