mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbartist.h
branchRCL_3
changeset 66 1f1dad4af8f8
parent 56 2cbbefa9af78
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbartist.h	Wed Sep 15 12:09:46 2010 +0300
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbartist.h	Wed Oct 13 14:28:40 2010 +0300
@@ -24,6 +24,11 @@
 #include "mpxdbcategory.h"
 
 // CLASS DECLARATION
+class MMPXDbArtistObserver
+    {
+    public:
+		virtual TInt HandleGetAlbumsCountForArtistL(TUint32 aId) = 0;
+	};
 
 /**
 * Responsible for managing all music databases
@@ -42,7 +47,7 @@
         * @return New CMPXDbArtist instance.
         */
         static CMPXDbArtist* NewL(CMPXDbManager& aDbManager,
-            TMPXGeneralCategory aCategory);
+            TMPXGeneralCategory aCategory, MMPXDbArtistObserver& aObserver);
 
         /**
         * Two-phased constructor.
@@ -51,8 +56,8 @@
         * @return New CMPXDbArtist instance on the cleanup stack.
         */
         static CMPXDbArtist* NewLC(CMPXDbManager& aDbManager,
-            TMPXGeneralCategory aCategory);
-        
+            TMPXGeneralCategory aCategory, MMPXDbArtistObserver& aObserver);
+
         /**
         * Destructor
         */
@@ -60,16 +65,17 @@
 
     public:
         /**
-        * Add a artist item. If the record already exists, its counter will
+        * Add a category item. If the record already exists, its counter will
         * be incremented.
-        * @param aCategory category type
-        * @param aMedia: This is the media object
+        * @param aName: This is the name to be entered into the row
         * @param aDriveId: The Drive Id the name (category) belongs
         * @param aNewRecord: indicates to the caller if a new record is created.
         *        ETrue if a new row is created in the table; otherwise EFalse.
+        * @param aCaseSensitive indicates whether case sensitivity should be taken
+        *        into consideration when generating the unique row id
         * @return The unique id of the row added.
         */
-        virtual TUint32 AddItemL(TMPXGeneralCategory aCategory, const CMPXMedia& aMedia, TInt aDriveId, TBool& aNewRecord,
+        TUint32 AddItemL(const TDesC& aName, const TDesC& aArt, TInt aDriveId, TBool& aNewRecord,
             TBool aCaseSensitive = ETrue);
 
         /**
@@ -88,54 +94,14 @@
         * @param aItemChangedMessages: if valid on return contains a updated message if the
         *        category was updated
         */
-        virtual void UpdateItemL(TUint32 aId, const CMPXMedia& aMedia, TInt aDriveId, CMPXMessageArray* aItemChangedMessages);
-        
-        /**
-        * Decrement the number of songs for the item. If the song and album count gets to 0, 
-        * remove the item.
-        * @param aId: The ID of the category to delete.
-        * @param aDriveId: The drive Id the name (category) belongs to. Songs on different
-        *                  drives may belong to the same album or artist; consequently, one
-        *                  row for each artist/album id and drive ID pair will exist in the
-        *                  lookup table with a count existing for each row that tracks the
-        *                  number number of songs on that drive with that album/artist.
-        * @param aItemChangedMessages if valid on return contains a deleted message if the
-        *                  category was deleted
-        * @param aItemExist Out parameter, ETrue if the category is not deleted after the delete,
-        *        EFalse otherwise
-        */
-#ifdef ABSTRACTAUDIOALBUM_INCLUDED
-        virtual void DecrementSongsForCategoryL(TUint32 aId, TInt aDriveId,
-            CMPXMessageArray* aItemChangedMessages, TBool& aItemExist, TBool aMtpInUse = EFalse); 
-#else
-        virtual void DecrementSongsForCategoryL(TUint32 aId, TInt aDriveId,
-            CMPXMessageArray* aItemChangedMessages, TBool& aItemExist);
-#endif //ABSTRACTAUDIOALBUM_INCLUDED            
+        void UpdateItemL(TUint32 aId, const CMPXMedia& aMedia, TInt aDriveId, CMPXMessageArray* aItemChangedMessages);
 
-        /**
-        * Add a AlbumArtist. If the record already exists, its counter will
-        * be incremented.
-        * @param aName: This is the name to be entered into the row
-        * @param aArt: Album art
-        * @param aDriveId: The Drive Id the name (category) belongs
-        * @return The unique id of the row added.
+        /*
+        * Checks if the specified artist item is unknown
+        * @param aId identifies the artist item
+        * @return ETrue if it is unknown, EFalse otherwise
         */
-        TUint32 AddAlbumArtistL(const TDesC& aName, const TDesC& aArt, TInt aDriveId);
-        
-        /**
-        * Decrement the number of albums for the item. If the song and album count gets to 0, 
-        * remove the item.
-        * @param aId: The ID of the category to delete.
-        * @param aDriveId: The drive Id the name (category) belongs to. Songs on different
-        *                  drives may belong to the same album or artist; consequently, one
-        *                  row for each artist/album id and drive ID pair will exist in the
-        *                  lookup table with a count existing for each row that tracks the
-        *                  number number of songs on that drive with that album/artist.
-        * @param aItemChangedMessages if valid on return contains a deleted message if the
-        *                  category was deleted
-        */
-        void DecrementAlbumsForArtistL(TUint32 aId, TInt aDriveId,
-            CMPXMessageArray* aItemChangedMessages);       
+        TBool IsUnknownArtistL(TUint32 aId);
 
     private:
 
@@ -157,16 +123,14 @@
         */
         void GenerateArtistFieldsValuesL(const CMPXMedia& aMedia,
             CDesCArray& aFields, CDesCArray& aValues);
-       
+
         /**
-        * Gets the Songs count and Albums count for a Artist item
-        * @param aDrivceId The Drive Id the name (category) belongs
+        * Gets the Album counts for a Artist item
         * @param aId identifies the Artist item
-        * @param aSongsCount songs count
-        * @param aAlbumsCount albums count
+        * @return value of the Album counts
         */
-        void GetSongsAndAlbumsCountL(TInt aDriveId, TUint32 aId, TInt& aSongsCount, TInt& aAlbumsCount);
-        
+        TInt GetAlbumsCountL(TUint32 aId);
+
     private:    // from MMPXTable
 
         /**
@@ -186,7 +150,7 @@
         * @param aDbManager database manager to use for database interactions
         * @param aCategory identifies the category
         */
-        CMPXDbArtist(CMPXDbManager& aDbManager, TMPXGeneralCategory aCategory);
+        CMPXDbArtist(CMPXDbManager& aDbManager, TMPXGeneralCategory aCategory, MMPXDbArtistObserver& aObserver);
 
         /**
         * Second phase constructor.
@@ -203,12 +167,13 @@
             EArtistUniqueId = KMPXTableDefaultIndex,
             EArtistName,
             EArtistSongCount,
-            EArtistAlbumCount,
             EArtistArt,
             EArtistFieldCount
             };
+
+    private:    // Data
+        MMPXDbArtistObserver& iObserver;
     };
-    
 #endif // MPXDBARTIST_H
 
 // End of File