mpserviceplugins/mpxsqlitedbplugin/inc/mpxdbmusic.h
changeset 22 ecf06a08d4d9
parent 20 82baf59ce8dd
child 23 d45f4c087764
child 25 3ec52facab4d
child 34 2c5162224003
--- a/mpserviceplugins/mpxsqlitedbplugin/inc/mpxdbmusic.h	Fri Apr 16 14:56:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,752 +0,0 @@
-/*
-* Copyright (c) 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:  This class is responsible for all music table functionality.
-*                The Music table contains one record for each song on the database
-*                drive.
-*
-*
-*/
-
-
-#ifndef MPXDBMUSIC_H
-#define MPXDBMUSIC_H
-
-// INCLUDES
-#include "mpxdbtable.h"
-#include "mpxdbcommonstd.h"
-#include "mpxdbactivetask.h"
-
-// CLASS FORWARDS
-class CMPXMedia;
-class CMPXMediaArray;
-
-// CLASS DECLARATION
-
-/**
-* Observer interface for handling the category ID functionality.
-* This is needed because the incoming CMPXMedia parameters in Add and Update methods
-* contain the names for the category items and the music table has to use IDs linking
-* to the category tables. Using this interface removes the dependency to the category
-* class.
-*
-* Note that this interface is only used when information is written to the Music table,
-* when information is retrieved the query takes care of also retrieving the names from
-* the corresponding category tables so the outgoing CMPXMedia will contain the correct
-* information.
-*/
-class MMPXDbMusicObserver
-    {
-    public:
-        /**
-        * Called when a new category item has to be added to a category table.
-        * @param aCategory category type
-        * @param aName name string
-        * @param aDrive drive to add the category to
-        * @param aItemChangedMessages changed mesages array to be updated or NULL
-        * @param aItemExist Out parameter, ETrue if the item already exist before the add,
-        *        EFalse otherwise
-        * @return the ID of the category item (new or existing)
-        */
-        virtual TUint32 AddCategoryItemL(TMPXGeneralCategory aCategory, const TDesC& aName,
-            TInt aDrive, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist) = 0;
-
-		// for Album and Artist table
-		virtual TUint32 AddCategoryItemL(TMPXGeneralCategory aCategory, const TDesC& aName,
-			TUint32 aArtistId, const TDesC& aArt,
-			TInt aDrive, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist) = 0;
-        /**
-        * Called when the ID of a category item changed for a Music record, for example when
-        * the artist name changed for a song. The implementation is supposed to update the
-        * category record and add corresponding item changed messages to the array parameter.
-        * @param aCategory category type
-        * @param aCategoryId old category item ID
-        * @param aDrive drive the category item is on
-        * @param aItemChangedMessages changed mesages array to be updated or NULL
-        * @param aItemExist Out parameter, ETrue if the category is not deleted after the delete,
-        *        EFalse otherwise
-        */
-        virtual void DeleteSongForCategoryL(TMPXGeneralCategory aCategory, TUint32 aCategoryId,
-            TInt aDrive, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist) = 0;
-
-        /**
-        * Called when the play count attribute of a song is changed. Should add an item changed
-        * message to the array.
-        * @param aItemChangedMessages array of item changed messages to add to
-        */
-        virtual void HandlePlayCountModifiedL(CMPXMessageArray& aItemChangedMessages) = 0;
-
-        /**
-        * Called when the playback time attribute of a song is changed. Should add an item changed
-        * message to the array.
-        * @param aItemChangedMessages array of item changed messages to add to
-        */
-        virtual void HandlePlaybackTimeModifiedL(CMPXMessageArray& aItemChangedMessages) = 0;
-        
-        /**
-         * Called when category item is changed. Should add an item changed 
-         * message to the array.
-         * @param aCategory category type
-         * @param aCategoryId old category item ID
-         * @param aDrive drive the category item is on
-         * @param aMedia media data
-         * @param aItemChangedMessages changed mesages array to be updated or NULL
-         */
-		virtual void UpdateCategoryItemL(TMPXGeneralCategory aCategory, TUint32 aCategoryId, 
-			const CMPXMedia& aMedia, TInt aDrive, CMPXMessageArray* aItemChangedMessages) = 0;
-    };
-
-/**
-* Responsible for managing the Music table
-*
-* @lib MPXDbPlugin.lib
-*/
-class CMPXDbMusic :
-    public CMPXDbTable
-    {
-    public:
-
-        /**
-        * Two-phased constructor.
-        * @param aDbManager database manager to use for database interactions
-        * @param aObserver observer reference
-        * @return New CMPXDbMusic instance.
-        */
-        static CMPXDbMusic* NewL(CMPXDbManager& aDbManager, CMPXResource& aResource,
-            MMPXDbMusicObserver& aObserver);
-
-        /**
-        * Two-phased constructor.
-        * @param aDbManager database manager to use for database interactions
-        * @param aObserver observer reference
-        * @return New CMPXDbMusic instance on the cleanup stack.
-        */
-        static CMPXDbMusic* NewLC(CMPXDbManager& aDbManager, CMPXResource& aResource,
-            MMPXDbMusicObserver& aObserver);
-
-        /**
-        * Destructor
-        */
-        virtual ~CMPXDbMusic();
-
-    public:
-
-        /**
-        * Add a song to the music table
-        * @param aMedia contains the song details
-        * @param aDrive drive to add the song to
-        * @param aMessageArray change event message to notify client of the changes
-        * @return The unique ID of the song added.
-        */
-        TUint32 AddSongL(const CMPXMedia& aMedia, TInt aDrive, CMPXMessageArray* aMessageArray=NULL);
-
-        /**
-        * Remove a song from the music table
-        * @param aSongId the ID of the song to be removed
-        * @param aDrive song drive
-        * @param aDeleteRecord indicates whether the client has explictly requested
-        *                to delete the records from the database. If ETrue, records
-        *                associated with the media will be deleted from the database;
-        *                if EFalse, whether to mark the records as deleted or to delete
-        *                the records will be based on other deciding factors.
-        */
-        void DeleteSongL(TUint32 aSongId, TInt aDrive, TBool aDeleteRecord = EFalse);
-
-        /**
-        * Remove songs matching a category from the music table
-        * @param aCategory the category to remove
-        * @param aCategoryId ID of the category to remove
-        * @param aUriArray on return will be filled with all the paths that were removed
-        * @param aItemChangedMessages a list of change events as a result of the song removal
-        * @param aDrive drive the category record is on
-        */
-        void DeleteCategoryL(TMPXGeneralCategory aCategory, TUint32 aCategoryId,
-            CDesCArray& aUriArray, CMPXMessageArray& aItemChangedMessages, TInt aDrive);
-
-        /**
-        * Deletes all songs marked as deleted
-        */
-        void CleanupL();
-
-        /**
-        * Update song info for a song in the music table
-        * @param aSongId song ID
-        * @param aMedia media object which contains file path,
-        *                artist, composer, name(title), track, etc...
-        * @param aItemChangedMessages a list of change events as a result of the song removal
-        * @return ETrue if the change is visible in the UI
-        */
-        CMPXDbActiveTask::TChangeVisibility UpdateSongL(TUint32 aSongId, const CMPXMedia& aMedia,
-            CMPXMessageArray& aItemChangedMessages);
-
-        /**
-        * Get the name of the song that matches the given song ID
-        * @param aSongId ID of the song
-        * @return Song name, ownership is transferred to the caller.
-        */
-        HBufC* GetNameL(TUint32 aSongId);
-
-        /**
-        * Get URI of the song
-        * @param aSongId ID of the song
-        * @return Song URI, ownership is transferred to the caller.
-        */
-        HBufC* GetUriL(TUint32 aSongId);
-
-        /**
-        * Get the drive of the song
-        * @param aSongId ID of the song
-        * @return Song drive
-        */
-        TInt GetDriveL(TUint32 aSongId);
-
-        /**
-        * Get the drive and category IDs for a specified song
-        * @param aSongId song to be retrieved
-        * @param aArtistId returns the artist ID
-        * @param aAlbumId returns the artist ID
-        * @param aGenreId returns the artist ID
-        * @param aComposerId returns the artist ID
-        * @param aDriveId returns the song drive
-        * @return song URI. The ownership is transferred.
-        */
-        HBufC* GetSongInfoL(TUint32 aSongId, TUint32& aArtistId, TUint32& aAlbumId,
-            TUint32& aGenreId, TUint32& aComposerId, TInt& aDriveId);
-
-        /**
-        * Get the song Id, title, URI, and general flags from the given song Id and/or URI
-        * @param aCriteria search the media by song Id and/or URI
-        * @param aMedia returns the song details
-        * @return error code KErrNotFound if unable to find the specified song in the
-        *          collection; otherwise KErrNone
-        */
-        TInt GetSongL(const CMPXMedia& aCriteria, CMPXMedia*& aMedia);
-
-        /**
-        * Get the most recently played songs. Returns a maximum of KMPXMaxRecentlyPlayedSongs
-        * songs.
-        * @param aAttrs attributes to include
-        * @param aMediaArray returns the songs' info
-        */
-        void GetRecentlyPlayedSongsL(const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Get the most played songs from the music table. Returns a maximum of
-        * KMPXMaxMostPlayedSongs songs.
-        * @param aAttrs attributes to include
-        * @param aMediaArray returns the songs' info
-        */
-        void GetMostPlayedSongsL(const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Get the recently added songs from the music table (7 days)
-        * @param aAttrs attributes to include
-        * @param aMediaArray returns the songs' info
-        */
-        void GetRecentlyAddedSongsL(const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-       /**
-        * Get the total number of songs
-        * @return total number of songs
-        */
-        TInt CountL();
-
-        /**
-        * Get all the albums for a specified artist
-        * @param aArtistId artist ID
-        * @param aMediaArray returns the album(s) matching the artist
-        */
-        void GetAlbumsForArtistL(TUint32 aArtistId, CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns details about the specified song.
-        * @param aSongId identifies the song
-        * @param aAttrs attributes to be retrieved
-        * @param aMedia returns the song information
-        */
-        void GetSongL(TInt aSongId, const TArray<TMPXAttribute>& aAttrs, CMPXMedia& aMedia);
-        
-        /**
-        * Returns all songs in the playlist.
-        * @param aDrive identifies in db
-        * @param aPlaylistId identifies the playlist
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetAllSongsL(TInt aDrive,TInt aPlaylistId,const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns all songs in the database.
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetAllSongsL(const TArray<TMPXAttribute>& aAttrs, CMPXMediaArray& aMediaArray);
-
-        /**
-        * Get from all songs with a limit (first N items)
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        * @param aLimit maximum number of songs to retrieve
-        */
-        void GetAllSongsLimitedL(const TArray<TMPXAttribute>& aAttrs, CMPXMediaArray& aMediaArray, TInt aLimit);
-
-        /**
-        * Returns a block of songs as specified
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        * @param aTitle title of the song that marks the beginning of the block
-        * @param aNumOfSongs the number of songs in the block
-        * @param aAsc
-        */
-        void GetSongsInBlockL( const TArray<TMPXAttribute>& aAttrs,
-                               CMPXMediaArray& aMediaArray,
-                               TPtrC aTitle,
-                               TUint aNumOfSongs,
-                               TBool aAsc);
-
-
-        /**
-        * Get songs from the music collection starting at a particular offset
-        * ONLY use this as the first query to locate particular item. Should use
-        * GetSongsInBlockL() to fetch in blocks with a particular index
-        * @param aMediaArray Array to store the results
-        * @param aAttrs attributes to fetch
-        * @param aOffset offset to start reading
-        * @param aCount number of items to get
-        */
-        void GetSongsAtOffsetL( CMPXMediaArray& aMediaArray,
-                                const TArray<TMPXAttribute>& aAttrs,
-                                TInt aOffset,
-                                TInt aCount );
-
-        /**
-        * Returns all songs for a given artist.
-        * @param aArtistId artist to get the songs for
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetSongsForArtistL(TUint aArtistId, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns all songs for a given album.
-        * @param aAlbumId album to get the songs for
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetSongsForAlbumL(TUint aAlbumId, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns all songs for a given artist and album.
-        * @param aArtistId artist to get the songs for
-        * @param aAlbumId album to get the songs for
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetSongsForArtistAndAlbumL(TUint aArtistId, TUint aAlbumId,
-            const TArray<TMPXAttribute>& aAttrs, CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns all songs for a given genre.
-        * @param aGenreId genre to get the songs for
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetSongsForGenreL(TUint aGenreId, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns all songs for a given composer.
-        * @param aComposerId composer to get the songs for
-        * @param aAttrs attributes to be retrieved
-        * @param aMediaArray returns the song attributes.
-        */
-        void GetSongsForComposerL(TUint aComposerId, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns the duration of all songs.
-        * @return the duration value
-        */
-        TInt AllSongsDurationL();
-
-        /**
-        * Returns the duration for a specified artist.
-        * @param aArtistId artist to get the duration for
-        * @return the duration value
-        */
-        TInt ArtistDurationL(TUint aArtistId);
-
-        /**
-        * Returns the duration for a specified album.
-        * @param aAlbumId album to get the duration for
-        * @return the duration value
-        */
-        TInt AlbumDurationL(TUint aAlbumId);
-
-        /**
-        * Returns the duration for a specified artist and album.
-        * @param aArtistId artist to get the duration for
-        * @param aAlbumId album to get the duration for
-        * @return the duration value
-        */
-        TInt ArtistAlbumDurationL(TUint aArtistId, TUint aAlbumId);
-
-        /**
-        * Returns the duration for a specified genre.
-        * @param aGenreId genre to get the duration for
-        * @return the duration value
-        */
-        TInt GenreDurationL(TUint aGenreId);
-
-        /**
-        * Returns the duration for a specified composer.
-        * @param aComposerId composer to get the duration for
-        * @return the duration value
-        */
-        TInt ComposerDurationL(TUint aComposerId);
-
-        /**
-        * Returns the duration for the recently played songs.
-        * @return the duration value
-        */
-        TInt RecentlyPlayedDurationL();
-
-        /**
-        * Returns the duration for the most played songs.
-        * @return the duration value
-        */
-        TInt MostPlayedDurationL();
-
-        /**
-        * Returns the duration for the recently added songs.
-        * @return the duration value
-        */
-        TInt RecentlyAddedDurationL();
-
-        /**
-        * Find the songs for the selection criteria
-        * @param aGeneralId selection criteria (could be song/album/artist/genre/composer ID)
-        * @param aContainerId selection criteria (could be artist/album id)
-        * @param aType criteria type (EMPXItem or EMPXGroup)
-        * @param aCriteria selection criteria
-        * @param aAttrs the attributes to include for the artist(s) matching the
-        *        selection criteria
-        * @param aMediaArray returns the songs
-        */
-        void FindSongsL(TUint32 aGeneralId, TUint32 aContainerId, TMPXGeneralType aType,
-            const CMPXMedia& aCriteria, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMediaArray& aMediaArray);
-
-        /**
-        * Returns the track count for a given drive
-        * @param aDrive drive
-        * @return the count
-        */
-        TUint GetDriveTrackCountL(TInt aDrive);
-
-        /**
-        * Get URIs for a given number of tracks
-        * @param aDrive, specifies drive number for db selection
-        * @param aFromID, specifies unique ID of last record retrieved
-        * @param aRecords, specifies the number of records to get
-        * @param aUriArr, will contain all URIs on return
-        * @param aLastID, will contain unique ID of a last record in the array
-        */
-        void GetMusicUriArrayL(TInt aDrive, TInt aFromID, TInt aRecords,
-                               CDesCArray& aUriArr, TInt& aLastID);
-
-        /**
-         * Get the ID of Artist which belongs to the specified Album
-		 * @param aId, the ID of Album
-         */
-        TUint32 CMPXDbMusic::ArtistForAlbumL(const TUint32 aId);
-        
-        /**
-        * Signals the start of a refresh operation
-        */
-        void RefreshStartL();
-
-        /**
-        * Signals the end of a refresh operation
-        */
-        void RefreshEndL();
-
-    private:
-
-        /**
-        * Checks if the specified song exists.
-        * @param aId identifies the song
-        * @return ETrue if it exists, EFalse otherwise
-        */
-        TBool SongExistsL(TUint32 aSongId);
-
-        /**
-        * Update the media with information found in the Music table
-        * @param aMusicTable music table record
-        * @param aAttrs the attributes to include
-        * @param aMedia returns the song details
-        */
-        void UpdateMediaL(RSqlStatement& aMusicTable, const TArray<TMPXAttribute>& aAttrs,
-            CMPXMedia& aMedia);
-
-        /**
-        * Update the media general attributes from the Music table
-        * @param aMusicTable music table view
-        * @param aAttrId the required attributes
-        * @param aMedia the media object to set
-        */
-        void UpdateMediaGeneralL(RSqlStatement& aMusicTable, const TUint aAttrId,
-            CMPXMedia& aMedia);
-
-        /**
-        * Update the media music attributes from the Music table
-        * @param aMusicTable music table view
-        * @param aAttrId the required attributes
-        * @param aMedia the media object to set
-        */
-        void UpdateMediaMusicL(RSqlStatement& aMusicTable, const TUint aAttrId,
-            CMPXMedia& aMedia);
-
-        /**
-        * Update the media audio attributes from the Music table
-        * @param aMusicTable music table view
-        * @param aAttrId the required attributes
-        * @param aMedia the media object to set
-        */
-        void UpdateMediaAudioL(RSqlStatement& aMusicTable, const TUint aAttrId,
-            CMPXMedia& aMedia);
-
-        /**
-        * Update the media MTP attributes from the Music table
-        * @param aMusicTable music table view
-        * @param aAttrId the required attributes
-        * @param aMedia the media object to set
-        */
-        void UpdateMediaMTPL(RSqlStatement& aMusicTable, const TUint aAttrId,
-            CMPXMedia& aMedia);
-
-        /**
-        * Adds a song to the Music table
-        * @param aSongId identifies the song
-        * @param aMedia contains the song attributes
-        * @param aDrive drive to add the song to
-        * @param aItemChangedMessages item changed messages to update
-        */
-        TBool DoAddSongL(TUint32 aSongId, const CMPXMedia& aMedia, TInt aDrive,
-            CMPXMessageArray* aItemChangedMessages);
-
-        /**
-        * Updates a song in the Music table
-        * @param aSongId identifies the song
-        * @param aMedia contains the song attributes
-        * @param aItemChangedMessages item changed messages to update or NULL
-        */
-        CMPXDbActiveTask::TChangeVisibility DoUpdateSongL(TUint32 aSongId, const CMPXMedia& aMedia,
-            CMPXMessageArray* aItemChangedMessages);
-
-        /**
-        * Updates a song in the Music table
-        * @param aSongId identifies the song
-        * @param aMedia contains the song attributes
-        * @param aDrive drive to add the song to
-        * @param aItemChangedMessages item changed messages to update
-        * @param aRecordset current song record in the Music table.
-        *       Required to detect any field changes.
-        */
-        CMPXDbActiveTask::TChangeVisibility DoUpdateSongL(TUint32 aSongId, const CMPXMedia& aMedia, TInt aDrive,
-            CMPXMessageArray* aItemChangedMessages, RSqlStatement& aRecordset);
-
-        /**
-        * Get the DRM type of the given file
-        * @param aFile file
-        * @return DRM type.
-        */
-        TMCDrmType DRMTypeL(const TDesC& aFile);
-
-        /**
-        * Generate searching criteria for music table from the given criteria
-        * @param aGeneralId selection criteria (could be song/album/artist/genre/composer Id)
-        * @param aContainerId selection criteria (could be artist/album id)
-        * @param aType criteria type (EMPXItem or EMPXGroup)
-        * @param aCriteria input criteria
-        * @return a string containing the selection criteria. The ownership is passed to the caller.
-        */
-        HBufC* GenerateMusicMatchingCriteriaLC(TUint32 aGeneralId, TUint32 aContainerId,
-            TMPXGeneralType aType, const CMPXMedia& aCriteria);
-
-        /**
-        * Constructs the fields and corresponding values to be written into the music
-        * table for update and insert statements.
-        * @param aSongId identifies the song
-        * @param aMedia contains the new song attributes
-        * @param aItemChangedMessages item changed mesages to add to
-        * @param aMusicTable points to the existing record in the Music table for updates or NULL
-        *       for inserts
-        * @param aFields returns the field names to be updated
-        * @param aValues returns the field values to be updated
-        * @param aDrive drive the song is on
-        * @return ETrue if the change is visible in the UI
-        */
-        CMPXDbActiveTask::TChangeVisibility GenerateMusicFieldsValuesL(TUint32 aSongId, const CMPXMedia& aMedia,
-            CMPXMessageArray* aItemChangedMessages, RSqlStatement* aMusicTable,
-            CDesCArray& aFields, CDesCArray& aValues, TInt aDrive);
-
-        /**
-        * Generates the full URI from a music record.
-        * @param aMusicTable music table record
-        * @return Full URI string. The ownership is passed to the caller.
-        */
-        HBufC* ConstructUriL(RSqlStatement& aMusicTable, TUint32 aMediaId);
-
-        /**
-        * Checks if the specified category field (artist/album/genre/composer)
-        * will change and notifies the observer if so.
-        * @param aCategory identifies the category
-        * @param aMedia contains the new record attributes
-        * @param aAttribute corresponding attribute in the media parameter
-        * @param aColumnIndex column index in the recordset
-        * @param aMusicTable current record in the music table or NULL if this is an insert
-        * @param aDriveId drive ID the update is for
-        * @param aItemChangedMessages item changed messages to append to
-        * @param aItemId returns the category item ID
-        * @return ETrue if the field was modified
-        */
-        TBool UpdateCategoryFieldL(TMPXGeneralCategory aCategory, const CMPXMedia& aMedia,
-            const TMPXAttribute& aAttribute, TUint32 aOldId, TInt aDriveId,
-            CMPXMessageArray* aItemChangedMessages, TUint32& aItemId);
-
-		TBool UpdateCategoryFieldL(TMPXGeneralCategory aCategory, const CMPXMedia& aMedia,
-			const TMPXAttribute& aAttribute, TUint32 aOldId, TInt aDriveId,
-			CMPXMessageArray* aItemChangedMessages, TUint32& aItemId, TUint32 aArtistId);
-        /**
-        * Checks if extra attributes are required. The "standard attribute set includes:
-        * EMPXMediaGeneralId, EMPXMediaGeneralType, EMPXMediaGeneralCategory,
-        * EMPXMediaGeneralTitle, EMPXMediaGeneralUri, and EMPXMediaGeneralFlags
-        * @param aAttrs attributes to be checked
-        * @return ETrue if extra attributes are required
-        */
-        TBool ExtraFieldsRequired(const TArray<TMPXAttribute>& aAttrs);
-
-        /**
-        * Test whether the given media contains any supported attribute
-        * @param aMedia media to be tested
-        * @return ETrue if the media contains one or more supported attribute;
-        *  otherwise EFalse.
-        */
-		TBool IsSupported(const CMPXMedia& aMedia);
-
-    private:    // from MMPXTable
-
-        /**
-        * @see MMPXTable
-        */
-        virtual void CreateTableL(RSqlDatabase& aDatabase, TBool aCorruptTable);
-
-        /**
-        * @see MMPXTable
-        */
-        virtual void DropTableL(RSqlDatabase& aDatabase);
-
-        /**
-        * @see MMPXTable
-        */
-        virtual TBool CheckTableL(RSqlDatabase& aDatabase);
-
-    private:
-
-        /**
-        * C++ constructor
-        * @param aDbManager database manager to use for database interactions
-        */
-        CMPXDbMusic(CMPXDbManager& aDbManager, MMPXDbMusicObserver& aObserver);
-
-        /**
-        * Second phase constructor.
-        */
-        void ConstructL(CMPXResource& aResource);
-
-    private:
-
-        /**
-        * Column indexes in the music table
-        */
-		enum TMusicColumns
-			{
-			EMusicUniqueId = KMPXTableDefaultIndex,
-			EMusicDbFlag,
-			EMusicVolumeId,
-			EMusicTitle,
-			EMusicArtist,
-			EMusicArt,
-			EMusicDeleted,
-			EMusicLocation,
-			EMusicAlbumTrack,
-			EMusicPlayCount,
-			EMusicTimeAdded,
-			EMusicTimePlayed,
-			EMusicDuration,
-			EMusicSync,
-			EMusicModified,
-			EMusicAlbum,
-			EMusicGenre,
-			EMusicComposer,
-			EMusicReleaseDate,
-			EMusicRating,
-			EMusicComment,
-			EMusicCopyright,
-			EMusicUrl,
-			EMusicDRM,
-			EMusicLastPlayPosition,
-			EMusicSampleRate,
-			EMusicBitRate,
-			EMusicNumChannels,
-			EMusicCodec,
-			EMusicMimeType,
-			EMusicMTPDrmStatus,
-			EMusicArtistName,
-			EMusicAlbumName,
-			EMusicGenreName,
-			EMusicComposerName,
-			EMusicFieldCount
-			};
-
-         /*
-         * Unique ID for Queries with a lifetime
-         */
-         enum TMusicStatements
-             {
-             EOffsetQueryBasic = 0xabcd0001,
-             EAscQueryBasic = 0xabcd0002,
-             EDscQueryBasic = 0xabcd0003,
-             EOffSetQuery = 0xabcd0004,
-             EAscQuery = 0xabcd0005,
-             EDscQuery = 0xabcd0006
-             };
-
-    private:    // Data
-
-        // file extensions to check DRM type, owned
-        CDesCArrayFlat* iExtensionsDrm;
-        MMPXDbMusicObserver& iObserver;
-        TBool iRefresh;
-    };
-
-#endif // MPXDBMUSIC_H
-
-// End of File