filemanager/Engine/inc/Cfilemanageractivedelete.h
changeset 0 6a9f87576119
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/Engine/inc/Cfilemanageractivedelete.h	Mon Jan 18 20:09:41 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2002-2007 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:  Deletes items
+*
+*/
+
+
+#ifndef CFILEMANAGERACTIVEDELETE_H
+#define CFILEMANAGERACTIVEDELETE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <AknWaitNoteWrapper.h>
+// FORWARD DECLARATIONS
+class CFileManagerEngine;
+class CDirScan;
+//class CMGXFileManager;
+class CFileManagerUtils;
+
+
+// CLASS DECLARATION
+/**
+*  Deletes items
+*  Delete operation is done one item at time, so that it can be cancelled
+*  during operation.
+*
+*  @lib FileManagerEngine.lib
+*  @since 2.0
+*/
+NONSHARABLE_CLASS(CFileManagerActiveDelete) : public CBase,
+                                              public MAknBackgroundProcess
+    {
+    public:
+        /**
+        * Two-phased constructor.
+        */
+        static CFileManagerActiveDelete* NewL(
+            CArrayFixFlat< TInt >& aIndexList,
+            CFileManagerEngine& aEngine,
+            CFileManagerUtils& aUtils );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CFileManagerActiveDelete();
+        
+    public: // From MAknBackgroundProcess
+
+        void StepL();
+        
+        TBool IsProcessDone() const;
+
+        void DialogDismissedL( TInt aButtonId );
+
+    public:
+        
+        /**
+        * Returns last known error code
+        * @since 2.0
+        * @param aFileName a refence to reserved buffer
+                 where file name related to error can be copied
+        * @return common error code
+        */        
+        IMPORT_C TInt GetError(TDes& aFileName);
+
+        /**
+        * Returns count of deleted DRM items
+        * @since 2.0
+        * @param aTotalCount (out) returns total count of deleted items
+        * @return count of deleted DRM items
+        */        
+        IMPORT_C TInt DeletedDrmItems( TInt& aTotalCount );
+
+        
+    private:
+        /**
+        * Constructor
+        */        
+        CFileManagerActiveDelete(
+            RFs& aFs,
+            CArrayFixFlat< TInt >& aIndexList,
+            CFileManagerEngine& aEngine,
+            CFileManagerUtils& aUtils );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+        
+    private: 
+        
+        /**
+        *  This function handles the directory item deletion.
+        *  Deletes one item per call
+        */
+        TBool DeleteItemsInDirectoryL();
+
+        /**
+        *  This function handles the file deletion.
+        */
+        void DeleteFileL(
+            const TDesC& aFullPath, const TBool aReadOnlyChecked = EFalse );
+
+        /**
+        *  This function checks is item file or directory.
+        */
+        TBool IsDir( const TDesC& aFullPath );
+
+        /**
+        *  This function sets the name returned to user.
+        */
+        void SetName( const TDesC& aFullPath, TBool aOverWrite = EFalse );
+
+        /**
+        *  This function checks is error ignored by delete.
+        */
+        TBool IsError( TInt aErr );
+
+        /**
+        *  This function sets the error returned to user.
+        */
+        void SetError( TInt aErr, const TDesC& aFullPath );
+
+        /**
+        *  This function flushes the notification array.
+        */
+        void FlushNotifications();
+
+    private: // Data
+        /// Ref: reference to engine created file server session
+        RFs& iFs;
+
+        /// Ref: array of items to be deleted from current view
+        CArrayFixFlat< TInt >& iIndexList;
+        
+        /// Current index in given array
+        TInt iCurrentIndex;
+        
+        /// When all folders are through, this is set
+        TBool iProcessDone;
+
+        /// Latest error
+        TInt iError;
+        
+        /// Own: latest deleted file name or file name which delete has failed
+        TFileName iFileName;
+        
+        /// current file index in CDirScan
+        TInt iFileIndex;
+        
+        /// Own: Used to scan directories
+        CDirScan* iDirScan;
+        
+        /// Own: Scan result is stored here
+        CDir*     iDir;
+                
+        /// Count of not deleted items
+        TInt iNotDeletedItems;
+        
+        /// Count of open items
+        TInt iOpenFiles;
+        
+        /// Own: buffer for storing the current item name to be deleted
+        HBufC* iStringBuffer;
+        
+        /// Ref: reference to engine instance
+        CFileManagerEngine& iEngine;
+
+        /// Own: full path of the item to be deleted
+        HBufC* iFullPath;
+
+        /// Count of deleted drm files
+        TInt    iDeletedDrmItems;
+
+        /// Count of deleted items
+        TInt    iDeletedItems;
+
+        // Ref: MG2 update notification object
+        //CMGXFileManager*            iMgxFileManager;
+
+        // Ref: reference to utils instance
+        CFileManagerUtils& iUtils;
+
+        // Own: Set if current drive is remote drive
+        TBool iIsRemoteDrive;
+
+        // Own: Buffer for storing delete items for MG2 notifications
+        CDesCArray* iRemovedItems;
+
+    };
+    
+#endif      // CFileManagerActiveFind_H
+    
+// End of File
+