| 39 |      1 | /*
 | 
|  |      2 | * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
 | 
|  |      3 | * All rights reserved.
 | 
|  |      4 | * This component and the accompanying materials are made available
 | 
|  |      5 | * under the terms of "Eclipse Public License v1.0""
 | 
|  |      6 | * which accompanies this distribution, and is available
 | 
|  |      7 | * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 | 
|  |      8 | *
 | 
|  |      9 | * Initial Contributors:
 | 
|  |     10 | * Nokia Corporation - initial contribution.
 | 
|  |     11 | *
 | 
|  |     12 | * Contributors:
 | 
|  |     13 | *
 | 
|  |     14 | * Description: 
 | 
|  |     15 | *     An utility class to handle the UIDs and filename extensions used to
 | 
|  |     16 | *     identify data types. It is also used to store the results per data type.
 | 
|  |     17 | *
 | 
|  |     18 | */
 | 
|  |     19 | 
 | 
|  |     20 | 
 | 
|  |     21 | #ifndef CMSENGINFOARRAY_H
 | 
|  |     22 | #define CMSENGINFOARRAY_H
 | 
|  |     23 | 
 | 
|  |     24 | //  INCLUDES
 | 
|  |     25 | #include <badesca.h>
 | 
|  |     26 | #include <f32file.h>
 | 
|  |     27 | 
 | 
|  |     28 | // FORWARD DECLARATIONS
 | 
|  |     29 | class CResourceFile;
 | 
|  |     30 | class RResourceReader;
 | 
|  |     31 | 
 | 
|  |     32 | 
 | 
|  |     33 | // CLASS DECLARATION
 | 
|  |     34 | 
 | 
|  |     35 | /**
 | 
|  |     36 | *  An utility class to handle the UIDs and filename extensions
 | 
|  |     37 | *  used to identify data types. It is also used to store
 | 
|  |     38 | *  the results per data type
 | 
|  |     39 | */
 | 
|  |     40 | class CMsengInfoArray : public CBase
 | 
|  |     41 |     {
 | 
|  |     42 |     public:  // Constructors and destructor
 | 
|  |     43 | 
 | 
|  |     44 |         /**
 | 
|  |     45 |         * Two-phased constructor.
 | 
|  |     46 |         */
 | 
|  |     47 |         static CMsengInfoArray* NewL(TDriveNumber aDrive,
 | 
|  |     48 |                                      TInt aNumberOfDataGroups,
 | 
|  |     49 |                                      RFs& aFsSession,
 | 
|  |     50 |                                      CResourceFile& aResFile);
 | 
|  |     51 |         
 | 
|  |     52 |         /**
 | 
|  |     53 |         * Destructor.
 | 
|  |     54 |         */
 | 
|  |     55 |         ~CMsengInfoArray();
 | 
|  |     56 | 
 | 
|  |     57 |     public: // New functions
 | 
|  |     58 |         
 | 
|  |     59 |         /**
 | 
|  |     60 |         * Get the scan results per UID.
 | 
|  |     61 |         * @return Pointer to the array of scan results per UID.
 | 
|  |     62 |         */
 | 
|  |     63 |         inline CArrayFix<TInt64>* UidResults() const;
 | 
|  |     64 | 
 | 
|  |     65 |         /**
 | 
|  |     66 |         * Get the scan results per filename extension.
 | 
|  |     67 |         * @return Pointer to the array of scan results per extension.
 | 
|  |     68 |         */
 | 
|  |     69 |         inline CArrayFix<TInt64>* ExtResults() const;
 | 
|  |     70 | 
 | 
|  |     71 |         /**
 | 
|  |     72 |         * Get the scan results per data group.
 | 
|  |     73 |         * @return Pointer to the array of scan results per group.
 | 
|  |     74 |         */
 | 
|  |     75 |         inline CArrayFix<TInt64>* GroupResults() const;
 | 
|  |     76 | 
 | 
|  |     77 |         /**
 | 
|  |     78 |         * Get UIDs to be scanned for.
 | 
|  |     79 |         * @return Pointer to the array of UIDs.
 | 
|  |     80 |         */
 | 
|  |     81 |         inline const CArrayFix<TUid>& Uids() const;
 | 
|  |     82 | 
 | 
|  |     83 |         /**
 | 
|  |     84 |         * Get the extensions to be scanned for.
 | 
|  |     85 |         * @return Pointer to the array of filename extensions.
 | 
|  |     86 |         */
 | 
|  |     87 |         inline const CDesCArray& Exts() const;
 | 
|  |     88 | 
 | 
|  |     89 |         /**
 | 
|  |     90 |         * Get the directories to be scanned.
 | 
|  |     91 |         * @return Pointer to the array of directory paths.
 | 
|  |     92 |         */
 | 
|  |     93 |         inline const CDesCArray& Dirs() const;
 | 
|  |     94 | 
 | 
|  |     95 |         /**
 | 
|  |     96 |         * Get the special data directories to be scanned.
 | 
|  |     97 |         * @return Pointer to the array data dir - data group pairs.
 | 
|  |     98 |         */
 | 
|  |     99 |         inline const CDesCArray& DataDirs() const;
 | 
|  |    100 | 
 | 
|  |    101 |         /**
 | 
|  |    102 |         * 
 | 
|  |    103 |         * 
 | 
|  |    104 |         */
 | 
|  |    105 |         inline const CArrayFix<TInt>& DataDirGroups() const;
 | 
|  |    106 |         
 | 
|  |    107 |         /**
 | 
|  |    108 |         * Get the files excluded from directory to be scanned.
 | 
|  |    109 |         */
 | 
|  |    110 |         inline const CArrayPtrFlat<CDesCArray>& DataDirExcludedFiles() const;
 | 
|  |    111 | 
 | 
|  |    112 |         /**
 | 
|  |    113 |         * Get the drive that is currently scanned
 | 
|  |    114 |         * @return Drive current drive
 | 
|  |    115 |         */
 | 
|  |    116 |         inline const TDriveNumber CurrentDrive() const;
 | 
|  |    117 | 
 | 
|  |    118 |         /**
 | 
|  |    119 |         * Add new file size to the result array.
 | 
|  |    120 |         * @param aUid The file UID type in question
 | 
|  |    121 |         * @param aSize Size of the file
 | 
|  |    122 |         */
 | 
|  |    123 |         inline void AddSizeByUidL(TInt aUid, TInt64 aSize);
 | 
|  |    124 | 
 | 
|  |    125 |         /**
 | 
|  |    126 |         * Add new file size to the result array.
 | 
|  |    127 |         * @param aExt Filename extension type in question
 | 
|  |    128 |         * @param aSize Size of the file
 | 
|  |    129 |         */
 | 
|  |    130 |         inline void AddSizeByExtL(TInt aExt, TInt64 aSize);
 | 
|  |    131 | 
 | 
|  |    132 |         /**
 | 
|  |    133 |         * Add scan result af a specific data group.
 | 
|  |    134 |         * @param aGroupIndex Data group in question
 | 
|  |    135 |         * @param aSize Size of the file
 | 
|  |    136 |         */
 | 
|  |    137 |         inline void AddSizeByGroupL(TInt aGroupIndex, TInt64 aSize);
 | 
|  |    138 | 
 | 
|  |    139 |         /**
 | 
|  |    140 |         * Query if the directory is in the list of directories to be 
 | 
|  |    141 |         * excluded from scanning, or is a subdirectory of one
 | 
|  |    142 |         * @param aDirectory Path of the directory
 | 
|  |    143 |         * @return TBool
 | 
|  |    144 |         */
 | 
|  |    145 |         TBool IsExcludedDir(const TDesC& aDirectory) const;
 | 
|  |    146 | 
 | 
|  |    147 |         /**
 | 
|  |    148 |         * This function is otherwise similar to BaflUtils::FolderExists, but
 | 
|  |    149 |         * it also ETrue for drive root (e.g. "c:\")
 | 
|  |    150 |         * @param aFs File server session
 | 
|  |    151 |         * @param aDirectory Path of the directory
 | 
|  |    152 |         */
 | 
|  |    153 |         TBool FolderExists(RFs& aFs, const TDesC& aPath);
 | 
|  |    154 |         
 | 
|  |    155 |         /**
 | 
|  |    156 |         * Query if the directory is in the list of directories to be 
 | 
|  |    157 |         * excluded from scanning, or is a subdirectory of one
 | 
|  |    158 |         * @param aDirectory Path of the directory
 | 
|  |    159 |         * @return TBool
 | 
|  |    160 |         */
 | 
|  |    161 |         TBool IsSpecialDir(const TDesC& aDirectory) const;
 | 
|  |    162 | 
 | 
|  |    163 | 
 | 
|  |    164 |     private:
 | 
|  |    165 |        
 | 
|  |    166 |         /**
 | 
|  |    167 |         * C++ default constructor is prohibited.
 | 
|  |    168 |         */
 | 
|  |    169 |         CMsengInfoArray(TDriveNumber aDrive);
 | 
|  |    170 | 
 | 
|  |    171 |         /**
 | 
|  |    172 |         * By default Symbian OS constructor is private.
 | 
|  |    173 |         */
 | 
|  |    174 |         void ConstructL(TInt aNumberOfDataGroups, RFs& aFsSession, CResourceFile& aResFile);
 | 
|  |    175 | 
 | 
|  |    176 |         // Prohibit copy constructor if not deriving from CBase.
 | 
|  |    177 |         CMsengInfoArray( const CMsengInfoArray& );
 | 
|  |    178 |         // Prohibit assigment operator if not deriving from CBase.
 | 
|  |    179 |         CMsengInfoArray& operator= ( const CMsengInfoArray& );
 | 
|  |    180 | 
 | 
|  |    181 |     private:    // Data
 | 
|  |    182 |         // Root directories for scanning
 | 
|  |    183 |         CDesCArray* iDirArray;
 | 
|  |    184 | 
 | 
|  |    185 |         // Directories that are excluded from the normal scan
 | 
|  |    186 |         CDesCArray* iExcludedDirArray;
 | 
|  |    187 | 
 | 
|  |    188 |         // Directories scanned as a whole excluding listed files
 | 
|  |    189 |         CDesCArray* iDataDirArray;
 | 
|  |    190 |         CArrayFix<TInt>* iDataDirGroupArray;
 | 
|  |    191 |         CArrayPtrFlat<CDesCArray>* iDataDirExclArray;
 | 
|  |    192 | 
 | 
|  |    193 |         // The drive that is currently scanned
 | 
|  |    194 |         TDriveNumber iCurrentScannedDrive;
 | 
|  |    195 |         
 | 
|  |    196 |         // The following  arrays are indexed using values from enumerations
 | 
|  |    197 |         // TUidTypes and TExtTypes
 | 
|  |    198 | 
 | 
|  |    199 |         // Results are inserted into these arrays
 | 
|  |    200 |         CArrayFix<TInt64>* iUidResultArray;
 | 
|  |    201 |         CArrayFix<TInt64>* iExtResultArray;
 | 
|  |    202 |         CArrayFix<TInt64>* iGroupResultArray;
 | 
|  |    203 | 
 | 
|  |    204 |         // UIDs and extensions, which are searched,
 | 
|  |    205 |         // are in these  two arrays
 | 
|  |    206 |         CArrayFix<TUid>* iUidArray;
 | 
|  |    207 |         CDesCArray* iExtArray;
 | 
|  |    208 |     };
 | 
|  |    209 | 
 | 
|  |    210 | #include "msenginfoarray.inl"
 | 
|  |    211 | 
 | 
|  |    212 | #endif      // CMSENGINFOARRAY_H   
 | 
|  |    213 |             
 | 
|  |    214 | // End of File
 |