mds_plat/content_listing_framework_collection_manager_api/inc/mediacollectionmanager.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/content_listing_framework_collection_manager_api/inc/mediacollectionmanager.h Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,340 @@
+/*
+* Copyright (c) 2006-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:
+* Description :
+*
+*/
+
+
+#ifndef MMEDIACOLLECTIONMANAGER_H
+#define MMEDIACOLLECTIONMANAGER_H
+
+
+#include <badesca.h>
+
+/// Propertie flags for media collections
+enum TMediaCollectionProperties
+ {
+ /// Collection items are in Phone memory
+ EMCPhoneMemoryCollection = 0x00000001,
+ /// Collection items are in MMC
+ EMCMmcCollection = 0x00000002
+ };
+
+class MMediaCollectionManager;
+class MMediaCollectionInfoExt;
+class MMediaCollectionManagerExt;
+class MMediaCollectionObserverExt;
+
+/**
+ * Factory for Media Collection Manager
+ *
+ * @lib MediaCollectionManager.lib
+ * @since S60 3.2
+ */
+class MediaCollectionManagerFactory
+ {
+public: // New functions
+
+ /**
+ * Create new instance of Media Collection Manager
+ * @return New instance of Media Collection Manager.
+ * Ownership is transferred to the client application.
+ */
+ IMPORT_C static MMediaCollectionManager* CreateCollectionManagerL();
+
+private:
+ // Prohibit C++ default constructor.
+ MediaCollectionManagerFactory();
+ // Prohibit Destructor.
+ ~MediaCollectionManagerFactory();
+ };
+
+/**
+ * Media Collection Info interface,
+ * use MMediaCollectionManager to get collections
+ *
+ * @lib N/A
+ * @since S60 3.2
+ */
+class MMediaCollectionInfo
+ {
+public:
+ virtual ~MMediaCollectionInfo() {}
+
+public:
+ /**
+ * Returns the name of the collection
+ * @since S60 3.2
+ * @return Name of the collection
+ */
+ virtual const TDesC& Name() const = 0;
+
+ /**
+ * Returns the id of the album
+ * @since S60 3.2
+ * @return The id of the album
+ */
+ virtual TInt Id() const = 0;
+
+ /**
+ * Returns list of media types that are defined for the collection.
+ * See media types from CLFContentListing.hrh TCLFMediaType
+ * @since S60 3.2
+ * @return List of media types that are defined for the collection.
+ */
+ virtual const RArray<TInt>& CollectionItemTypes() const = 0;
+
+ /**
+ * Returns collection propertie flags
+ * Properties are defined in TMediaCollectionProperties
+ * Should not be used in 5.0 or later!
+ * @since S60 3.2, depricated in 5.0
+ * @return Properties flags
+ */
+ virtual TInt32 Properties() const = 0;
+
+private: // Extension interface
+
+ /**
+ * This member is internal and not intended for use.
+ */
+ virtual MMediaCollectionInfoExt* Extension()
+ { return NULL; }
+ virtual const MMediaCollectionInfoExt* Extension() const
+ { return NULL; }
+ };
+
+
+/**
+ * Observer interface to get notification about changes in
+ * Media Collection Manager
+ *
+ * @lib N/A
+ * @since S60 3.2
+ */
+class MMediaCollectionObserver
+ {
+public:
+ /**
+ * Collection manager uses this method to notify about
+ * created/deleted/modified collections.
+ * @since 3.2
+ * @param aCollectionIdArray
+ */
+ virtual void CollectionChangedL(
+ const TArray<TInt>& aCollectionIdArray ) = 0;
+
+ /**
+ * Collection manager uses this method to notify about
+ * possible errors.
+ * @since 3.2
+ * @param aError Collection manager error status
+ * KErrCorrupt if collection manager is corrupted and
+ * possible some data is lost
+ */
+ virtual void CollectionManagerErrorL(
+ TInt aError ) = 0;
+
+protected:
+
+ /**
+ * Destructor.
+ */
+ virtual ~MMediaCollectionObserver() {}
+
+private: // Extension interface
+
+ /**
+ * This member is internal and not intended for use.
+ */
+ virtual MMediaCollectionObserverExt* Extension()
+ { return NULL; }
+ virtual const MMediaCollectionObserverExt* Extension() const
+ { return NULL; }
+ };
+
+/**
+ * Media Collection Manager
+ *
+ * Use this class to get Media Collections, create new collections,
+ * delete collections, rename collections, add files to collections,
+ * remove files from collections.
+ *
+ * @lib N/A
+ * @since S60 3.2
+ */
+class MMediaCollectionManager
+ {
+public:
+ virtual ~MMediaCollectionManager() {}
+
+public: // New functions
+
+ /**
+ * Return collection info by index.
+ * @since 3.2
+ * @param aCollectionInfoArray Collection infos are added to this array
+ */
+ virtual void GetCollectionInfosL(
+ RPointerArray<MMediaCollectionInfo>&
+ aCollectionInfoArray ) const = 0;
+
+ /**
+ * Return collection info by ID.
+ * @since 3.2
+ * @param aId Collection ID
+ * @return Pointer to a MMediaCollectionInfo object
+ * Ownership is transferred to client
+ */
+ virtual MMediaCollectionInfo* CollectionInfoByIdLC(
+ TInt aId ) const = 0;
+
+ /**
+ * Create new collection.
+ * @since 3.2
+ * @param aName Name of the collection
+ * @param aCollectionItemTypes List of media types that are
+ * in the collection.
+ * Use media types from CLFContentListing.hrh TCLFMediaType.
+ * NOTE! that collection manager doesn't check is added item defined
+ * mediatype. This is only for client(s) for grouping different
+ * type folders.
+ * @param aStorage In 3.2 See TMediaCollectionProperties
+ * NOTE! If given propertie set is not supported then
+ * function leaves with KErrNotSupported
+ NOTE! In 5.0 Drive number where the collection is to be created!
+ * @return ID of the creaded collection
+ */
+ virtual TInt CreateCollectionL(
+ const TDesC& aName,
+ const TArray<TInt>& aCollectionItemTypes,
+ TInt32 aStorage) = 0;
+
+ /**
+ * Delete collection.
+ * NOTE! this doesn't delete items that are in collection.
+ * @since 3.2
+ * @param aId ID of the collection
+ */
+ virtual void DeleteCollectionL(
+ TInt aId ) = 0;
+
+ /**
+ * Rename collection.
+ * @since 3.2
+ * @param aId ID of the collection.
+ * If collection doesn't found then
+ * function leaves with KErrNotFound
+ * @param aNewName new name of the collection
+ */
+ virtual void RenameCollectionL(
+ TInt aId,
+ const TDesC& aNewName ) = 0;
+
+ /**
+ * Add item(s) to collection.
+ * @since 3.2
+ * @param aId Collection ID
+ * If collection doesn't found then
+ * function leaves with KErrNotFound
+ * @param aItemArray
+ * @param aRemoveFromOtherCollections Is item removed from other
+ * available collections.
+ */
+ virtual void AddToCollectionL(
+ TInt aId,
+ const MDesCArray& aItemArray,
+ TBool aRemoveFromOtherCollections = ETrue ) = 0;
+
+ /**
+ * Remove item(s) from collection.
+ * @since 3.2
+ * @param aId Collection ID
+ * If collection doesn't found then
+ * function leaves with KErrNotFound
+ * @param aItemArray
+ */
+ virtual void RemoveFromCollectionL(
+ TInt aId,
+ const MDesCArray& aItemArray ) = 0;
+
+ /**
+ * Remove item(s) from all collections.
+ * @since 3.2
+ * @param aItemArray
+ */
+ virtual void RemoveFromAllCollectionsL(
+ const MDesCArray& aItemArray ) = 0;
+
+
+ /**
+ * Get collection items.
+ * @since 3.2
+ * @param aId Collection ID
+ * If collection doesn't found then
+ * function leaves with KErrNotFound
+ * @param aItemArray Item are added to the array
+ */
+ virtual void GetCollectionItemArrayL(
+ TInt aId,
+ CDesCArray& aItemArray ) const = 0;
+
+ /**
+ * Find collections IDs by item.
+ * @since 3.2
+ * @param aItem
+ * @param aIdArray Possible collection IDs are added to the array
+ */
+ virtual void GetCollectionIdByItemL(
+ const TDesC& aItem,
+ RArray<TInt>& aIdArray ) const = 0;
+
+ /**
+ * Add collection observer.
+ * @since 3.2
+ * @param aObserver
+ */
+ virtual void AddCollectionObserverL(
+ MMediaCollectionObserver& aObserver ) = 0;
+
+ /**
+ * Remove collection observer.
+ * @since 3.2
+ * @param aObserver
+ */
+ virtual void RemoveCollectionObserverL(
+ MMediaCollectionObserver& aObserver ) = 0;
+
+ /**
+ * Get the drivenumber of the drive where collection is located by collection id
+ * @since 5.0
+ * @param aId id of the collection
+ * @return DriveNumber of the drive where collection is located
+ */
+ virtual TInt32 GetDriveByIdL( TInt aId ) = 0;
+
+private: // Extension interface
+
+ /**
+ * This member is internal and not intended for use.
+ */
+ virtual MMediaCollectionManagerExt* Extension()
+ { return NULL; }
+ virtual const MMediaCollectionManagerExt* Extension() const
+ { return NULL; }
+
+ };
+
+#endif // MMEDIACOLLECTIONMANAGER_H