diff -r 000000000000 -r 3e07fef1e154 testexecfw/useremul/inc/ScanFolders.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecfw/useremul/inc/ScanFolders.h Mon Mar 08 15:03:44 2010 +0800 @@ -0,0 +1,213 @@ +/*------------------------------------------------------------------ + - + * Software Name : UserEmulator + * Version : v4.2.1309 + * + * Copyright (c) 2009 France Telecom. All rights reserved. + * This software is distributed under the License + * "Eclipse Public License - v 1.0" the text of which is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * France Telecom + * + * Contributors: + *------------------------------------------------------------------ + - + * File Name: ScanFolders.h + * + * Created: 13/08/2009 + * Author(s): Marcell Kiss, Reshma Sandeep Das + * + * Description: + * Active object implementation for folder scanning operation + *------------------------------------------------------------------ + - + * + */ +#ifndef SCANFOLDERS_H__ +#define SCANFOLDERS_H__ + +//System includes +#include +#include +#include + +//User Includes +#include "Constants.h" + +//Forward Declarations +class MFolderContentsListener; +class CUserEmulatorScriptsView; + + +/** + * CScanFolders + * Active object implementation for scanning for script files in a folder + */ +class CScanFolders : public CActive +{ +public: + /** + * Static constructor + * @return CScanFolders* A pointer to the newly alocated CScanFolders class. + * NULL, if the class cannot be created + */ + static CScanFolders * NewL(); + /** + * Static constructor + * @return CScanFolders* A pointer to the newly alocated CScanFolders class. + * NULL, if the class cannot be created + */ + static CScanFolders * NewLC(); + /** + * Destructor + */ + ~CScanFolders(); + +public: + /** + * Function to add listener + * @param aListener Reference to the folder listener object + */ + void AddListenerL( CUserEmulatorScriptsView* aListener ); + /** + * Function to remove listeners + * @param aListener Reference to the folder listener object + */ + void RemoveListener( CUserEmulatorScriptsView * aListener ); + +public: + /** + * Function to set filters for folder scan + * @param aFilter 16 bit filter descriptor + */ + void SetFilter( const TDesC & aFilter ); + /** + * Function to set filters for folder scan + * @param aFilter 8 bit filter descriptor + */ + void SetFilter( const TDesC8 & aFilter ); + + /** + * Scan the folder specified by the path asynchronously. Results will + * be delivered through the listener interface. + * @param aPath 8 bit path descriptor + */ + void ScanFolderL( const TDesC & aPath ); + /** + * Scan the folder specified by the path asynchronously. Results will + * be delivered through the listener interface. + * @param aPath 16 bit path descriptor + */ + void ScanFolderL( const TDesC8 & aPath ); + +protected: + /** + * Constructor + */ + CScanFolders(); + /** + * ConstructL + */ + void ConstructL(); + +protected: + /** + * Function to start folder scan + */ + void StartScanningL(); + /** + * Function to continue folder scan + */ + void ContinueScanning(); + /** + * Function to stop folder scan + */ + void StopScanning(); + /** + * Deliver Drives + */ + void DeliverDrivesL(); + /** + * Reset operation + */ + void Reset(); + +protected: + /** + * Function that notifies any error during folder scan + * @param aReasonCode error code + */ + void FireError( TInt aReasonCode ); + /** + * Function that notifies on any new entry in the folder + */ + void FireEntriesL(); + /** + * Function that notifies any directory or file changes in the + * folder + * @param aEntry entry type + */ + void FireEntry( const TEntry & aEntry ); + /** + * Function that notifies on any folder changes + * @param aFolder folder name + */ + void FireFolder( const TDesC & aFolder ); + /** + * Function that notifies on any file changes + * @param aFile File name + */ + void FireFile( const TDesC & aFile ); + /** + * Function that notifies at the beginning of folder scan + * @param aIsDriveListFlag + */ + void FireFolderStarting( TBool aIsDriveListFlag ); + /** + * Function that indicates folder scan complete + */ + void FireFolderCompleteL(); + +protected: + /** + * Helper function that checks for file types and notifies + * on any file changes + * @param aFilename file name + */ + TBool IsMatch( const TDesC & aFilename ); + +private: //From CActive + void DoCancel(); + void RunL(); + +private: + /** + * Enumeration with the folder scanner states + */ + enum TScanState + { + EIdle, + EScanning, + EStartNewScan, + EAbortScan + }; + + //Data Members + TBool iAbortScan; + TBool iStartNewScan; + TBool iContinued; + TBool iComplete; + TScanState iScanState; + TBuf iFileFilter; + TParse iCurrentPath; + RDir iCurrentDir; + TEntryArray iEntries; + CDesCArrayFlat * iDirectories; + CDesCArrayFlat * iFileNames; + RFs iFs; + RArray< CUserEmulatorScriptsView * > iListeners; +}; + +#endif