--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filesystemuis/memscaneng/serverinc/mseng.h Mon Jan 18 20:09:41 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* 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:
+* The actual "engine".
+*
+*/
+
+
+#ifndef CMSENG_H
+#define CMSENG_H
+
+
+// SYSTEM INCLUDES
+#include <data_caging_path_literals.hrh>
+#include <badesca.h> // descriptor arrays
+#include <f32file.h> // enum TDriveNumber
+#include <stringresourcereader.h>
+#include <barsc2.h> // CResourceFile
+#include <barsread2.h> // RResourceReader
+
+
+// USER INCLUDES
+#include "msenguihandler.h"
+
+
+// FORWARD DECLARATIOS
+class CMsengScanner;
+class RFs;
+class MMsengUIHandler;
+
+
+// CONSTANTS
+
+// Resource file path
+_LIT(KMsengRscFilePath,"Z:mseng.rsc");
+
+
+// DATA TYPES
+
+/**
+* Type definition to handle arrays of integers
+* more conveniently
+*/
+typedef CArrayFixFlat<TInt> CIntArray;
+
+
+// CLASS DECLARATION
+
+/**
+* The actual "engine".
+* This is the class which the UI instantiates.
+*/
+class CMseng :public CBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * @param aUIHandler Reference to a class implementing MMsengUIHandler interface
+ */
+ IMPORT_C static CMseng* NewL(MMsengUIHandler& aUIHandler);
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMseng();
+
+ public: // New functions
+
+ /**
+ * Get the data groups.
+ * @return CDesCArray* containing the names of the data groups.
+ */
+ IMPORT_C CDesCArray* DataGroupsL() const;
+
+ /**
+ * Get the scan result. This array contains exacly one
+ * integer per data group.
+ * @return Array of integers.
+ */
+ IMPORT_C CArrayFix<TInt64>* ScanResultL() const;
+
+ /**
+ * Is there scanning going on?
+ * @return ETrue if there is scanning going on, otherwise EFalse.
+ */
+ IMPORT_C TBool ScanInProgress() const;
+
+ /**
+ * Get the amount of total and free space on a disk
+ * @param aTotal Amount of total space in bytes in substituted here.
+ * @param aFree Amount of free space in bytes in substituted here.
+ * @param aVolume Disk identifier, e.g. 'C'
+ */
+ IMPORT_C void DiskInfoL(TInt64& aTotal, TInt64& aFree, const TDriveNumber aVolume) const;
+
+ /**
+ * Get the amount of total and free RAM.
+ * @param aTotal Amount of total RAM in bytes in substituted here.
+ * @param aTotal Amount of free RAM in bytes in substituted here.
+ */
+ IMPORT_C static void MemInfoL(TInt64& aTotal, TInt64& aFree);
+
+ /**
+ * Start scanning memory.
+ * This means starting the actual work of the engine. Starts scanning,
+ * which runs until finished.
+ *
+ * The scanning is only supported for drives C and E, otherwise
+ * leave occurs with error KErrNotSupported.
+ *
+ * NOTE: the support for scanning E drive is not properly tested.
+ * It is assumed to have the same directory structure than in C.
+ *
+ * @param aDrive the drive to be scanned
+ */
+ IMPORT_C void ScanL(TDriveNumber aDrive);
+
+ /**
+ * Cancel ongoing scanning operation.
+ */
+ IMPORT_C void Cancel();
+
+ /**
+ * Check whether internal drive.
+ * @param aDrv Drive to be chanked.
+ * @return ETrue if internal drive, otherwise EFalse.
+ */
+ static TBool IsInternalDrive( RFs& aFs, const TInt aDrv );
+
+ /**
+ * Check whether removable drive.
+ * @param aDrv Drive to be chanked.
+ * @return ETrue if internal drive, otherwise EFalse.
+ */
+ static TBool IsRemovableDrive( RFs& aFs, const TInt aDrv );
+
+ private:
+
+ /**
+ * C++ default constructor is prohibited.
+ */
+ CMseng(MMsengUIHandler& aUIHandler);
+
+ /**
+ * By default Symbian OS constructor is private.
+ *
+ * Initialize iResultArray by reading the the data group
+ * names from resource file and setting all result values to zero.
+ * Initialize iDataGroupUidArray and iDataGroupExtArray
+ * from resource file.
+ */
+ void ConstructL();
+
+
+ // Prohibit copy constructor if not deriving from CBase.
+ CMseng( const CMseng& );
+ // Prohibit assigment operator if not deriving from CBase.
+ CMseng& operator= ( const CMseng& );
+
+
+ private: // Data members
+
+ MMsengUIHandler& iUIHandler;
+ CMsengScanner* iScanner;
+
+ // Number of data groups
+ TInt iNumberOfDataGroups;
+
+ // These arrays are needed to when calculating the result.
+ // They are indexed using values from enum TDataGroups.
+ // This creates the mapping between data groups and the
+ // UIDs and extensions belonging to a particular data group
+ CArrayPtrFlat<CIntArray>* iDataGroupUidArray;
+ CArrayPtrFlat<CIntArray>* iDataGroupExtArray;
+
+ RFs iFsSession;
+ CResourceFile* iResFile;
+ mutable TInt64 iFreeMemory;
+
+ };
+
+#endif // CMSENG_H
+
+// End of File