diff -r 491b3ed49290 -r 65326cf895ed filemanager/Engine/inc/CFileManagerEngine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/Engine/inc/CFileManagerEngine.h Wed Sep 01 12:31:07 2010 +0100 @@ -0,0 +1,928 @@ +/* +* Copyright (c) 2002-2008 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: Main class of the File Manager Engine +* +*/ + + + +#ifndef CFILEMANAGERENGINE_H +#define CFILEMANAGERENGINE_H + +// INCLUDES +#include +#include +#include +#include +#include "MFileManagerProcessObserver.h" +#include "FileManagerEngine.hrh" +#include "TFileManagerDriveInfo.h" +#include "CFileManagerRestoreSettings.h" + +// CONSTANTS +// File Manager engine spcific error codes +// defined numbers should be far away from system wide error code numbers +const TInt KErrFmgrSeveralFilesInUse = -4500; +const TInt KErrFmgrDefaultFolder = -4501; +const TInt KErrFmgrNotSupportedRemotely = -4502; + +// FORWARD DECLARATIONS +class CGflmNavigatorModel; +class CFileManagerItemProperties; +class CFileManagerActiveDelete; +class CFileManagerActiveSize; +class CFileManagerActiveExecute; +class CFileManagerRefresher; +class CFileManagerFileSystemEvent; +class CFileManagerUtils; +//class CMGXFileManager; +class CFileManagerItemFilter; +class CFileManagerRemovableDriveHandler; +class CFileManagerRemoteDriveHandler; +class CFileManagerDocHandler; +class CFileManagerBackupSettings; +class CFileManagerRestoreSettings; +class CFileManagerActiveRename; +class CFileManagerFeatureManager; +class MAknServerAppExitObserver; + + +// CLASS DECLARATION +/** +* This class implements the main functionalities of File Manager Engine +* +* @lib FileManagerEngine.lib +* @since 2.0 +*/ +NONSHARABLE_CLASS(CFileManagerEngine) : public CBase + { + + public: + + // Engine state + enum TState + { + ENavigation = 0, // For using navigation list model + ESearch // For using search list model + }; + + // Sort method + enum TSortMethod + { + EByName = 0, + EByType, + EMostRecentFirst, + ELargestFirst, + EByMatch + }; + + public: + /** + * Two-phased constructor. + * @param aFs Shareable file server session, see RFs::ShareProtected() + * @return Pointer to a CFileManagerEngine instance + */ + IMPORT_C static CFileManagerEngine* NewL( RFs& aFs ); + + /** + * Destructor. + */ + IMPORT_C ~CFileManagerEngine(); + + public: // Interface + + /** + * Set currently viewed memory + * @since 2.0 + * @param aMemory The memory type + * @return system wide error code + */ + IMPORT_C TInt SetMemoryL( TFileManagerMemory aMemory ); + + /** + * Returns the currently viewed memory + * @since 2.0 + * @return TFileManagerMemory, the memory type + */ + IMPORT_C TFileManagerMemory Memory() const; + + /** + * Returns selected views item in array, which ListBox can show + * @since 2.0 + * @return Array of formatted strings of current view + */ + IMPORT_C MDesCArray* FileList() const; + + /** + * Engine signals events with this observer + * @since 2.0 + * @param aObserver The process observer or NULL, ownership is not transferred + */ + IMPORT_C void SetObserver( MFileManagerProcessObserver* aObserver ); + + /** + * Returns full path of the current directory + * @since 2.0 + * @return Full path of current directory + */ + IMPORT_C TPtrC CurrentDirectory() const; + + /** + * Returns localized name of the current directory + * @since 2.0 + * @return Full path of current directory + */ + IMPORT_C TPtrC LocalizedNameOfCurrentDirectory() const; + + /** + * This backsteps the navigator to previously visible folder + * @since 2.0 + */ + IMPORT_C void BackstepL(); + + /** + * Returns the type of given item index in CFileManagerItemProperties bitmask + * @since 2.0 + * @param aIndex The index to current view index. + * @return CFileManagerItemProperties bitmask + */ + IMPORT_C TUint32 FileTypeL( const TInt aIndex ) const; + + /** + * Returns the type of given item index in CFileManagerItemProperties bitmask + * @since 2.0 + * @param aFullPath Full path to item which type is needed.. + * @return CFileManagerItemProperties bitmask + */ + IMPORT_C TUint32 FileTypeL( const TDesC& aFullPath ) const; + + /** + * Delete file(s) or folder, caller should delete the returned object. + * @since 2.0 + * @param aIndexList List of indexes from current directory which is going to be deleted + * @return pointer to newly created CFileManagerActiveDelete object + */ + IMPORT_C CFileManagerActiveDelete* CreateActiveDeleteL( + CArrayFixFlat< TInt >& aIndexList ); + + /** + * Creates a new folder + * @since 2.0 + * @param aFolderName Name of the new folder which is created current directory + */ + IMPORT_C void NewFolderL( const TDesC& aFolderName ); + + /** + * Set the current item name + * @since 5.0 + * @param aFileName File name to be set + */ + IMPORT_C void SetCurrentItemName( const TDesC& aFileName ); + + /** + * Rename the file or folder. + * @since 3.2 + * @param aIndex index of the file or folder from current directory + * @param aNewFileName name where that file or folder name is changed + * @return System wide error code + */ + IMPORT_C void RenameL( const TInt aIndex, const TDesC& aNewFileName ); + + /** + * Opens the file or folder + * @since 2.0 + * @param aIndex from the current directory list + */ + IMPORT_C void OpenL( const TInt aIndex ); + + /** + * Returns the depth of the current folder + * @since 2.0 + * @return Current depth in folder tree, 0 is root, 1 one folder down + */ + IMPORT_C TInt FolderLevel(); + + /** + * Checks from current directory, if the name is found + * @since 2.0 + * @param aString Name which is matched with current directory files and folders + * @return ETrue if exists + * EFalse if not exists in current directory + */ + IMPORT_C TBool IsNameFoundL(const TDesC& aString); + + /** + * returns number of the current drive. + * @since 2.0 + * @returns TDriveNumber type, or KErrNotFound if no current drive set + */ + IMPORT_C TInt CurrentDrive(); + + /** + * returns info class of the item + * @since 2.0 + * @param aIndex to current directory item + * @return class which contains all necessary data for info box, receiver must delete it + */ + IMPORT_C CFileManagerItemProperties* GetItemInfoL( const TInt aIndex ); + + /** + * returns info about MMC status + * @since 2.0 + * @return class which contains all necessary data for MMC status + */ + IMPORT_C TFileManagerDriveInfo GetMMCInfoL() const; + + /** + * Sets the state of the engine + * @since 2.0 + * @param aState TState, the state type + */ + IMPORT_C void SetState( TState aState ); + + /** + * Gets the state of the engine + * @since 2.0 + * @return TState, the state type + */ + IMPORT_C CFileManagerEngine::TState State() const; + + /** + * Updates the current view + * @since 2.0 + */ + IMPORT_C void RefreshDirectory(); + + /** + * Returns string which was used for finding items + * @since 2.0 + * @return Ref to string + */ + IMPORT_C TPtrC SearchString() const; + + /** + * Is given file name valid + * @since 2.0 + * @param aDriveAndPath root path + * @param aName name of the file + * @param aIsFolder ETrue folder and EFalse file name + * @return ETrue if file name is valid + */ + IMPORT_C TBool IsValidName( + const TDesC& aDriveAndPath, + const TDesC& aName, + TBool aIsFolder ) const; + + /** + * Check that if given file name contains illegal characters + * @since 2.0 + * @param aName name of the file + * @return ETrue if file name is valid + */ + IMPORT_C TBool IllegalChars( const TDesC& aName ) const; + + /** + * Check that there is enough memory to do specific operation + * @since 2.0 + * @param aToFolder Target memory + * @param aSize Space needed bytes + * @param aOperation Move or Copy + * @return ETrue if there is enough space for operation + */ + IMPORT_C TBool EnoughSpaceL( + const TDesC& aToFolder, + TInt64 aSize, + MFileManagerProcessObserver::TFileManagerProcess aOperation ) const; + + /** + * Sets the file system event on or off + * @since 2.0 + * @param aSet ETrue sets file system event + * EFalse turns events off + */ + IMPORT_C void FileSystemEvent( TBool aEventOn ); + + /** + * Returns the current focus index if rename, copy/move or new folder + * operation has happened + * @since 2.0 + * @return index to current focused item, + * KErrNotFound if not found + */ + IMPORT_C TInt CurrentIndex(); + + /** + * returns the file name with full path which is behind given index + * @since 2.0 + * @param aIndex to current directory item + * @return HBufC buffer which caller must release after usage + */ + IMPORT_C HBufC* IndexToFullPathL( const TInt aIndex) const; + + /** + * returns the file name with full path which is behind given index + * @since 3.2 + * @param aIndex to current directory item + * @return HBufC buffer which caller must release after usage + */ + IMPORT_C HBufC* IndexToFullPathLC( const TInt aIndex ) const; + + /** + * Checks given item that can it be deleted. + * @since 2.0 + * @param aFullPath full path to item which is checked + * @returns ETrue if item can be deleted, EFalse if not + */ + TBool CanDelete( const TDesC& aFullPath ) const; + + /** + * returns localized name of the given item + * @since 2.0 + * @param aFullPath full path to item which is checked + * @returns TDesC reference to localized name + */ + IMPORT_C TPtrC LocalizedName( const TDesC& aFullPath ) const; + + /** + * returns the count of files in folder + * @since 2.0 + * @return count of files in folder + */ + IMPORT_C TInt FilesInFolderL(); + + /** + * Cancels the refresh operation + * @since 2.0 + * @return ETrue if refresh process is cancelled, + * EFalse if there wasn't any refresh process ongoing + */ + IMPORT_C TBool CancelRefresh(); + + /** + * Checks given index is it folder, this call is very quick + * because it uses icon information to retrieve item type + * @since 2.0 + * @param aIndex index to item + * @return ETrue item behind the index is folder + * EFalse item behind the index is not folder + */ + IMPORT_C TBool IsFolder( const TInt aIndex ) const; + + /** + * Asynchronous notifies about drive added or changed + * @since 5.2 + * @param aPtr Pointer to an instance of this class + * @return 0 + */ + static TInt DriveAddedOrChangeAsyncL( TAny* aPtr ); + + /** + * Notifies about drive added or changed + * @since 3.1 + */ + void DriveAddedOrChangedL(); + + /** + * Notifies about folder content changed + * @since 3.2 + */ + void FolderContentChangedL(); + + /** + * Resolves the icon id of the given item index + * @since 2.7 + * @param aIndex index to item + * @return Icon id of the item behind the index + * + */ + IMPORT_C TInt IconIdL( const TInt aIndex ) const; + + /** + * Checks is given folder system folder + * @since 3.1 + * @param aFull Full path to item + * @return ETrue if folder is system folder, EFalse if not + */ + IMPORT_C TBool IsSystemFolder( const TDesC& aFullPath ) const; + + /** + * Gets current drive name + * @since 3.2 + * @return Drive name + */ + IMPORT_C TPtrC CurrentDriveName(); + + /** + * Renames the current drive + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aName The new name + * @return System wide error code + */ + IMPORT_C TInt RenameDrive( + const TInt aDrive, const TDesC& aName ); + + /** + * Retrieves current drive information + * @param aInfo A reference to a TFileManagerDriveInfo object + */ + IMPORT_C void GetDriveInfoL( TFileManagerDriveInfo& aInfo ); + + /** + * Sets password on current drive + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aOld The old password + * @param aNew The new password + * @return System wide error code + */ + IMPORT_C TInt SetDrivePassword( + const TInt aDrive, + const TMediaPassword& aOld, + const TMediaPassword& aNew ); + + /** + * Removes password from current drive + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aPwd The current password + * @return System wide error code + */ + IMPORT_C TInt RemoveDrivePassword( + const TInt aDrive, + const TMediaPassword& aPwd ); + + /** + * Unlocks the current drive + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aPwd The current password + * @return System wide error code + */ + IMPORT_C TInt UnlockDrive( + const TInt aDrive, + const TMediaPassword& aPwd ); + + /** + * Starts format process + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + */ + IMPORT_C void StartFormatProcessL( const TInt aDrive ); + + /** + * Starts eject process + * @since 3.2 + * @param aDrive Drive number EDriveA...EDriveZ + */ + IMPORT_C void StartEjectProcessL( const TInt aDrive ); + + /** + * Initiates backup or restore process + * @since 3.1 + * @param aProcess The process to start: + * EBackupProcess or ERestoreProcess + */ + IMPORT_C void StartBackupProcessL( + MFileManagerProcessObserver::TFileManagerProcess aProcess ); + + /** + * Cancels ongoing process + * @since 3.1 + * @param aProcess The process to cancel + */ + IMPORT_C void CancelProcess( + MFileManagerProcessObserver::TFileManagerProcess aProcess ); + + /** + * Get drive state + * @since 3.1 + * @param aState For TFileManagerDriveInfo::TDriveState bits + * @param aPath Only drive letter is used + * @return System wide error code + */ + IMPORT_C TInt DriveState( TUint32& aState, const TDesC& aPath ) const; + + /** + * Get drive state + * @since 3.1 + * @param aState For TFileManagerDriveInfo::TDriveState bits + * @param aDrive + * @return System wide error code + */ + IMPORT_C TInt DriveState( TUint32& aState, const TInt aDrive ) const; + + /** + * Determine if given file must be protected (kept on the device) + * @since 3.1 + * @param aFullPath Full path to item + * @param aIsProtected The protection status + * @return System wide error code + */ + IMPORT_C TInt IsDistributableFile( const TDesC& aFullPath, + TBool& aIsProtected ) const; + + /** + * Connects or disconnects remote drive + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aConnect ETrue when connecting, EFalse when disconnecting + * @return System wide error code + */ + IMPORT_C TInt SetRemoteDriveConnection( + const TInt aDrive, TBool aConnect ); + + /** + * Deletes the remote drive settings from remote storage framework + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @return System wide error code + */ + IMPORT_C TInt DeleteRemoteDrive( const TInt aDrive ); + + /** + * Gets drive root directory + * @since 3.1 + * @param aDrive Drive number EDriveA...EDriveZ + * @return Reference to root directory string + */ + IMPORT_C TPtrC DriveRootDirectory( const TInt aDrive ) const; + + /** + * Gets backup settings + * @since 3.1 + * @return Reference to backup settings. + */ + IMPORT_C CFileManagerBackupSettings& BackupSettingsL(); + + /** + * Gets restore settings + * @since 3.1 + * @return Reference to restore settings. + */ + IMPORT_C CFileManagerRestoreSettings& RestoreSettingsL(); + + /** + * Gets drive name + * @since 3.1 + * @param aDrive Drive that name is required + * @return Reference to drive name. + */ + IMPORT_C TPtrC DriveName( const TInt aDrive ); + + /** + * Gets drive info + * @since 3.1 + * @param aDrive Drive that info is required + * @param aInfo For storing drive info + */ + IMPORT_C void GetDriveInfoL( + const TInt aDrive, TFileManagerDriveInfo& aInfo ) const; + + /** + * Gets restore info array + * @since 3.1 + * @param aArray For storing restore info + * @param aDrive For getting info from specific drive + */ + IMPORT_C void GetRestoreInfoArrayL( + RArray< CFileManagerRestoreSettings::TInfo >& aArray, + const TInt aDrive = KErrNotFound ) const; + + /** + * Checks if any ejectable drive is present + * @since 3.1 + * @return ETrue if present, otherwise EFalse + */ + IMPORT_C TBool AnyEjectableDrivePresent() const; + + /** + * Ensures that contents of a directory are up to date + * including remote drives when current view is updated + * @since 3.1 + */ + IMPORT_C void ForcedRefreshDirectory(); + + /** + * Calculates the total size of given items + * @since 3.2 + * @param aIndexList List of indexes from current directory + * @return Total size + */ + IMPORT_C TInt64 GetFileSizesL( + const CArrayFixFlat< TInt >& aIndexList ); + + /** + * Gets navigation level, the depth of backstep stack + * @since 3.2 + * @return The navigation level + */ + IMPORT_C TInt NavigationLevel() const; + + /** + * Gets drive name and letter as combined formatted text. + * @since 5.0 + * @param aDrive Drive number EDriveA...EDriveZ + * @param aTextIdForDefaultName TextId of default name format string + * @param aTextIdForName TextId of name format string + * @return Text containing drive letter and name + */ + IMPORT_C HBufC* GetFormattedDriveNameLC( + const TInt aDrive, + const TInt aTextIdForDefaultName, + const TInt aTextIdForName = 0 ) const; + + /** + * Returns info class of the item + * @since 5.0 + * @param aIndex to current directory item + * @return class which contains all necessary data for info box, receiver must delete it + */ + IMPORT_C CFileManagerItemProperties* GetItemInfoLC( const TInt aIndex ); + + /** + * Sets search string. + * @since 3.2 + * @param aSearchString Search string + */ + IMPORT_C void SetSearchStringL( const TDesC& aSearchString ); + + /** + * Sets search folder. + * @since 3.2 + * @param aSearchString Search folder + */ + IMPORT_C void SetSearchFolderL( const TDesC& aSearchFolder ); + + /** + * Sets the directory with backsteps. + * @since 3.2 + * @param aDirectory New current directory + */ + IMPORT_C void SetDirectoryWithBackstepsL( const TDesC& aDirectory ); + + /** + * Stores current navigation index. + * @since 3.2 + * @param aIndex The index to current view index. + */ + IMPORT_C void SetCurrentIndex( const TInt aIndex ); + + /** + * Sets the sort method of the engine + * @since 5.0 + * @param aSortMethod TSortMethod, the sort method type + */ + IMPORT_C void SetSortMethod( TSortMethod aSortMethod ); + + /** + * Gets the sort method of the engine + * @since 5.0 + * @return TSortMethod, the sort method type + */ + IMPORT_C CFileManagerEngine::TSortMethod SortMethod() const; + + /** + * Re-sorts the current view + * @since 5.0 + */ + IMPORT_C void RefreshSort(); + + /** + * Gets the feature manager + * @since 3.2 + */ + IMPORT_C CFileManagerFeatureManager& FeatureManager() const; + + /** + * Set server application exit observer + * @Param aObserver The ServerAppExit observer or NULL, ownership is not transferred + */ + IMPORT_C void SetAppExitOb( MAknServerAppExitObserver* aObserver ); + + /** + * Deletes the backup archives selected using + * CFileManagerRestoreSettings::SetSelection() method. + * @since 5.0 + */ + IMPORT_C void DeleteBackupsL(); + + /** + * Check if a drive is mounted + * @Param aDrive The target drive to check + * @Return TBool to indicate check result + * @since 5.2 + */ + IMPORT_C TBool IsDriverMounted( TInt aDrive ); + + public: + + /** + * Set whether the file is a sis file + * @Param aSisFile file is or not a sis file + */ + void SetSisFile( TBool aSisFile ); + + /* + * Notice the ServerAppExit event + * @Param aReason the reason of the server application exit + */ + void NoticeServerAppExit( TInt aReason ); + + /** + * Sets embedded app status + * @param aStatus ETrue if embedded app on, EFalse if not + */ + void EmbeddedAppStatus( TBool aStatus ); + + /* MFileManagerWaitNote */ + void ShowWaitDialogL( MAknBackgroundProcess& aProcess ); + + //CMGXFileManager& MGXFileManagerL(); + + RFs& Fs() const; + + TBool HasAppRemoteDriveSupport( TUid aUid ); + + TBool IsRemoteDriveConnected( const TInt aDrive ) const; + + TBool BackupFileExistsL( const TInt aDrive ) const; + + // Ensures that drive info is refreshed on next update + void ClearDriveInfo(); + + // Cancels ongoing transfer + void CancelTransfer( const TDesC& aFullPath ); + + /** + * Gets the latest backup time + * @since 5.0 + * @param aBackupTime Stores the latest backup time + * @return System wide error code + */ + TInt LatestBackupTime( TTime& aBackupTime ); + + private: + /** + * C++ default constructor. + */ + CFileManagerEngine( RFs& aFs ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + // Adds current dir fullpath to given name, returns HBufC buffer which must be released + HBufC* AddFullPathLC( const TDesC& aName, const TBool aIsFolder ); + + // Sets file system event watcher for given path + void SetFileSystemEventL( const TDesC& aFullPath = KNullDesC ); + + // For checking mount state + TInt CheckDriveMountL( TInt aDrive ) const; + + // For getting drive info + void GetDriveInfoL( + const TDesC& aPath, TFileManagerDriveInfo& aInfo ) const; + + // Opens file + void OpenFileL( const TDesC& aFullPath ); + + // Opens directory + void OpenDirectoryL( const TDesC& aFullPath ); + + // Checks is current drive available + TBool CurrentDriveAvailable(); + + /** + * Start asynchronous disk event notification timer + * @since 5.2 + */ + void StartDiskEventNotifyTimerAsyncL(); + + /** + * Stop asynchronous disk event notification timer + * @since 5.2 + */ + void StopDiskEventNotifyTimerAsync(); + + private: + + // Own: General File List Model is used via this object. + CGflmNavigatorModel* iNavigator; + + // Ref: For file operations + RFs& iFs; + + // Normal or search state + TState iState; + + // Own: String which was used in latest search + HBufC* iSearchString; + + // Own: String which is used for search process + HBufC* iSearchProcessString; + + // Own: AO for async GFLM refresh operation + CFileManagerRefresher* iRefresher; + + // Ref: Handle to current observer + MFileManagerProcessObserver* iProcessObserver; + + // Own: Handles file system events + CFileManagerFileSystemEvent* iFileSystemEvent; + + // item name of current index, used to search current index + TFileName iCurrentItemName; + + // Own: Folder size calculation + CFileManagerActiveSize* iActiveSize; + + // Own: Checks drive notifications + CFileManagerFileSystemEvent* iDiskEvent; + + // Own: Indicates if embedded application is on + TBool iEmbeddedApplicationOn; + + // Own: MG2 update notification object + //CMGXFileManager* iMgxFileManager; + + // Own: Compines services of couple classes + CFileManagerUtils* iUtils; + + // Own: Used for item filtering + CFileManagerItemFilter* iItemFilter; + + // Own: Used for handling memory card etc functinalities + CFileManagerRemovableDriveHandler* iRemovableDrvHandler; + + // Own: Used for handling remote drive functinalities + CFileManagerRemoteDriveHandler* iRemoteDrvHandler; + + // Own: Used for opening files + CFileManagerDocHandler* iDocHandler; + + // Own: Used for backup settings + CFileManagerBackupSettings* iBackupSettings; + + // Own: Used for restore settings + CFileManagerRestoreSettings* iRestoreSettings; + + // Own: Indicates last drive available status + TBool iLastDriveAvailable; + + // Own: Stores current drive info + TFileManagerDriveInfo iCurrentDriveInfo; + + // Own: Indicates if current drive info is refreshed + TBool iCurrentDriveInfoRefreshed; + + // Own: Indicates if wait dialog is on + TBool iWaitDialogOn; + + // Own: Stores drive name + HBufC* iDriveName; + + // Own: Navigation indices + RArray< TInt > iNavigationIndices; + + // Own: Used for rename + CFileManagerActiveRename* iActiveRename; + + // Own: Used for storing search folder + HBufC* iSearchFolder; + + // Own: Indicates file system event status + TBool iFileSystemEventEnabled; + + // Own: Indicates if drive added or changed update is postponed + TBool iDriveAddedOrChangedPostponed; + + // Own: Manages runtime variated features + CFileManagerFeatureManager* iFeatureManager; + + // Ref: Handle to current ServerAppExit observer + MAknServerAppExitObserver* iObserver; + + //Own: Whether the file was a sis type + TBool iSisFile; + + //Own: postpone disk event notification while disk refresh is ongoing + CPeriodic* iDelayedDiskEventNotify; + }; + +#endif // CFILEMANAGERENGINE_H + +// End of File