diff -r 000000000000 -r a2952bb97e68 mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,237 @@ +/* +* 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: Meta data Access Wrapper +* +*/ + + +#ifndef CMMMTPDPMETADATAACCESSWRAPPER_H +#define CMMMTPDPMETADATAACCESSWRAPPER_H + +#include +#include +#include +#include + +// forward declacration +class CMmMtpDpMetadataMpxAccess; +class CMmMtpDpMetadataVideoAccess; + +class RFs; +class MMTPType; +class CMTPTypeObjectPropList; +class CMPXMediaArray; +class CMPXMedia; +class MMTPDataProviderFramework; + +class CMmMtpDpMetadataAccessWrapper : public CBase + { +public: + static CMmMtpDpMetadataAccessWrapper* NewL( RFs& aRfs, + MMTPDataProviderFramework& aFramework ); + + /** + * Destructor + */ + ~CMmMtpDpMetadataAccessWrapper(); + +public: + /** + * Get all playlists from MPX database in the assigned store + * @param aStoreRoot, specify in which drive playlists are stored + * @param aPlaylists, return result array + */ + IMPORT_C void GetAllPlaylistL( const TDesC& aStoreRoot, + CMPXMediaArray** aPlaylists ); + + /** + * Get all references of specified playlist + * @param aPlaylist, specify of which reference should be get + * @param aReferences, return result array which stored handles of all references + */ + IMPORT_C void GetAllReferenceL( CMPXMedia* aPlaylist, + CDesCArray& aReferences ); + + /** + * Get an playlist name from CMPXMedia object + * @param aPlaylist, specify the source + * @param aPlaylistName, return result + */ + IMPORT_C void GetPlaylistNameL( CMPXMedia* aPlaylist, TDes& aPlaylistName ); + + /** + * Add object (music, video and playlist) info to DB + * @param aFullFileName, full file name of file + * @return void + */ + void AddObjectL( const TDesC& aFullFileName, TBool aIsVideo = EFalse ); + + /** + * Set playlist to DB + * @param aPlaylistFileName, full file name of playlist file + * @param aRefFileArray, a array to store the full file name of media files + * @return void + */ + IMPORT_C void SetPlaylistL( const TDesC& aPlaylistFileName, + CDesCArray& aRefFileArray ); + + /** + * Gets a piece of metadata from the collection + * @param aPropCode, specify property code of aMediaProp + * @param aNewData, object property value which will be get from + * aObjectMetaData + * @param aObjectMetaData, owner of the property which should be + * inserted or updated into database + * @return void + */ + IMPORT_C void GetObjectMetadataValueL( const TUint16 aPropCode, + MMTPType& aNewData, + const CMTPObjectMetaData& aObjectMetaData ); + + /** + * Sets a piece of metadata in the collection + * @param aPropCode, specify property code of aMediaProp + * @param aNewData, object property value which will be set into + * aObjectMetaData + * @param aObjectMetaData, owner of the property which should be + * inserted or updated into database + * @return void + */ + void SetObjectMetadataValueL( const TUint16 aPropCode, + const MMTPType& aNewData, + const CMTPObjectMetaData& aObjectMetaData ); + + /** + * Renames the file part of a record in the collection database + * @param aFile, old full file name of Media file + * @param aNewFileName, new file name need update + * @return void + */ + IMPORT_C void RenameObjectL( const TDesC& aOldFileName, const TDesC& aNewFileName ); + + /** + * Deletes metadata information associated with the object + * @param aFullFileName, full file name of Media file + * @param aFormatCode, format code + */ + void DeleteObjectL( const TDesC& aFullFileName, const TUint aFormatCode ); + + /** + * Set current drive info + * @param aStorageRoot, current drive info + */ + void SetStorageRootL( const TDesC& aStorageRoot ); + + /* + * set image specific properties specific to videos + * @param aFullFileName, the fullFileName of object + * @param aWidth, the width of an object in pixels to set + * @parem aHeight, the height of an object in pixels to set + */ + void SetImageObjPropL( const TDesC& aFullFileName, + const TUint32 aWidth, + const TUint32 aHeight ); + + /* + * get image specific properties specific to videos + * @param aFullFileName, the fullFileName of object + * @param aWidth, the width of an object in pixels to get + * @parem aHeight, the height of an object in pixels to get + */ + void GetImageObjPropL( const TDesC& aFullFileName, + TUint32& aWidth, + TUint32& aHeight ); + + /** + * Get Modified object from DB + * @param aStorageRoot, the root path of storage + * @param arrayCount, array count + * @param aRefFileArray, a array to store the full file name of media files + * @return void + */ + IMPORT_C void GetModifiedContentL( const TDesC& aStorageRoot, + TInt& arrayCount, + CDesCArray& aRefFileArray ); + + /** + * Updated Music DB + * @return void + */ + IMPORT_C void UpdateMusicCollectionL(); + + /* + * Called when the MTP session is initialised + */ + void OpenSessionL(); + + /* + * clean up db resource especially for video dp + */ + void CloseSessionL(); + + /** + * Cleanup database + */ + IMPORT_C void CleanupDatabaseL(); + + /** + * if the playlsit exist in the MPX DB + * @param aSuid, the suid of playlsit + */ + TBool IsExistL( const TDesC& aSuid ); + + // related to dummy files + /** + * Add one dummy file to dummy files array + */ + IMPORT_C void AddDummyFileL( const TDesC& aDummyFileName ); + + /** + * Delete one dummy file from dummy files array + */ + IMPORT_C void DeleteDummyFile( const TDesC& aDummyFileName ); + + /** + * Create a Dummy File from the virtual playlist URI + * @param aPlaylistName, specify the filename of the dummy file + */ + IMPORT_C void CreateDummyFile( const TDesC& aPlaylistName ); + +private: + + CMmMtpDpMetadataAccessWrapper( RFs& aRfs, MMTPDataProviderFramework& aFramework ); + + void ConstructL(); + + TMPXGeneralCategory Category( const TUint aFormatCode ); + + /** + * Remove all dummy file of which format is "pla", and leave the "m3u" + */ + void RemoveDummyFiles(); + +private: + // Data + RFs& iRfs; + CMmMtpDpMetadataMpxAccess* iMmMtpDpMetadataMpxAccess; + CMmMtpDpMetadataVideoAccess* iMmMtpDpMetadataVideoAccess; + TBool iOpenSession; + + MMTPDataProviderFramework& iFramework; + + CDesCArray* iPlaylistArray; + + }; + +#endif // CMMMTPDPMETADATAACCESSWRAPPER_H