mpserviceplugins/mpxsqlitedbhgplugin/inc/mpxdbalbum.h
author hgs
Tue, 24 Aug 2010 03:36:14 -0500
changeset 51 560ce2306a17
parent 38 b93f525c9244
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:  This class is responsible for all category tables (Artist,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*                Album, Genre, Composer).
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#ifndef MPXDBALBUM_H
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#define MPXDBALBUM_H
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
// INCLUDES
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "mpxdbcategory.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
// CLASS DECLARATION
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
class MMPXDbAlbumObserver
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
    public:
35
hgs
parents: 34
diff changeset
    32
        /**
hgs
parents: 34
diff changeset
    33
        * HandleAlbumartForAlbumL.
hgs
parents: 34
diff changeset
    34
        * @param aId, The album ID.
hgs
parents: 34
diff changeset
    35
        * @param aArt, The albumart uri.
hgs
parents: 34
diff changeset
    36
        * @returns alternative albumart retrieved in the specified Album.
hgs
parents: 34
diff changeset
    37
        */
hgs
parents: 34
diff changeset
    38
        virtual HBufC* HandleAlbumartForAlbumL( const TUint32 aId, TPtrC aArt ) = 0;
51
hgs
parents: 38
diff changeset
    39
               
hgs
parents: 38
diff changeset
    40
        /**
hgs
parents: 38
diff changeset
    41
        * Called when album artist is removed from an album
hgs
parents: 38
diff changeset
    42
        * @param aCategoryId category item ID
hgs
parents: 38
diff changeset
    43
        * @param aDrive drive the category item is on
hgs
parents: 38
diff changeset
    44
        * @param aItemChangedMessages changed mesages array to be updated or NULL
hgs
parents: 38
diff changeset
    45
        */
hgs
parents: 38
diff changeset
    46
        virtual void DeleteAlbumForArtistL(TUint32 aCategoryId,
hgs
parents: 38
diff changeset
    47
            TInt aDrive, CMPXMessageArray* aItemChangedMessages) = 0;
hgs
parents: 38
diff changeset
    48
hgs
parents: 38
diff changeset
    49
        /**
hgs
parents: 38
diff changeset
    50
        * Called when album artist is added to an album
hgs
parents: 38
diff changeset
    51
        * @param aName name string
hgs
parents: 38
diff changeset
    52
        * @param aArt Album art path
hgs
parents: 38
diff changeset
    53
        * @param aDriveId drive to add the category to
hgs
parents: 38
diff changeset
    54
        * @return the ID of the category item (new or existing)
hgs
parents: 38
diff changeset
    55
        */
hgs
parents: 38
diff changeset
    56
        virtual TUint32 AddAlbumArtistL(const TDesC& aName, const TDesC& aArt, TInt aDriveId) = 0;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
    };
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
/**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
* Responsible for managing all music databases
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
*
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
* @lib MPXDbPlugin.lib
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
class CMPXDbAlbum :
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    public CMPXDbCategory
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
    public:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
        * Two-phased constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
        * @param aDbManager database manager to use for database interactions
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
        * @param aCategory identifies the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
        * @return New CMPXDbCategory instance.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
        static CMPXDbAlbum* NewL(CMPXDbManager& aDbManager,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
            TMPXGeneralCategory aCategory, MMPXDbAlbumObserver& aObserver);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
        * Two-phased constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
        * @param aDbManager database manager to use for database interactions
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
        * @param aCategory identifies the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
        * @return New CMPXDbCategory instance on the cleanup stack.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
        static CMPXDbAlbum* NewLC(CMPXDbManager& aDbManager,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
            TMPXGeneralCategory aCategory, MMPXDbAlbumObserver& aObserver);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
        * Destructor
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
        virtual ~CMPXDbAlbum();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
    public:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
        /**
51
hgs
parents: 38
diff changeset
    94
        * Add an album item. If the record already exists, its counter will
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
        * be incremented.
51
hgs
parents: 38
diff changeset
    96
        * @param aCategory category type
hgs
parents: 38
diff changeset
    97
        * @param aMedia: The media object
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
        * @param aDriveId: The Drive Id the name (category) belongs
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
        * @param aNewRecord: indicates to the caller if a new record is created.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
        *        ETrue if a new row is created in the table; otherwise EFalse.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
        * @param aCaseSensitive indicates whether case sensitivity should be taken
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
        *        into consideration when generating the unique row id
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
        * @return The unique id of the row added.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
        */
51
hgs
parents: 38
diff changeset
   105
        virtual TUint32 AddItemL(TMPXGeneralCategory aCategory, const CMPXMedia& aMedia, TInt aDriveId, TBool& aNewRecord,
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
            TBool aCaseSensitive = ETrue);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
        * Decrement the number of songs for the item. If the count gets to 0, remove
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
        * the item.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
        * @param aId: The ID of the category to delete.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
        * @param aDriveId: The drive Id the name (category) belongs to. Songs on different
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
        *                  drives may belong to the same album or artist; consequently, one
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
        *                  row for each artist/album id and drive ID pair will exist in the
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
        *                  lookup table with a count existing for each row that tracks the
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
        *                  number number of songs on that drive with that album/artist.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
        * @param aItemChangedMessages if valid on return contains a deleted message if the
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
        *                  category was deleted
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
        * @param aItemExist Out parameter, ETrue if the category is not deleted after the delete,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
        *        EFalse otherwise
35
hgs
parents: 34
diff changeset
   121
        * @param aArt: The albumart uri
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
        */
51
hgs
parents: 38
diff changeset
   123
        void DecrementSongsForAlbumL(TUint32 aId, TInt aDriveId,
hgs
parents: 38
diff changeset
   124
            CMPXMessageArray* aItemChangedMessages, TBool& aItemExist, const TDesC& aArt );
34
hgs
parents: 22
diff changeset
   125
35
hgs
parents: 34
diff changeset
   126
        /**
hgs
parents: 34
diff changeset
   127
        * Gets the details for all category items.
hgs
parents: 34
diff changeset
   128
        * @param aAttrs attributes to be returned
hgs
parents: 34
diff changeset
   129
        * @param aMediaArray returns the requested attributes for all items
hgs
parents: 34
diff changeset
   130
        */
hgs
parents: 34
diff changeset
   131
        void GetAllCategoryItemsL(const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 34
diff changeset
   132
            CMPXMediaArray& aMediaArray);
hgs
parents: 34
diff changeset
   133
hgs
parents: 34
diff changeset
   134
        /**
hgs
parents: 34
diff changeset
   135
        * Gets the details for all category items.
hgs
parents: 34
diff changeset
   136
        * @param aAttrs attributes to be returned
hgs
parents: 34
diff changeset
   137
        * @param aMediaArray returns the requested attributes for all items
hgs
parents: 34
diff changeset
   138
        */
hgs
parents: 34
diff changeset
   139
        void GetAllCategoryItemsMediaWallL(const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 34
diff changeset
   140
            CMPXMediaArray& aMediaArray);
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
35
hgs
parents: 34
diff changeset
   142
        /**
51
hgs
parents: 38
diff changeset
   143
        * Gets details for the category items under a parent category item.
hgs
parents: 38
diff changeset
   144
        * This applies to albums for a given artist. The method panics if the
hgs
parents: 38
diff changeset
   145
        * category or parent category are invalid.
hgs
parents: 38
diff changeset
   146
        * @param aParentCategory identifies the parent category
hgs
parents: 38
diff changeset
   147
        * @param aParentId identifies the parent item
hgs
parents: 38
diff changeset
   148
        * @param aAttrs attributes to be returned
hgs
parents: 38
diff changeset
   149
        * @param aMediaArray returns the requested attributes for all items
hgs
parents: 38
diff changeset
   150
        */
hgs
parents: 38
diff changeset
   151
        virtual void GetSubCategoryItemsL(TMPXGeneralCategory aParentCategory, TUint32 aParentId,
hgs
parents: 38
diff changeset
   152
            const TArray<TMPXAttribute>& aAttrs, CMPXMediaArray& aMediaArray);
hgs
parents: 38
diff changeset
   153
        
hgs
parents: 38
diff changeset
   154
        /**
35
hgs
parents: 34
diff changeset
   155
        * Update a category item.
hgs
parents: 34
diff changeset
   156
        * @param aId: The ID of the category to update
hgs
parents: 34
diff changeset
   157
        * @param aMedia: The media data
hgs
parents: 34
diff changeset
   158
        * @param aDriveId: The Drive Id the name (category) belongs
hgs
parents: 34
diff changeset
   159
        * @param aItemChangedMessages: if valid on return contains a updated message if the
hgs
parents: 34
diff changeset
   160
        *        category was updated
hgs
parents: 34
diff changeset
   161
        */
hgs
parents: 34
diff changeset
   162
        void UpdateItemL(TUint32 aId, const CMPXMedia& aMedia, TInt aDriveId, CMPXMessageArray* aItemChangedMessages);
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
51
hgs
parents: 38
diff changeset
   164
    public:        
35
hgs
parents: 34
diff changeset
   165
        /**
hgs
parents: 34
diff changeset
   166
        * Get songs count for a specified album and a specified artist
hgs
parents: 34
diff changeset
   167
        * @param aArtistId: The ID of the artist
hgs
parents: 34
diff changeset
   168
        * @param aAlbumId: The ID of the album
hgs
parents: 34
diff changeset
   169
        */
hgs
parents: 34
diff changeset
   170
        TInt GetSongsCountInAlbumMatchingArtistL(TUint32 aArtistId, TUint32 aAlbumId);
51
hgs
parents: 38
diff changeset
   171
       /**
hgs
parents: 38
diff changeset
   172
        * Check if the specified album ID is an unknown album.
hgs
parents: 38
diff changeset
   173
        * An “Unknown album” is one where the album name and album artist are unknown.
hgs
parents: 38
diff changeset
   174
        * @param aId: The ID of the album
hgs
parents: 38
diff changeset
   175
        * @return ETrue if it's an unknown album
hgs
parents: 38
diff changeset
   176
        */
hgs
parents: 38
diff changeset
   177
        TBool IsUnknownAlbumL(const TUint32 aId);
hgs
parents: 38
diff changeset
   178
        
hgs
parents: 38
diff changeset
   179
        /**
hgs
parents: 38
diff changeset
   180
        * Generate Unique ID for Album
hgs
parents: 38
diff changeset
   181
        * @param aMedia media object
hgs
parents: 38
diff changeset
   182
        * @param aCaseSensitive indicates whether case sensitivity should be taken
hgs
parents: 38
diff changeset
   183
        *        into consideration when generating the unique row id
hgs
parents: 38
diff changeset
   184
        * @return the ID of album
hgs
parents: 38
diff changeset
   185
        */
hgs
parents: 38
diff changeset
   186
        TUint32 GenerateUniqueIdL(const CMPXMedia& aMedia);
34
hgs
parents: 22
diff changeset
   187
hgs
parents: 22
diff changeset
   188
    private:
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
        * Updates the media with information from the table
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
        * @param aRecord record containing the source fields
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
        * @param aAttrs attributes to be returned
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
        * @param aMedia returns the requested attributes
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
        void UpdateMediaL(RSqlStatement& aRecord, const TArray<TMPXAttribute>& aAttrs,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
            CMPXMedia& aMedia);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
         /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
        * Generate searching criteria for album table from the given criteria
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
        * @param aMedia media data
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
        * @param aFields fields of Album table
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
        * @param aValues values of each field of Album table
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
        * @return a string containing the selection criteria. The ownership is passed to the caller.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
        */
35
hgs
parents: 34
diff changeset
   205
        void GenerateAlbumFieldsValuesL(const CMPXMedia& aMedia,
hgs
parents: 34
diff changeset
   206
            CDesCArray& aFields, CDesCArray& aValues);
51
hgs
parents: 38
diff changeset
   207
        
35
hgs
parents: 34
diff changeset
   208
        /**
hgs
parents: 34
diff changeset
   209
        * Get the Albumart of song which belongs to the specified Album.
hgs
parents: 34
diff changeset
   210
        * @param aId The ID of the album
hgs
parents: 34
diff changeset
   211
        * @param aArt albumart with the song is deleted.
hgs
parents: 34
diff changeset
   212
        * @returns alternative albumart retrieved in the specified Album.
hgs
parents: 34
diff changeset
   213
        */
hgs
parents: 34
diff changeset
   214
        HBufC* AlbumartForAlbumL(const TUint32 aId, TPtrC aArt);
51
hgs
parents: 38
diff changeset
   215
        
hgs
parents: 38
diff changeset
   216
        /**
hgs
parents: 38
diff changeset
   217
        * Processes a recordset by constructing media instances and adding them
hgs
parents: 38
diff changeset
   218
        * to the specified array.
hgs
parents: 38
diff changeset
   219
        * @param aAttrs attributes to be returned
hgs
parents: 38
diff changeset
   220
        * @param aRecordset recordset to be processed
hgs
parents: 38
diff changeset
   221
        * @param aMediaArray returns the media instances
hgs
parents: 38
diff changeset
   222
        */
hgs
parents: 38
diff changeset
   223
        void ProcessAlbumRecordSetL(const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 38
diff changeset
   224
            RSqlStatement& aRecordset, CMPXMediaArray& aMediaArray);
hgs
parents: 38
diff changeset
   225
        
hgs
parents: 38
diff changeset
   226
        /**
hgs
parents: 38
diff changeset
   227
        * Processes a recordset by constructing media instances and adding them
hgs
parents: 38
diff changeset
   228
        * to the specified array.
hgs
parents: 38
diff changeset
   229
        * @param aAttrs attributes to be returned
hgs
parents: 38
diff changeset
   230
        * @param aRecordset recordset to be processed
hgs
parents: 38
diff changeset
   231
        * @param aMediaArray returns the media instances
hgs
parents: 38
diff changeset
   232
        */
hgs
parents: 38
diff changeset
   233
        void ProcessMediaWallAlbumRecordSetL(const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 38
diff changeset
   234
            RSqlStatement& aRecordset, CMPXMediaArray& aMediaArray);
hgs
parents: 38
diff changeset
   235
        
hgs
parents: 38
diff changeset
   236
        /**
hgs
parents: 38
diff changeset
   237
        * Retrieve AlbumArtist name from media object
hgs
parents: 38
diff changeset
   238
        * @param aMedia media object
hgs
parents: 38
diff changeset
   239
        * @param aName returned name
hgs
parents: 38
diff changeset
   240
        * @return ETrue if name is available
hgs
parents: 38
diff changeset
   241
        */   
hgs
parents: 38
diff changeset
   242
        TBool RetrieveAlbumArtistL(const CMPXMedia& aMedia, TPtrC& aName);
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
51
hgs
parents: 38
diff changeset
   244
        /**
hgs
parents: 38
diff changeset
   245
        * Retrieve Artist name from media object
hgs
parents: 38
diff changeset
   246
        * @param aMedia media object
hgs
parents: 38
diff changeset
   247
        * @param aName returned name
hgs
parents: 38
diff changeset
   248
        */   
hgs
parents: 38
diff changeset
   249
        void RetrieveArtist(const CMPXMedia& aMedia, TPtrC& aName);
hgs
parents: 38
diff changeset
   250
hgs
parents: 38
diff changeset
   251
        /**
hgs
parents: 38
diff changeset
   252
        * Check if Art needs to be updated
hgs
parents: 38
diff changeset
   253
        * @param aDeletedSongArt deleted song's art
hgs
parents: 38
diff changeset
   254
        * @param aCurrentAlbumArt Album's current art
hgs
parents: 38
diff changeset
   255
        * @return ETrue if aDeletedSongArt is not non-embedded album art and 
hgs
parents: 38
diff changeset
   256
        *         aDeleteSongArt and aCurrentAlbumArt are the same and known
hgs
parents: 38
diff changeset
   257
        */   
hgs
parents: 38
diff changeset
   258
        TBool NeedToUpdateArt(const TDesC& aDeletedSongArt, const TDesC& aCurrentAlbumArt);
hgs
parents: 38
diff changeset
   259
        
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
    private:    // from MMPXTable
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
        * @see MMPXTable
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
        virtual void CreateTableL(RSqlDatabase& aDatabase, TBool aCorruptTable);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
        * @see MMPXTable
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
        virtual TBool CheckTableL(RSqlDatabase& aDatabase);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
    private:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
        * C++ constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
        * @param aDbManager database manager to use for database interactions
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
        * @param aCategory identifies the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
        CMPXDbAlbum(CMPXDbManager& aDbManager, TMPXGeneralCategory aCategory, MMPXDbAlbumObserver& aObserver);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
        * Second phase constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
        void ConstructL();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
    public:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
        /**
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
        * Column indexes in the category tables
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
        */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
        enum TAlbumColumns
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
            {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
            EAlbumUniqueId = KMPXTableDefaultIndex,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
            EAlbumName,
38
hgs
parents: 35
diff changeset
   295
            EAlbumSongCount,      
51
hgs
parents: 38
diff changeset
   296
            EAlbumArtist,
hgs
parents: 38
diff changeset
   297
            EAlbumArtistName,
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
            EAlbumArt,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
            EAlbumFieldCount
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
            };
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
    private:    // Data
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
        MMPXDbAlbumObserver& iObserver;
51
hgs
parents: 38
diff changeset
   304
        RPointerArray<CMPXMedia> iUnknownArtists;
hgs
parents: 38
diff changeset
   305
        RPointerArray<CMPXMedia> iUnknownAlbums;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
    };
51
hgs
parents: 38
diff changeset
   307
    
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
#endif // MPXDBALBUM_H
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
// End of File