mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h
changeset 0 a2952bb97e68
child 9 bee149131e4b
child 25 d881023c13eb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h	Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2009 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:  Enumerator objects
+*
+*/
+
+
+#ifndef CABSTRACTMEDIAMTPDATAPROVIDERENUMERATOR_H
+#define CABSTRACTMEDIAMTPDATAPROVIDERENUMERATOR_H
+
+#include <e32base.h>
+#include <d32dbms.h>
+
+#include "mmmtpenumerationcallback.h"
+#include "cmmmtpdpperflog.h"
+
+// keep here to avoid warning on urel
+_LIT( KMpxGetAllPlaylist, "MpxGetAllPlaylist" );
+_LIT( KMpxGetPlaylistName, "MpxGetPlaylistName" );
+_LIT( KMpxQueryPlaylistReference, "MpxQueryPlaylistReference" );
+_LIT( KObjectManagerObjectUid, "ObjectManagerObjectUid" );
+_LIT( KObjectManagerInsert, "ObjectManagerInsert" );
+_LIT( KObjectManagerHandle, "ObjectManagerHandle" );
+_LIT( KReferenceManagerSetReference, "ReferenceManagerSetReference" );
+
+// Forward declarations
+class MMTPDataProviderFramework;
+class MMTPObjectMgr;
+class CAbstractMediaMtpDataProvider;
+class CMTPObjectMetaData;
+class CMmMtpDpMetadataAccessWrapper;
+class CMPXMediaArray;
+
+/**
+* Defines file enumerator.  Enumerates all files/directories under a
+* specified path or storage
+*/
+class CAbstractMediaMtpDataProviderEnumerator: public CActive
+    {
+public:
+    /**
+    * Two phase constructor
+    * @param aFramework Reference to MMTPDataProviderFramework
+    * @param aDataProvider Reference to Abstract Media DataProvider
+    * @return A pointer to a new instance of the object
+    */
+    static CAbstractMediaMtpDataProviderEnumerator* NewL( MMTPDataProviderFramework& aFramework,
+        CAbstractMediaMtpDataProvider& aDataProvider );
+
+    /**
+    * destructor
+    */
+    ~CAbstractMediaMtpDataProviderEnumerator();
+
+    /**
+    * Kick off the enumeration on the specified storage
+    * @param aStorageId storage to be enumerated
+    */
+    void StartL( TUint32 aStorageId );
+
+protected: // from CActive
+    /**
+    * Cancel the enumeration process
+    */
+    void DoCancel();
+
+    void RunL();
+
+    /**
+    * Ignore the error, continue with the next one
+    */
+    TInt RunError( TInt aError );
+
+private:
+    /**
+    * Standard C++ Constructor
+    * @param aFramework Reference to MMTPDataProviderFramework
+    * @param aDataProvider Reference to Abstract Media DataProvider
+    */
+    CAbstractMediaMtpDataProviderEnumerator( MMTPDataProviderFramework& aFramework,
+        CAbstractMediaMtpDataProvider& aDataProvider );
+
+    void ConstructL();
+
+    /**
+    * Called when the enumeration is completed
+    */
+    void SignalCompleteL( MMTPEnumerationCallback& aCallback,
+        TInt aError = KErrNone );
+
+    void ScanStorageL( TUint32 aStorageId );
+
+    /**
+    * Scan next storage
+    */
+    void ScanNextL();
+
+    /**
+    * Add a file entry to the object store
+    * @param aPath current scanned file path
+    */
+    void AddEntryL( const TDesC& aSuid );
+
+    /**
+    * Add references of specified abstract media into reference db
+    * @param aAbstractMediaName, specify the abstract media of which references should be added into db
+    * @param aReferences, suid array which stored references
+    */
+    void AddReferencesL( const TDesC& aAbstractMediaName, CDesCArray& aReferences );
+
+private:
+    // Owned
+    /** MMTPDataProviderFramework used to access MTP components*/
+    MMTPDataProviderFramework& iFramework;
+
+    /** MTP Object Manager */
+    MMTPObjectMgr& iObjectMgr;
+
+    /** MTP Data Provider ID */
+    TUint iDataProviderId;
+
+    /** Provides Callback mechanism for completion of enumeration*/
+    CAbstractMediaMtpDataProvider& iDataProvider;
+
+    TParse iPath;
+    TEntryArray iEntries;
+    TInt iFirstUnprocessed;
+    RArray<TUint> iStorages;
+    TUint32 iStorageId;
+    TUint32 iParentHandle;
+
+    CMPXMediaArray* iAbstractMedias;
+    TInt iCount;
+    TInt iCurrentIndex;
+
+#if defined(_DEBUG) || defined(MMMTPDP_PERFLOG)
+    CMmMtpDpPerfLog* iPerfLog;
+#endif
+
+    };
+
+#endif // CABSTRACTMEDIAMTPDATAPROVIDERENUMERATOR_H