diff -r 000000000000 -r 6a9f87576119 filesystemuis/memscaneng/serverinc/msenginfoarray.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filesystemuis/memscaneng/serverinc/msenginfoarray.h Mon Jan 18 20:09:41 2010 +0200 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2006 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: +* An utility class to handle the UIDs and filename extensions used to +* identify data types. It is also used to store the results per data type. +* +*/ + + +#ifndef CMSENGINFOARRAY_H +#define CMSENGINFOARRAY_H + +// INCLUDES +#include +#include + +// FORWARD DECLARATIONS +class CResourceFile; +class RResourceReader; + + +// CLASS DECLARATION + +/** +* An utility class to handle the UIDs and filename extensions +* used to identify data types. It is also used to store +* the results per data type +*/ +class CMsengInfoArray : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CMsengInfoArray* NewL(TDriveNumber aDrive, + TInt aNumberOfDataGroups, + RFs& aFsSession, + CResourceFile& aResFile); + + /** + * Destructor. + */ + ~CMsengInfoArray(); + + public: // New functions + + /** + * Get the scan results per UID. + * @return Pointer to the array of scan results per UID. + */ + inline CArrayFix* UidResults() const; + + /** + * Get the scan results per filename extension. + * @return Pointer to the array of scan results per extension. + */ + inline CArrayFix* ExtResults() const; + + /** + * Get the scan results per data group. + * @return Pointer to the array of scan results per group. + */ + inline CArrayFix* GroupResults() const; + + /** + * Get UIDs to be scanned for. + * @return Pointer to the array of UIDs. + */ + inline const CArrayFix& Uids() const; + + /** + * Get the extensions to be scanned for. + * @return Pointer to the array of filename extensions. + */ + inline const CDesCArray& Exts() const; + + /** + * Get the directories to be scanned. + * @return Pointer to the array of directory paths. + */ + inline const CDesCArray& Dirs() const; + + /** + * Get the special data directories to be scanned. + * @return Pointer to the array data dir - data group pairs. + */ + inline const CDesCArray& DataDirs() const; + + /** + * + * + */ + inline const CArrayFix& DataDirGroups() const; + + /** + * Get the files excluded from directory to be scanned. + */ + inline const CArrayPtrFlat& DataDirExcludedFiles() const; + + /** + * Get the drive that is currently scanned + * @return Drive current drive + */ + inline const TDriveNumber CurrentDrive() const; + + /** + * Add new file size to the result array. + * @param aUid The file UID type in question + * @param aSize Size of the file + */ + inline void AddSizeByUidL(TInt aUid, TInt aSize); + + /** + * Add new file size to the result array. + * @param aExt Filename extension type in question + * @param aSize Size of the file + */ + inline void AddSizeByExtL(TInt aExt, TInt aSize); + + /** + * Add scan result af a specific data group. + * @param aGroupIndex Data group in question + * @param aSize Size of the file + */ + inline void AddSizeByGroupL(TInt aGroupIndex, TInt aSize); + + /** + * Query if the directory is in the list of directories to be + * excluded from scanning, or is a subdirectory of one + * @param aDirectory Path of the directory + * @return TBool + */ + TBool IsExcludedDir(const TDesC& aDirectory) const; + + /** + * This function is otherwise similar to BaflUtils::FolderExists, but + * it also ETrue for drive root (e.g. "c:\") + * @param aFs File server session + * @param aDirectory Path of the directory + */ + TBool FolderExists(RFs& aFs, const TDesC& aPath); + + /** + * Query if the directory is in the list of directories to be + * excluded from scanning, or is a subdirectory of one + * @param aDirectory Path of the directory + * @return TBool + */ + TBool IsSpecialDir(const TDesC& aDirectory) const; + + + private: + + /** + * C++ default constructor is prohibited. + */ + CMsengInfoArray(TDriveNumber aDrive); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(TInt aNumberOfDataGroups, RFs& aFsSession, CResourceFile& aResFile); + + // Prohibit copy constructor if not deriving from CBase. + CMsengInfoArray( const CMsengInfoArray& ); + // Prohibit assigment operator if not deriving from CBase. + CMsengInfoArray& operator= ( const CMsengInfoArray& ); + + private: // Data + // Root directories for scanning + CDesCArray* iDirArray; + + // Directories that are excluded from the normal scan + CDesCArray* iExcludedDirArray; + + // Directories scanned as a whole excluding listed files + CDesCArray* iDataDirArray; + CArrayFix* iDataDirGroupArray; + CArrayPtrFlat* iDataDirExclArray; + + // The drive that is currently scanned + TDriveNumber iCurrentScannedDrive; + + // The following arrays are indexed using values from enumerations + // TUidTypes and TExtTypes + + // Results are inserted into these arrays + CArrayFix* iUidResultArray; + CArrayFix* iExtResultArray; + CArrayFix* iGroupResultArray; + + // UIDs and extensions, which are searched, + // are in these two arrays + CArrayFix* iUidArray; + CDesCArray* iExtArray; + }; + +#include "msenginfoarray.inl" + +#endif // CMSENGINFOARRAY_H + +// End of File