diff -r 000000000000 -r a2952bb97e68 mmappcomponents/collectionhelper/inc/mpxdeletehelper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappcomponents/collectionhelper/inc/mpxdeletehelper.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,220 @@ +/* +* 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: Delete helper +* +*/ + + +#ifndef C_MPX_DELETE_HELPER_H +#define C_MPX_DELETE_HELPER_H + +#include +#include +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class MMPXCollectionUtility; +class MMPXPlaybackUtility; +class MMPXHarvesterUtility; +class MMPXCHelperObserver; +class CMPXCollectionPath; + + +/** + * Delete Helper + * + * @lib mpxcollectionhelper.lib + * @since S60 3.0 + */ +NONSHARABLE_CLASS( CMPXDeleteHelper ) : public CActive, + public MThumbnailManagerObserver + { +public: + + /** + * Two-Phased Constructor + * @param aCollectionUtility reference to a collection utility + * @param aHarvesterUtility reference to a harvester utility + * @param aObserver observer to callback upon completion of the operation + * @return new instance of CMPXDeleteHelper + */ + static CMPXDeleteHelper* NewL(MMPXCollectionUtility& aCollectionUtility, + MMPXHarvesterUtility& aHarvesterUtility, + MMPXCHelperObserver& aObserver); + + /** + * Virtual Destructor + */ + virtual ~CMPXDeleteHelper(); + +public: // New functions + + /** + * Delete all items in a collection path + * @param aPath, collection path to delete + */ + void DeleteL( CMPXCollectionPath& aPath ); + + /** + * Handles any collection message callbacks from collection helper + */ + void HandleCollectionMessage(CMPXMessage* aMessage, TInt aErr); + + /** + * Stop deleting + * + */ + void Stop(); + +private: + + /** + * From CActive + * Handles an active object's request completion event + */ + void RunL(); + + /** + * From CActive + * Implements cancellation of an outstanding request. + */ + void DoCancel(); + + /** + * Performs incremental delete operation + */ + void DoTaskStep(); + + /** + * Performs incremental delete operation + */ + void DoTaskStepL(); + + /** + * Completes delete operation request and notifies the client + */ + void CompleteDelete( TInt aErr ); + + /** + * Finish the delete operation + * @param aErr error + */ + void DoCompleteDeleteL( TInt aErr ); + + /** + * Resets members to get ready for the next client request + */ + void Reset(); + + /** + * Retrieves a list of file URIs associated with the path + */ + void RetrieveFileListL(); + + /** + * Perfoms cleanup of all unused data before delete + */ + void StartDeleteL(); + + /** + * Deletes one file from the file system then removes it from the + * collection + */ + void DeleteL(); + + /** + * Deletes the file from the file system and harvester's database + * @return ETrue if the file has been deleted from the file system; + * otherwise EFalse. + */ + TBool DeleteFileL(); + + /** + * Connect to usbman. + */ + void ConnectUsbMan(); + + // MThumbnailManagerObserver for getting thumbnails + void ThumbnailPreviewReady( + MThumbnailData& aThumbnail, TThumbnailRequestId aId ); + + void ThumbnailReady( + TInt aError, + MThumbnailData& aThumbnail, TThumbnailRequestId aId ); + +private: + + /** + * Constructor + * @param aCollectionUtility reference to a collection utility + * @param aHarvesterUtility reference to a harvester utility + * @param aObserver observer to callback upon completion of the operation + */ + CMPXDeleteHelper(MMPXCollectionUtility& aCollectionUtility, + MMPXHarvesterUtility& aHarvesterUtility, + MMPXCHelperObserver& aObserver); + + /** + * 2nd phase constructor + */ + void ConstructL(); + + private: + + /* + * state for deleting one item + */ + enum TMPXDeleteState + { + EMPXIdle, + EMPXInitDelete, + EMPXPreparation, + EMPXDelete + }; + +private: // data + MMPXCollectionUtility& iCollectionUtil; + MMPXHarvesterUtility& iHarvester; + MMPXCHelperObserver& iObserver; + + MMPXPlaybackUtility* iPbUtil; + + CMPXCollectionPath* iDeletePath; + CDesCArray* iFiles; + + TBool iMoreToDo; + TBool iHadInUse; + TBool iCancelled; + + TMPXDeleteState iState; + + CMPXMessageArray* iMessageArray; + TInt iItemsCount; + TInt iRetrievedItemsCount; + TInt iDeletePercent; + TInt iDeleteIncFactor; + TInt iDeleteCount; + RFs iFs; // FsSession (owned) + CThumbnailManager* iTNManager; + RUsb iUsbMan; + TBool iUsbManConnected; + + }; + +#endif // C_MPX_DELETE_HELPER_H