mpserviceplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp
author hgs
Tue, 24 Aug 2010 03:36:14 -0500
changeset 51 560ce2306a17
parent 38 b93f525c9244
child 55 f3930dda3342
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:  Responsible for interation with the category tables:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*                Artist, Album, Genre and 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
// INCLUDE FILES
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <sqldb.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <mpxlog.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "mpxdbcommonutil.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include "mpxdbcommondef.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "mpxdbmanager.h"
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
#include "mpxcollectiondbdef.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "mpxmediamusicdefs.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "mpxdbpluginqueries.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "mpxdbutil.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "mpxdbalbum.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
// CONSTANTS
35
hgs
parents: 34
diff changeset
    36
#ifdef ABSTRACTAUDIOALBUM_INCLUDED
hgs
parents: 34
diff changeset
    37
_LIT( KAbstractAlbumExt, ".alb" );
hgs
parents: 34
diff changeset
    38
#endif // ABSTRACTAUDIOALBUM_INCLUDED
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
51
hgs
parents: 38
diff changeset
    40
_LIT( KAlbumAlbumArtistSeperator, "\t1");
hgs
parents: 38
diff changeset
    41
_LIT( KAlbumArtistSeperator, "\t2");
hgs
parents: 38
diff changeset
    42
hgs
parents: 38
diff changeset
    43
const TInt KUnknownAlbumsGranularity = 250;
hgs
parents: 38
diff changeset
    44
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
// ============================ MEMBER FUNCTIONS ==============================
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
// Two-phased constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
CMPXDbAlbum* CMPXDbAlbum::NewL(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
    CMPXDbManager& aDbManager,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
    TMPXGeneralCategory aCategory,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
    MMPXDbAlbumObserver& aObserver)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
    MPX_FUNC("CMPXDbAlbum::NewL");
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
    CMPXDbAlbum* self = CMPXDbAlbum::NewLC(aDbManager, aCategory, aObserver);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
    CleanupStack::Pop(self);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
    return self;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
    }
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
// Two-phased constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
// ----------------------------------------------------------------------------
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
CMPXDbAlbum* CMPXDbAlbum::NewLC(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
    CMPXDbManager& aDbManager,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
    TMPXGeneralCategory aCategory,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    MMPXDbAlbumObserver& aObserver)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
    MPX_FUNC("CMPXDbAlbum::NewLC");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
    CMPXDbAlbum* self = new (ELeave) CMPXDbAlbum(aDbManager, aCategory, aObserver);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
    CleanupStack::PushL(self);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
    self->ConstructL();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
    return self;
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
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
// Destructor
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
// ----------------------------------------------------------------------------
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
CMPXDbAlbum::~CMPXDbAlbum()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
    MPX_FUNC("CMPXDbAlbum::~CMPXDbAlbum");
51
hgs
parents: 38
diff changeset
    87
    
hgs
parents: 38
diff changeset
    88
    iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
    89
    iUnknownAlbums.ResetAndDestroy();
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
    }
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
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
// Constructor
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
CMPXDbAlbum::CMPXDbAlbum(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
    CMPXDbManager& aDbManager,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
    TMPXGeneralCategory aCategory,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
    MMPXDbAlbumObserver& aObserver) :
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
    CMPXDbCategory(aDbManager, aCategory),
51
hgs
parents: 38
diff changeset
   101
    iObserver(aObserver),
hgs
parents: 38
diff changeset
   102
    iUnknownArtists(KUnknownAlbumsGranularity),
hgs
parents: 38
diff changeset
   103
    iUnknownAlbums(KUnknownAlbumsGranularity)
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
    MPX_FUNC("CMPXDbAlbum::CMPXDbAlbum");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
    }
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
// Second phase constructor.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
void CMPXDbAlbum::ConstructL()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
    MPX_FUNC("CMPXDbAlbum::ConstructL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
    BaseConstructL();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
// CMPXDbAlbum::AddItemL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
TUint32 CMPXDbAlbum::AddItemL(
51
hgs
parents: 38
diff changeset
   124
    TMPXGeneralCategory /*aCategory*/,        
hgs
parents: 38
diff changeset
   125
    const CMPXMedia& aMedia,
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    TInt aDriveId,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    TBool& aNewRecord,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
    TBool aCaseSensitive)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
    MPX_FUNC("CMPXDbAlbum::AddItemL");
34
hgs
parents: 22
diff changeset
   131
51
hgs
parents: 38
diff changeset
   132
    TPtrC album(KNullDesC);
hgs
parents: 38
diff changeset
   133
    TPtrC albumArtist(KNullDesC);
hgs
parents: 38
diff changeset
   134
    TPtrC artist(KNullDesC);
hgs
parents: 38
diff changeset
   135
    TPtrC albumArt(KNullDesC);
hgs
parents: 38
diff changeset
   136
    
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
    // try to find the item first
51
hgs
parents: 38
diff changeset
   138
    TUint32 rowId(GenerateUniqueIdL(aMedia));
hgs
parents: 38
diff changeset
   139
    
hgs
parents: 38
diff changeset
   140
    // retrieve the existing record
hgs
parents: 38
diff changeset
   141
    HBufC* query = PreProcessStringLC(KQueryCategoryItem);
hgs
parents: 38
diff changeset
   142
    RSqlStatement recordset(
hgs
parents: 38
diff changeset
   143
        iDbManager.ExecuteSelectQueryL(aDriveId, *query, rowId));
hgs
parents: 38
diff changeset
   144
    CleanupStack::PopAndDestroy(query);
hgs
parents: 38
diff changeset
   145
    CleanupClosePushL(recordset);
hgs
parents: 38
diff changeset
   146
    
hgs
parents: 38
diff changeset
   147
    TInt result = recordset.Next();   
hgs
parents: 38
diff changeset
   148
    if (result == KSqlAtEnd)
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
        {
51
hgs
parents: 38
diff changeset
   150
        aNewRecord = result;
hgs
parents: 38
diff changeset
   151
        
hgs
parents: 38
diff changeset
   152
        // check Album attribute
hgs
parents: 38
diff changeset
   153
        if (aMedia.IsSupported(KMPXMediaMusicAlbum))     
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
            {
51
hgs
parents: 38
diff changeset
   155
            album.Set(aMedia.ValueText(KMPXMediaMusicAlbum).Left(KMCMaxTextLen));
hgs
parents: 38
diff changeset
   156
            }
hgs
parents: 38
diff changeset
   157
        
hgs
parents: 38
diff changeset
   158
        // check AlbumArt attirbute
hgs
parents: 38
diff changeset
   159
        if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName))
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
            {
51
hgs
parents: 38
diff changeset
   161
            albumArt.Set(aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
            }
34
hgs
parents: 22
diff changeset
   163
51
hgs
parents: 38
diff changeset
   164
        // insert new
hgs
parents: 38
diff changeset
   165
        HBufC* name = MPXDbCommonUtil::ProcessSingleQuotesLC(album);
hgs
parents: 38
diff changeset
   166
        TUint32 artistId(0);
hgs
parents: 38
diff changeset
   167
        HBufC* artistName = NULL;        
hgs
parents: 38
diff changeset
   168
        if (RetrieveAlbumArtistL(aMedia, albumArtist))
hgs
parents: 38
diff changeset
   169
            {
hgs
parents: 38
diff changeset
   170
            artistId = iObserver.AddAlbumArtistL(albumArtist, albumArt, aDriveId);
hgs
parents: 38
diff changeset
   171
            artistName = MPXDbCommonUtil::ProcessSingleQuotesLC(albumArtist);
hgs
parents: 38
diff changeset
   172
            }
hgs
parents: 38
diff changeset
   173
        else
hgs
parents: 38
diff changeset
   174
            {
hgs
parents: 38
diff changeset
   175
            RetrieveArtist(aMedia, artist);
hgs
parents: 38
diff changeset
   176
            artistId = iObserver.AddAlbumArtistL(artist, albumArt, aDriveId);
hgs
parents: 38
diff changeset
   177
            artistName = MPXDbCommonUtil::ProcessSingleQuotesLC(artist);
hgs
parents: 38
diff changeset
   178
            }
hgs
parents: 38
diff changeset
   179
        
hgs
parents: 38
diff changeset
   180
        HBufC* art = MPXDbCommonUtil::ProcessSingleQuotesLC(albumArt);
hgs
parents: 38
diff changeset
   181
                
hgs
parents: 38
diff changeset
   182
        iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumInsert, rowId, name, 1, artistId, artistName,art); 
hgs
parents: 38
diff changeset
   183
hgs
parents: 38
diff changeset
   184
        CleanupStack::PopAndDestroy(art);
hgs
parents: 38
diff changeset
   185
        CleanupStack::PopAndDestroy(artistName);
hgs
parents: 38
diff changeset
   186
        CleanupStack::PopAndDestroy(name);
hgs
parents: 38
diff changeset
   187
        }
hgs
parents: 38
diff changeset
   188
    else if (result == KSqlAtRow)
hgs
parents: 38
diff changeset
   189
        {       
hgs
parents: 38
diff changeset
   190
        // retrieve Art from Album table
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
        TPtrC art(KNullDesC);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
        art.Set(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumArt));
34
hgs
parents: 22
diff changeset
   193
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
        // the current one is Unknown and the new one is Not Unknown
51
hgs
parents: 38
diff changeset
   195
        if ( art == KNullDesC && albumArt != KNullDesC )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
            {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
            HBufC* artReplaceSingleQuote = 
51
hgs
parents: 38
diff changeset
   198
                MPXDbCommonUtil::ProcessSingleQuotesLC( albumArt );
38
hgs
parents: 35
diff changeset
   199
hgs
parents: 35
diff changeset
   200
            TPtrC criteria(KCriterionArt);
hgs
parents: 35
diff changeset
   201
            HBufC* setStr = HBufC::NewLC(criteria.Length() + artReplaceSingleQuote->Length()); 
hgs
parents: 35
diff changeset
   202
            setStr->Des().Format( KCriterionArt, artReplaceSingleQuote );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
            iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, rowId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
            CleanupStack::PopAndDestroy(setStr);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
            CleanupStack::PopAndDestroy(artReplaceSingleQuote);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
            }
34
hgs
parents: 22
diff changeset
   208
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
        // increment the number of songs for the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
        query = PreProcessStringLC(KQueryCategoryIncrementSongCount);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
        iDbManager.ExecuteQueryL(aDriveId, *query, rowId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
        CleanupStack::PopAndDestroy(query);
51
hgs
parents: 38
diff changeset
   213
        } // existing record
hgs
parents: 38
diff changeset
   214
    else
hgs
parents: 38
diff changeset
   215
        {
hgs
parents: 38
diff changeset
   216
        MPX_DEBUG2("SQL error %d", result);
hgs
parents: 38
diff changeset
   217
        User::Leave(result);
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
51
hgs
parents: 38
diff changeset
   220
    CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 38
diff changeset
   221
    
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
    return rowId;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
// ----------------------------------------------------------------------------
51
hgs
parents: 38
diff changeset
   226
// CMPXDbAlbum::DecrementSongsForAlbumL
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
//
51
hgs
parents: 38
diff changeset
   229
void CMPXDbAlbum::DecrementSongsForAlbumL(
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    const TUint32 aId,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
    TInt aDriveId,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    CMPXMessageArray* aItemChangedMessages,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
    TBool& aItemExist,
51
hgs
parents: 38
diff changeset
   234
    const TDesC& aArt)       
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    {
51
hgs
parents: 38
diff changeset
   236
    MPX_FUNC("CMPXDbAlbum::DecrementSongsForAlbumL");
hgs
parents: 38
diff changeset
   237
hgs
parents: 38
diff changeset
   238
    // retrieve the existing record
hgs
parents: 38
diff changeset
   239
    HBufC* query = PreProcessStringLC(KQueryCategoryItem);
hgs
parents: 38
diff changeset
   240
    RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(*query, aId));
hgs
parents: 38
diff changeset
   241
    CleanupStack::PopAndDestroy(query);
hgs
parents: 38
diff changeset
   242
hgs
parents: 38
diff changeset
   243
    CleanupClosePushL(recordset);
hgs
parents: 38
diff changeset
   244
hgs
parents: 38
diff changeset
   245
    if (recordset.Next() != KSqlAtRow)
hgs
parents: 38
diff changeset
   246
        {
hgs
parents: 38
diff changeset
   247
        User::Leave(KErrNotFound);
hgs
parents: 38
diff changeset
   248
        }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    // if just one song uses this category. Use <= just in case
51
hgs
parents: 38
diff changeset
   251
    if (recordset.ColumnInt64(EAlbumSongCount) <= 1)
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
        {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
        aItemExist = EFalse;
51
hgs
parents: 38
diff changeset
   254
hgs
parents: 38
diff changeset
   255
        // Decrement albums count on artist       
hgs
parents: 38
diff changeset
   256
        TUint32 albumArtistId = recordset.ColumnInt64(EAlbumArtist);
hgs
parents: 38
diff changeset
   257
        iObserver.DeleteAlbumForArtistL(albumArtistId, aDriveId, aItemChangedMessages);
hgs
parents: 38
diff changeset
   258
        CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 38
diff changeset
   259
                
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
        // delete the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
        DeleteCategoryL(aId, aDriveId);
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
        if (aItemChangedMessages)
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
            // add the item changed message
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
            MPXDbCommonUtil::AddItemChangedMessageL(*aItemChangedMessages, aId, EMPXItemDeleted,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
                iCategory, KDBPluginUid);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
            }
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
    else
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
        aItemExist = ETrue;
34
hgs
parents: 22
diff changeset
   273
35
hgs
parents: 34
diff changeset
   274
        TBool itemModified = EFalse;
51
hgs
parents: 38
diff changeset
   275
        		
hgs
parents: 38
diff changeset
   276
        TPtrC art(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumArt));        
hgs
parents: 38
diff changeset
   277
        if (NeedToUpdateArt(aArt, art))
35
hgs
parents: 34
diff changeset
   278
            {
hgs
parents: 34
diff changeset
   279
            MPX_DEBUG2("AlbumArt of the Song to be deleted is [%S]", &aArt);
hgs
parents: 34
diff changeset
   280
            
hgs
parents: 34
diff changeset
   281
            //need to get alternative art in the same album to display
hgs
parents: 34
diff changeset
   282
            HBufC* newArt = AlbumartForAlbumL(aId, aArt);
hgs
parents: 34
diff changeset
   283
            CleanupStack::PushL(newArt);
hgs
parents: 34
diff changeset
   284
hgs
parents: 34
diff changeset
   285
            //update Album table only if alternative albumart found
hgs
parents: 34
diff changeset
   286
            if (newArt)
hgs
parents: 34
diff changeset
   287
                {
51
hgs
parents: 38
diff changeset
   288
                MPX_DEBUG1("CMPXDbAlbum::DecrementSongsForAlbumL, get newArt");
35
hgs
parents: 34
diff changeset
   289
                HBufC* artReplaceSingleQuote = MPXDbCommonUtil::ProcessSingleQuotesLC( *newArt );
38
hgs
parents: 35
diff changeset
   290
                TPtrC criteria(KCriterionArt);   
hgs
parents: 35
diff changeset
   291
                HBufC* setStr = HBufC::NewLC(criteria.Length() + artReplaceSingleQuote->Length()); 
hgs
parents: 35
diff changeset
   292
                setStr->Des().Format( KCriterionArt, artReplaceSingleQuote );
35
hgs
parents: 34
diff changeset
   293
hgs
parents: 34
diff changeset
   294
                iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, aId);
hgs
parents: 34
diff changeset
   295
                CleanupStack::PopAndDestroy(setStr);
hgs
parents: 34
diff changeset
   296
                CleanupStack::PopAndDestroy(artReplaceSingleQuote);
hgs
parents: 34
diff changeset
   297
                itemModified = ETrue;                     
hgs
parents: 34
diff changeset
   298
                }
51
hgs
parents: 38
diff changeset
   299
            CleanupStack::PopAndDestroy(newArt);             
hgs
parents: 38
diff changeset
   300
            }
hgs
parents: 38
diff changeset
   301
35
hgs
parents: 34
diff changeset
   302
        if (aItemChangedMessages && itemModified)
51
hgs
parents: 38
diff changeset
   303
            {
hgs
parents: 38
diff changeset
   304
            // add the item changed message
hgs
parents: 38
diff changeset
   305
            MPXDbCommonUtil::AddItemAlbumChangedMessageL(*aItemChangedMessages, aId, EMPXItemModified,
hgs
parents: 38
diff changeset
   306
                EMPXAlbum, KDBPluginUid, ETrue, 0 );
hgs
parents: 38
diff changeset
   307
            }
35
hgs
parents: 34
diff changeset
   308
        CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 34
diff changeset
   309
        
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
        // decrement the number of songs for the category
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
        query = PreProcessStringLC(KQueryCategoryDecrementSongCount);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
        iDbManager.ExecuteQueryL(aDriveId, *query, aId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
        CleanupStack::PopAndDestroy(query);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
// CMPXDbAlbum::GetAllCategoryItemsL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
void CMPXDbAlbum::GetAllCategoryItemsL(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
    const TArray<TMPXAttribute>& aAttrs,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   323
    CMPXMediaArray& aMediaArray)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
    MPX_FUNC("CMPXDbAlbum::GetAllCategoryItemsL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
51
hgs
parents: 38
diff changeset
   327
    RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(KQueryAlbumAll));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
    CleanupClosePushL(recordset);
51
hgs
parents: 38
diff changeset
   330
    TRAPD(err, ProcessAlbumRecordSetL(aAttrs, recordset, aMediaArray));
hgs
parents: 38
diff changeset
   331
    if (err != KErrNone)
hgs
parents: 38
diff changeset
   332
        {
hgs
parents: 38
diff changeset
   333
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   334
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   335
hgs
parents: 38
diff changeset
   336
        User::LeaveIfError(err);
hgs
parents: 38
diff changeset
   337
        }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
    CleanupStack::PopAndDestroy(&recordset);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
// ----------------------------------------------------------------------------
35
hgs
parents: 34
diff changeset
   342
// CMPXDbAlbum::GetAllCategoryItemsMediaWallL
hgs
parents: 34
diff changeset
   343
// ----------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   344
//
hgs
parents: 34
diff changeset
   345
void CMPXDbAlbum::GetAllCategoryItemsMediaWallL(
hgs
parents: 34
diff changeset
   346
    const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 34
diff changeset
   347
    CMPXMediaArray& aMediaArray)
hgs
parents: 34
diff changeset
   348
    {
hgs
parents: 34
diff changeset
   349
    MPX_FUNC("CMPXDbAlbum::GetAllCategoryItemsL");
hgs
parents: 34
diff changeset
   350
51
hgs
parents: 38
diff changeset
   351
    RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(KQueryAlbumAllMediaWall));
35
hgs
parents: 34
diff changeset
   352
hgs
parents: 34
diff changeset
   353
    CleanupClosePushL(recordset);
51
hgs
parents: 38
diff changeset
   354
    TRAPD(err, ProcessMediaWallAlbumRecordSetL(aAttrs, recordset, aMediaArray));
hgs
parents: 38
diff changeset
   355
    if (err != KErrNone)
hgs
parents: 38
diff changeset
   356
        {
hgs
parents: 38
diff changeset
   357
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   358
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   359
hgs
parents: 38
diff changeset
   360
        User::LeaveIfError(err);
hgs
parents: 38
diff changeset
   361
        }
35
hgs
parents: 34
diff changeset
   362
    CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 34
diff changeset
   363
    }
51
hgs
parents: 38
diff changeset
   364
hgs
parents: 38
diff changeset
   365
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   366
// CMPXDbCategory::GetSubCategoryItemsL
hgs
parents: 38
diff changeset
   367
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   368
//
hgs
parents: 38
diff changeset
   369
void CMPXDbAlbum::GetSubCategoryItemsL(
hgs
parents: 38
diff changeset
   370
    TMPXGeneralCategory aParentCategory,
hgs
parents: 38
diff changeset
   371
    TUint32 aParentId,
hgs
parents: 38
diff changeset
   372
    const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 38
diff changeset
   373
    CMPXMediaArray& aMediaArray)
hgs
parents: 38
diff changeset
   374
    {
hgs
parents: 38
diff changeset
   375
    MPX_FUNC("CMPXDbCategory::GetSubCategoryItemsL");
hgs
parents: 38
diff changeset
   376
hgs
parents: 38
diff changeset
   377
    // this is only valid for albums belonging to an artist
hgs
parents: 38
diff changeset
   378
    ASSERT((iCategory == EMPXAlbum) && (aParentCategory == EMPXArtist));
hgs
parents: 38
diff changeset
   379
hgs
parents: 38
diff changeset
   380
    // to handle the UREL warning
hgs
parents: 38
diff changeset
   381
    (void)aParentCategory;
hgs
parents: 38
diff changeset
   382
hgs
parents: 38
diff changeset
   383
    RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(KQueryMusicGetAlbumsforArtist, aParentId));
hgs
parents: 38
diff changeset
   384
    CleanupClosePushL(recordset);
hgs
parents: 38
diff changeset
   385
    ProcessAlbumRecordSetL(aAttrs, recordset, aMediaArray);
hgs
parents: 38
diff changeset
   386
    CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 38
diff changeset
   387
    }
hgs
parents: 38
diff changeset
   388
35
hgs
parents: 34
diff changeset
   389
// ----------------------------------------------------------------------------
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
// CMPXDbAlbum::UpdateItemL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
void CMPXDbAlbum::UpdateItemL(
34
hgs
parents: 22
diff changeset
   394
    TUint32 aId,
hgs
parents: 22
diff changeset
   395
    const CMPXMedia& aMedia,
hgs
parents: 22
diff changeset
   396
    TInt aDriveId,
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    CMPXMessageArray* aItemChangedMessages)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
	{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
	MPX_FUNC("CMPXDbAlbum::UpdateItemL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
	CDesCArrayFlat* fields = new (ELeave) CDesCArrayFlat(EAlbumFieldCount);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
	CleanupStack::PushL(fields);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
	CDesCArrayFlat* values = new (ELeave) CDesCArrayFlat(EAlbumFieldCount);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
	CleanupStack::PushL(values);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
	// process the media parameter and construct the fields and values array
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
	GenerateAlbumFieldsValuesL(aMedia, *fields, *values);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
	// construct the SET string
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
	HBufC* setStr = MPXDbCommonUtil::StringFromArraysLC(*fields, *values, KMCEqualSign, KMCCommaSign);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
    if (setStr->Length())
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
        {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
        // execute the query
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
        iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, aId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
        MPXDbCommonUtil::AddItemAlbumChangedMessageL(*aItemChangedMessages, aId, EMPXItemModified,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
        		EMPXAlbum, KDBPluginUid, ETrue, 0 );    
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
	CleanupStack::PopAndDestroy(setStr);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
	CleanupStack::PopAndDestroy(values);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
	CleanupStack::PopAndDestroy(fields);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
	}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
// CMPXDbAlbum::GetSongsCountInAlbumMatchingArtistL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
TInt CMPXDbAlbum::GetSongsCountInAlbumMatchingArtistL(TUint32 aArtistId, TUint32 aAlbumId)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
	{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
	MPX_FUNC("CMPXDbAlbum::GetSongsCountInAlbumMatchingArtistL");
34
hgs
parents: 22
diff changeset
   432
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
	return ExecuteSumQueryL(KQuerySongsInArtistAlbum, aArtistId, aAlbumId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
	}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
// CMPXDbAlbum::UpdateMediaL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
void CMPXDbAlbum::UpdateMediaL(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    RSqlStatement& aRecord,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
    const TArray<TMPXAttribute>& aAttrs,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    CMPXMedia& aMedia)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
    MPX_FUNC("CMPXDbAlbum::UpdateMediaL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
    TInt count(aAttrs.Count());
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
    for (TInt i = 0; i < count; ++i)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
        {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
        TInt contentId(aAttrs[i].ContentId());
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
        TUint attributeId(aAttrs[i].AttributeId());
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
        if (contentId == KMPXMediaIdGeneral)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
            {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
            if (attributeId & EMPXMediaGeneralId)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
                {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
                MPX_DEBUG1("    EMPXMediaGeneralId");
34
hgs
parents: 22
diff changeset
   458
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
                aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
                    aRecord.ColumnInt64(EAlbumUniqueId));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
            if (attributeId & EMPXMediaGeneralTitle)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
                {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
                MPX_DEBUG1("    EMPXMediaGeneralTitle");
34
hgs
parents: 22
diff changeset
   465
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
                TPtrC album( MPXDbCommonUtil::GetColumnTextL(aRecord, EAlbumName) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
                aMedia.SetTextValueL(KMPXMediaGeneralTitle,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
                    MPXDbCommonUtil::GetColumnTextL(aRecord, EAlbumName));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
                MPX_DEBUG2("	Album[%S]", &album );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
            if (attributeId & EMPXMediaGeneralCount)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
                {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
                MPX_DEBUG1("    EMPXMediaGeneralCount");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
				TInt songCount = GetSongsCountL(KDbManagerAllDrives,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
					aRecord.ColumnInt64(EAlbumUniqueId));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
                aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralCount, songCount );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
				MPX_DEBUG2("	SongCount[%d]", songCount );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
            } // end if contentId == KMPXMediaIdGeneral
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
		else if ( contentId == KMPXMediaIdMusic )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
			{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
			if (attributeId & EMPXMediaMusicArtist)
34
hgs
parents: 22
diff changeset
   484
				{
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
				MPX_DEBUG1("	EMPXMediaMusicArtist");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
51
hgs
parents: 38
diff changeset
   487
				TPtrC artistName(MPXDbCommonUtil::GetColumnTextL(aRecord, EAlbumArtistName));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
				aMedia.SetTextValueL(KMPXMediaMusicArtist, artistName);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
				MPX_DEBUG2("	Artist[%S]", &artistName);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
				}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
			if (attributeId & EMPXMediaMusicAlbum)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
				{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
				MPX_DEBUG1("	EMPXMediaMusicAlbum");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
				TPtrC albumName(KNullDesC);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
                TPtrC album( MPXDbCommonUtil::GetColumnTextL(aRecord, EAlbumName) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
				// if album is unknown
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
				if ( album != KNullDesC)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
					{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
					albumName.Set(album);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
					}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
				aMedia.SetTextValueL(KMPXMediaMusicAlbum, albumName);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
				MPX_DEBUG2("	Album[%S]", &albumName);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
				}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
			if (attributeId & EMPXMediaMusicAlbumArtFileName)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
				{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
				MPX_DEBUG1("	EMPXMediaMusicAlbumArtFileName");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
51
hgs
parents: 38
diff changeset
   513
				TPtrC art(MPXDbCommonUtil::GetColumnTextL(aRecord, EAlbumArt));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
				aMedia.SetTextValueL(KMPXMediaMusicAlbumArtFileName, art);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
				MPX_DEBUG2("	Art[%S]", &art);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
				}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
			}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
		} // end for
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
    aMedia.SetTObjectValueL<TMPXGeneralType>(KMPXMediaGeneralType, EMPXItem);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
    aMedia.SetTObjectValueL<TMPXGeneralCategory>(KMPXMediaGeneralCategory, iCategory);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
// CMPXDbAlbum::GenerateAlbumFieldsValuesL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
void CMPXDbAlbum::GenerateAlbumFieldsValuesL(const CMPXMedia& aMedia, CDesCArray& aFields, CDesCArray& aValues)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
	{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
	if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName))
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
		{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
		const TDesC& albumArtFilename = aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
		MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicArt, albumArtFilename);
51
hgs
parents: 38
diff changeset
   534
		}	
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
	}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
// ----------------------------------------------------------------------------
35
hgs
parents: 34
diff changeset
   538
// CMPXDbAlbum::AlbumartForAlbumL
hgs
parents: 34
diff changeset
   539
// ----------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   540
//
hgs
parents: 34
diff changeset
   541
HBufC* CMPXDbAlbum::AlbumartForAlbumL(const TUint32 aId, TPtrC aArt)
hgs
parents: 34
diff changeset
   542
    {
hgs
parents: 34
diff changeset
   543
    return iObserver.HandleAlbumartForAlbumL(aId, aArt);
hgs
parents: 34
diff changeset
   544
    }
hgs
parents: 34
diff changeset
   545
hgs
parents: 34
diff changeset
   546
// ----------------------------------------------------------------------------
51
hgs
parents: 38
diff changeset
   547
// CMPXDbAlbum::ProcessAlbumRecordSetL
hgs
parents: 38
diff changeset
   548
// Unknown album or Unknown artist are stored in the database as NULL (Name field and ArtistName field). 
hgs
parents: 38
diff changeset
   549
// The available unknown artist is saved for later and will be appended to the array 
hgs
parents: 38
diff changeset
   550
// as the last item among items which have the same artist.
hgs
parents: 38
diff changeset
   551
// The available unknown albums are saved for later and will be appended to the array
hgs
parents: 38
diff changeset
   552
// as the last items after all known albums are appended.
hgs
parents: 38
diff changeset
   553
// The unknown album and unknown artist is saved for later and will be appended to the array
hgs
parents: 38
diff changeset
   554
// as the last item.
hgs
parents: 38
diff changeset
   555
//
hgs
parents: 38
diff changeset
   556
// NOTE: putting unknown album to the end of the array only takes place when title
hgs
parents: 38
diff changeset
   557
//       field is requested. normal sorting algorithm occurs if title isn't
hgs
parents: 38
diff changeset
   558
//       requested.
hgs
parents: 38
diff changeset
   559
//
hgs
parents: 38
diff changeset
   560
// Example:
hgs
parents: 38
diff changeset
   561
//     Album X of artist A
hgs
parents: 38
diff changeset
   562
//     Album X of artist B
hgs
parents: 38
diff changeset
   563
//     Album X of unknown artist
hgs
parents: 38
diff changeset
   564
//     Album Y of artist A
hgs
parents: 38
diff changeset
   565
//     Album Y of unknown artist
hgs
parents: 38
diff changeset
   566
//     Unknown album of artist A
hgs
parents: 38
diff changeset
   567
//     Unknown album of artist B
hgs
parents: 38
diff changeset
   568
//     Unknown album of unknown artist
hgs
parents: 38
diff changeset
   569
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   570
//
hgs
parents: 38
diff changeset
   571
void CMPXDbAlbum::ProcessAlbumRecordSetL(
hgs
parents: 38
diff changeset
   572
    const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 38
diff changeset
   573
    RSqlStatement& aRecordset,
hgs
parents: 38
diff changeset
   574
    CMPXMediaArray& aMediaArray)
hgs
parents: 38
diff changeset
   575
    {
hgs
parents: 38
diff changeset
   576
    // populate the array
hgs
parents: 38
diff changeset
   577
    TBool firstRecord(ETrue);
hgs
parents: 38
diff changeset
   578
    CMPXMedia* unknownAlbumUnknownArtistMedia(NULL);
hgs
parents: 38
diff changeset
   579
    CMPXMedia* unknownMedia(NULL);
hgs
parents: 38
diff changeset
   580
    TUint32 prevId(0);
hgs
parents: 38
diff changeset
   581
    TUint32 albumId(0);
hgs
parents: 38
diff changeset
   582
    TUint32 prevAlbumId(0);
hgs
parents: 38
diff changeset
   583
    TInt count(0);
hgs
parents: 38
diff changeset
   584
    TInt err(KErrNone);
hgs
parents: 38
diff changeset
   585
       
hgs
parents: 38
diff changeset
   586
    // Reset array for unknown artists
hgs
parents: 38
diff changeset
   587
    if (iUnknownArtists.Count() > 0)
hgs
parents: 38
diff changeset
   588
        {
hgs
parents: 38
diff changeset
   589
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   590
        }
hgs
parents: 38
diff changeset
   591
    
hgs
parents: 38
diff changeset
   592
    // Reset array for unknown albums
hgs
parents: 38
diff changeset
   593
    if (iUnknownAlbums.Count() > 0)
hgs
parents: 38
diff changeset
   594
        {
hgs
parents: 38
diff changeset
   595
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   596
        }
hgs
parents: 38
diff changeset
   597
        
hgs
parents: 38
diff changeset
   598
    TInt pPath(0);
hgs
parents: 38
diff changeset
   599
    if (aMediaArray.Count())
hgs
parents: 38
diff changeset
   600
        {
hgs
parents: 38
diff changeset
   601
        CMPXMedia* pMedia = aMediaArray[0];
hgs
parents: 38
diff changeset
   602
        if (pMedia->IsSupported(KMPXMediaGeneralValue))
hgs
parents: 38
diff changeset
   603
            { // Query excuted by OpenL
hgs
parents: 38
diff changeset
   604
            pPath = pMedia->ValueTObjectL<TInt>(KMPXMediaGeneralValue);
hgs
parents: 38
diff changeset
   605
            MPX_ASSERT(pPath);
hgs
parents: 38
diff changeset
   606
            }
hgs
parents: 38
diff changeset
   607
        }
hgs
parents: 38
diff changeset
   608
    
hgs
parents: 38
diff changeset
   609
    RArray<TMPXItemId> ids;
hgs
parents: 38
diff changeset
   610
    CleanupClosePushL(ids);
hgs
parents: 38
diff changeset
   611
    
hgs
parents: 38
diff changeset
   612
    while ((err = aRecordset.Next()) == KSqlAtRow)
hgs
parents: 38
diff changeset
   613
        {
hgs
parents: 38
diff changeset
   614
        TUint32 rowId(aRecordset.ColumnInt64(EAlbumUniqueId));
hgs
parents: 38
diff changeset
   615
        if (prevId == rowId)
hgs
parents: 38
diff changeset
   616
            {
hgs
parents: 38
diff changeset
   617
            continue;
hgs
parents: 38
diff changeset
   618
            }
hgs
parents: 38
diff changeset
   619
hgs
parents: 38
diff changeset
   620
        prevId = rowId;
hgs
parents: 38
diff changeset
   621
        CMPXMedia* media = CMPXMedia::NewL();
hgs
parents: 38
diff changeset
   622
        CleanupStack::PushL(media);
hgs
parents: 38
diff changeset
   623
hgs
parents: 38
diff changeset
   624
        UpdateMediaL(aRecordset, aAttrs, *media);
hgs
parents: 38
diff changeset
   625
        
hgs
parents: 38
diff changeset
   626
        albumId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), EMPXAlbum,
hgs
parents: 38
diff changeset
   627
                MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumName), ETrue);
hgs
parents: 38
diff changeset
   628
        
hgs
parents: 38
diff changeset
   629
        // Append Known album and Unknown artists
hgs
parents: 38
diff changeset
   630
        count = iUnknownArtists.Count();
hgs
parents: 38
diff changeset
   631
        if ( prevAlbumId != albumId && count > 0)
hgs
parents: 38
diff changeset
   632
            {
hgs
parents: 38
diff changeset
   633
            unknownMedia = NULL;
hgs
parents: 38
diff changeset
   634
                
hgs
parents: 38
diff changeset
   635
            for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   636
                {
hgs
parents: 38
diff changeset
   637
                unknownMedia = iUnknownArtists[i];
hgs
parents: 38
diff changeset
   638
                if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   639
                    {
hgs
parents: 38
diff changeset
   640
                    ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   641
                    }
hgs
parents: 38
diff changeset
   642
                aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   643
                }
hgs
parents: 38
diff changeset
   644
                
hgs
parents: 38
diff changeset
   645
            iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   646
            }
hgs
parents: 38
diff changeset
   647
        
hgs
parents: 38
diff changeset
   648
        // for Unknown album and Unknown artist
hgs
parents: 38
diff changeset
   649
        if (firstRecord && (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumArtistName).Length() == 0) &&
hgs
parents: 38
diff changeset
   650
            (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumName).Length() == 0))
hgs
parents: 38
diff changeset
   651
            {
hgs
parents: 38
diff changeset
   652
            unknownAlbumUnknownArtistMedia = media;
hgs
parents: 38
diff changeset
   653
            }
hgs
parents: 38
diff changeset
   654
        // for Unknown albums and Known artists
hgs
parents: 38
diff changeset
   655
        else if (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumName).Length() == 0)
hgs
parents: 38
diff changeset
   656
            {
hgs
parents: 38
diff changeset
   657
            iUnknownAlbums.Append(media);
hgs
parents: 38
diff changeset
   658
            CleanupStack::Pop(media);
hgs
parents: 38
diff changeset
   659
            }
hgs
parents: 38
diff changeset
   660
        // for Known album and Unknown artist
hgs
parents: 38
diff changeset
   661
        else if (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumArtistName).Length() == 0)
hgs
parents: 38
diff changeset
   662
            {
hgs
parents: 38
diff changeset
   663
            iUnknownArtists.Append(media);
hgs
parents: 38
diff changeset
   664
            CleanupStack::Pop(media);
hgs
parents: 38
diff changeset
   665
            
hgs
parents: 38
diff changeset
   666
            prevAlbumId = albumId;
hgs
parents: 38
diff changeset
   667
            }
hgs
parents: 38
diff changeset
   668
        else
hgs
parents: 38
diff changeset
   669
            {
hgs
parents: 38
diff changeset
   670
            if (media->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   671
                {
hgs
parents: 38
diff changeset
   672
                ids.AppendL(media->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   673
                }
hgs
parents: 38
diff changeset
   674
            aMediaArray.AppendL(*media);
hgs
parents: 38
diff changeset
   675
            CleanupStack::PopAndDestroy(media);       
hgs
parents: 38
diff changeset
   676
            }
hgs
parents: 38
diff changeset
   677
        
hgs
parents: 38
diff changeset
   678
        firstRecord = EFalse;               
hgs
parents: 38
diff changeset
   679
        } // end while
hgs
parents: 38
diff changeset
   680
hgs
parents: 38
diff changeset
   681
    if (err != KSqlAtEnd)
hgs
parents: 38
diff changeset
   682
        {
hgs
parents: 38
diff changeset
   683
        User::LeaveIfError(err);
hgs
parents: 38
diff changeset
   684
        }
hgs
parents: 38
diff changeset
   685
hgs
parents: 38
diff changeset
   686
    // Append Known artist and Unknown albums
hgs
parents: 38
diff changeset
   687
    count = iUnknownArtists.Count();
hgs
parents: 38
diff changeset
   688
    if ( count > 0)
hgs
parents: 38
diff changeset
   689
        {
hgs
parents: 38
diff changeset
   690
        unknownMedia = NULL;
hgs
parents: 38
diff changeset
   691
        
hgs
parents: 38
diff changeset
   692
        for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   693
            {
hgs
parents: 38
diff changeset
   694
            unknownMedia = iUnknownArtists[i];
hgs
parents: 38
diff changeset
   695
            if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   696
                {
hgs
parents: 38
diff changeset
   697
                ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   698
                }
hgs
parents: 38
diff changeset
   699
            aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   700
            }
hgs
parents: 38
diff changeset
   701
        
hgs
parents: 38
diff changeset
   702
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   703
        }
hgs
parents: 38
diff changeset
   704
hgs
parents: 38
diff changeset
   705
    // Append Unknown artists to MediaArray
hgs
parents: 38
diff changeset
   706
    count = iUnknownAlbums.Count();
hgs
parents: 38
diff changeset
   707
    if ( count > 0)
hgs
parents: 38
diff changeset
   708
        {
hgs
parents: 38
diff changeset
   709
        CMPXMedia* unknownMedia = NULL;
hgs
parents: 38
diff changeset
   710
        
hgs
parents: 38
diff changeset
   711
        for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   712
            {
hgs
parents: 38
diff changeset
   713
            unknownMedia = iUnknownAlbums[i];
hgs
parents: 38
diff changeset
   714
            if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   715
                {
hgs
parents: 38
diff changeset
   716
                ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   717
                }
hgs
parents: 38
diff changeset
   718
            aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   719
            }
hgs
parents: 38
diff changeset
   720
        
hgs
parents: 38
diff changeset
   721
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   722
        }
hgs
parents: 38
diff changeset
   723
    
hgs
parents: 38
diff changeset
   724
    // the last item in the list
hgs
parents: 38
diff changeset
   725
    if (unknownAlbumUnknownArtistMedia)
hgs
parents: 38
diff changeset
   726
        {
hgs
parents: 38
diff changeset
   727
        if (unknownAlbumUnknownArtistMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   728
            {
hgs
parents: 38
diff changeset
   729
            ids.AppendL(unknownAlbumUnknownArtistMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   730
            }
hgs
parents: 38
diff changeset
   731
        aMediaArray.AppendL(*unknownAlbumUnknownArtistMedia);
hgs
parents: 38
diff changeset
   732
        CleanupStack::PopAndDestroy(unknownAlbumUnknownArtistMedia);
hgs
parents: 38
diff changeset
   733
        }
hgs
parents: 38
diff changeset
   734
    
hgs
parents: 38
diff changeset
   735
    // Append ids to the returned path
hgs
parents: 38
diff changeset
   736
    if (pPath)
hgs
parents: 38
diff changeset
   737
        {
hgs
parents: 38
diff changeset
   738
        ((CMPXCollectionPath*)pPath)->AppendL(ids.Array());
hgs
parents: 38
diff changeset
   739
        }
hgs
parents: 38
diff changeset
   740
    CleanupStack::PopAndDestroy(&ids);
hgs
parents: 38
diff changeset
   741
    }
hgs
parents: 38
diff changeset
   742
hgs
parents: 38
diff changeset
   743
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   744
// CMPXDbAlbum::ProcessMediaWallAlbumRecordSetL
hgs
parents: 38
diff changeset
   745
// Unknown album or Unknown artist are stored in the database as NULL (Name field and ArtistName field). 
hgs
parents: 38
diff changeset
   746
// The available unknown album is saved for later and will be appended to the array 
hgs
parents: 38
diff changeset
   747
// as the last item among items which have the same artist.
hgs
parents: 38
diff changeset
   748
// The available unknown artists are saved for later and will be appended to the array
hgs
parents: 38
diff changeset
   749
// as the last items after all known artists are appended.
hgs
parents: 38
diff changeset
   750
// The unknown album and unknown artist is saved for later and will be appended to the array
hgs
parents: 38
diff changeset
   751
// as the last item.
hgs
parents: 38
diff changeset
   752
//
hgs
parents: 38
diff changeset
   753
// NOTE: putting unknown album to the end of the array only takes place when title
hgs
parents: 38
diff changeset
   754
//       field is requested. normal sorting algorithm occurs if title isn't
hgs
parents: 38
diff changeset
   755
//       requested.
hgs
parents: 38
diff changeset
   756
//
hgs
parents: 38
diff changeset
   757
// Example:
hgs
parents: 38
diff changeset
   758
//     Album X of artist A
hgs
parents: 38
diff changeset
   759
//     Album Y of artist A
hgs
parents: 38
diff changeset
   760
//     Unknown album of artist A
hgs
parents: 38
diff changeset
   761
//     Album X of artist B
hgs
parents: 38
diff changeset
   762
//     Album Z of artist B
hgs
parents: 38
diff changeset
   763
//     Unknown album of artist B
hgs
parents: 38
diff changeset
   764
//     Album X of unknown artist
hgs
parents: 38
diff changeset
   765
//     Album Y of unknown artist
hgs
parents: 38
diff changeset
   766
//     Unknown album of unknown artist
hgs
parents: 38
diff changeset
   767
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   768
//
hgs
parents: 38
diff changeset
   769
//
hgs
parents: 38
diff changeset
   770
void CMPXDbAlbum::ProcessMediaWallAlbumRecordSetL(
hgs
parents: 38
diff changeset
   771
    const TArray<TMPXAttribute>& aAttrs,
hgs
parents: 38
diff changeset
   772
    RSqlStatement& aRecordset,
hgs
parents: 38
diff changeset
   773
    CMPXMediaArray& aMediaArray)
hgs
parents: 38
diff changeset
   774
    {
hgs
parents: 38
diff changeset
   775
    // populate the array
hgs
parents: 38
diff changeset
   776
    TBool firstRecord(ETrue);
hgs
parents: 38
diff changeset
   777
    CMPXMedia* unknownAlbumUnknownArtistMedia(NULL);
hgs
parents: 38
diff changeset
   778
    CMPXMedia* unknownMedia(NULL);
hgs
parents: 38
diff changeset
   779
    TUint32 prevId(0);
hgs
parents: 38
diff changeset
   780
    TUint32 artistId(0);
hgs
parents: 38
diff changeset
   781
    TUint32 prevArtistId(0);
hgs
parents: 38
diff changeset
   782
    TInt count(0);
hgs
parents: 38
diff changeset
   783
    TInt err(KErrNone);
hgs
parents: 38
diff changeset
   784
       
hgs
parents: 38
diff changeset
   785
    // Reset array for unknown artists
hgs
parents: 38
diff changeset
   786
    if (iUnknownArtists.Count() > 0)
hgs
parents: 38
diff changeset
   787
        {
hgs
parents: 38
diff changeset
   788
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   789
        }
hgs
parents: 38
diff changeset
   790
    
hgs
parents: 38
diff changeset
   791
    // Reset array for unknown albums
hgs
parents: 38
diff changeset
   792
    if (iUnknownAlbums.Count() > 0)
hgs
parents: 38
diff changeset
   793
        {
hgs
parents: 38
diff changeset
   794
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   795
        }
hgs
parents: 38
diff changeset
   796
        
hgs
parents: 38
diff changeset
   797
    TInt pPath(0);
hgs
parents: 38
diff changeset
   798
    if (aMediaArray.Count())
hgs
parents: 38
diff changeset
   799
        {
hgs
parents: 38
diff changeset
   800
        CMPXMedia* pMedia = aMediaArray[0];
hgs
parents: 38
diff changeset
   801
        if (pMedia->IsSupported(KMPXMediaGeneralValue))
hgs
parents: 38
diff changeset
   802
            { // Query excuted by OpenL
hgs
parents: 38
diff changeset
   803
            pPath = pMedia->ValueTObjectL<TInt>(KMPXMediaGeneralValue);
hgs
parents: 38
diff changeset
   804
            MPX_ASSERT(pPath);
hgs
parents: 38
diff changeset
   805
            }
hgs
parents: 38
diff changeset
   806
        }
hgs
parents: 38
diff changeset
   807
    
hgs
parents: 38
diff changeset
   808
    RArray<TMPXItemId> ids;
hgs
parents: 38
diff changeset
   809
    CleanupClosePushL(ids);
hgs
parents: 38
diff changeset
   810
hgs
parents: 38
diff changeset
   811
    while ((err = aRecordset.Next()) == KSqlAtRow)
hgs
parents: 38
diff changeset
   812
        {
hgs
parents: 38
diff changeset
   813
        TUint32 rowId(aRecordset.ColumnInt64(EAlbumUniqueId));
hgs
parents: 38
diff changeset
   814
        if (prevId == rowId)
hgs
parents: 38
diff changeset
   815
            {
hgs
parents: 38
diff changeset
   816
            continue;
hgs
parents: 38
diff changeset
   817
            }
hgs
parents: 38
diff changeset
   818
hgs
parents: 38
diff changeset
   819
        prevId = rowId;
hgs
parents: 38
diff changeset
   820
        CMPXMedia* media = CMPXMedia::NewL();
hgs
parents: 38
diff changeset
   821
        CleanupStack::PushL(media);
hgs
parents: 38
diff changeset
   822
hgs
parents: 38
diff changeset
   823
        UpdateMediaL(aRecordset, aAttrs, *media);
hgs
parents: 38
diff changeset
   824
    
hgs
parents: 38
diff changeset
   825
        artistId = aRecordset.ColumnInt64(EAlbumArtist);
hgs
parents: 38
diff changeset
   826
hgs
parents: 38
diff changeset
   827
        // Append Known artist and Unknown albums
hgs
parents: 38
diff changeset
   828
        count = iUnknownAlbums.Count();
hgs
parents: 38
diff changeset
   829
        if (prevArtistId != artistId && count > 0)
hgs
parents: 38
diff changeset
   830
            {
hgs
parents: 38
diff changeset
   831
            unknownMedia = NULL;
hgs
parents: 38
diff changeset
   832
                
hgs
parents: 38
diff changeset
   833
            for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   834
                {
hgs
parents: 38
diff changeset
   835
                unknownMedia = iUnknownAlbums[i];
hgs
parents: 38
diff changeset
   836
                if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   837
                    {
hgs
parents: 38
diff changeset
   838
                    ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   839
                    }
hgs
parents: 38
diff changeset
   840
                aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   841
                }
hgs
parents: 38
diff changeset
   842
                
hgs
parents: 38
diff changeset
   843
            iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   844
            }
hgs
parents: 38
diff changeset
   845
        
hgs
parents: 38
diff changeset
   846
        // for Unknown artist and Unknown album
hgs
parents: 38
diff changeset
   847
        if (firstRecord && (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumName).Length() == 0) &&
hgs
parents: 38
diff changeset
   848
            (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumArtistName).Length() == 0))
hgs
parents: 38
diff changeset
   849
            {
hgs
parents: 38
diff changeset
   850
            unknownAlbumUnknownArtistMedia = media;
hgs
parents: 38
diff changeset
   851
            }
hgs
parents: 38
diff changeset
   852
        // for Unknown artists and Known albums
hgs
parents: 38
diff changeset
   853
        else if (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumArtistName).Length() == 0)
hgs
parents: 38
diff changeset
   854
            {
hgs
parents: 38
diff changeset
   855
            iUnknownArtists.Append(media);
hgs
parents: 38
diff changeset
   856
            CleanupStack::Pop(media);
hgs
parents: 38
diff changeset
   857
            }
hgs
parents: 38
diff changeset
   858
        // for Known artist and Unknown album
hgs
parents: 38
diff changeset
   859
        else if (MPXDbCommonUtil::GetColumnTextL(aRecordset, EAlbumName).Length() == 0)
hgs
parents: 38
diff changeset
   860
            {
hgs
parents: 38
diff changeset
   861
            iUnknownAlbums.Append(media);
hgs
parents: 38
diff changeset
   862
            CleanupStack::Pop(media);
hgs
parents: 38
diff changeset
   863
            prevArtistId = artistId;
hgs
parents: 38
diff changeset
   864
            }
hgs
parents: 38
diff changeset
   865
        else
hgs
parents: 38
diff changeset
   866
            {
hgs
parents: 38
diff changeset
   867
            if (media->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   868
                {
hgs
parents: 38
diff changeset
   869
                ids.AppendL(media->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   870
                }
hgs
parents: 38
diff changeset
   871
            aMediaArray.AppendL(*media);
hgs
parents: 38
diff changeset
   872
            CleanupStack::PopAndDestroy(media);       
hgs
parents: 38
diff changeset
   873
            }
hgs
parents: 38
diff changeset
   874
        
hgs
parents: 38
diff changeset
   875
        firstRecord = EFalse;               
hgs
parents: 38
diff changeset
   876
        } // end while
hgs
parents: 38
diff changeset
   877
hgs
parents: 38
diff changeset
   878
    if (err != KSqlAtEnd)
hgs
parents: 38
diff changeset
   879
        {
hgs
parents: 38
diff changeset
   880
        User::LeaveIfError(err);
hgs
parents: 38
diff changeset
   881
        }
hgs
parents: 38
diff changeset
   882
hgs
parents: 38
diff changeset
   883
    // Append Known artist and Unknown albums
hgs
parents: 38
diff changeset
   884
    count = iUnknownAlbums.Count();
hgs
parents: 38
diff changeset
   885
    if ( count > 0)
hgs
parents: 38
diff changeset
   886
        {
hgs
parents: 38
diff changeset
   887
        unknownMedia = NULL;
hgs
parents: 38
diff changeset
   888
        
hgs
parents: 38
diff changeset
   889
        for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   890
            {
hgs
parents: 38
diff changeset
   891
            unknownMedia = iUnknownAlbums[i];
hgs
parents: 38
diff changeset
   892
            if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   893
                {
hgs
parents: 38
diff changeset
   894
                ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   895
                }
hgs
parents: 38
diff changeset
   896
            aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   897
            }
hgs
parents: 38
diff changeset
   898
        
hgs
parents: 38
diff changeset
   899
        iUnknownAlbums.ResetAndDestroy();
hgs
parents: 38
diff changeset
   900
        }
hgs
parents: 38
diff changeset
   901
hgs
parents: 38
diff changeset
   902
    // Append Unknown artists to MediaArray
hgs
parents: 38
diff changeset
   903
    count = iUnknownArtists.Count();
hgs
parents: 38
diff changeset
   904
    if ( count > 0)
hgs
parents: 38
diff changeset
   905
        {
hgs
parents: 38
diff changeset
   906
        CMPXMedia* unknownMedia = NULL;
hgs
parents: 38
diff changeset
   907
        
hgs
parents: 38
diff changeset
   908
        for (TInt i = 0; i < count; i++)
hgs
parents: 38
diff changeset
   909
            {
hgs
parents: 38
diff changeset
   910
            unknownMedia = iUnknownArtists[i];
hgs
parents: 38
diff changeset
   911
            if (unknownMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   912
                {
hgs
parents: 38
diff changeset
   913
                ids.Append(unknownMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   914
                }
hgs
parents: 38
diff changeset
   915
            aMediaArray.AppendL(*unknownMedia);                 
hgs
parents: 38
diff changeset
   916
            }
hgs
parents: 38
diff changeset
   917
        
hgs
parents: 38
diff changeset
   918
        iUnknownArtists.ResetAndDestroy();
hgs
parents: 38
diff changeset
   919
        }
hgs
parents: 38
diff changeset
   920
    
hgs
parents: 38
diff changeset
   921
    // the last item in the list
hgs
parents: 38
diff changeset
   922
    if (unknownAlbumUnknownArtistMedia)
hgs
parents: 38
diff changeset
   923
        {
hgs
parents: 38
diff changeset
   924
        if (unknownAlbumUnknownArtistMedia->IsSupported(KMPXMediaGeneralId) && pPath)
hgs
parents: 38
diff changeset
   925
            {
hgs
parents: 38
diff changeset
   926
            ids.AppendL(unknownAlbumUnknownArtistMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
hgs
parents: 38
diff changeset
   927
            }
hgs
parents: 38
diff changeset
   928
        aMediaArray.AppendL(*unknownAlbumUnknownArtistMedia);
hgs
parents: 38
diff changeset
   929
        CleanupStack::PopAndDestroy(unknownAlbumUnknownArtistMedia);
hgs
parents: 38
diff changeset
   930
        }
hgs
parents: 38
diff changeset
   931
    
hgs
parents: 38
diff changeset
   932
    // Append ids to the returned path
hgs
parents: 38
diff changeset
   933
    if (pPath)
hgs
parents: 38
diff changeset
   934
        {
hgs
parents: 38
diff changeset
   935
        ((CMPXCollectionPath*)pPath)->AppendL(ids.Array());
hgs
parents: 38
diff changeset
   936
        }
hgs
parents: 38
diff changeset
   937
    CleanupStack::PopAndDestroy(&ids);
hgs
parents: 38
diff changeset
   938
    }
hgs
parents: 38
diff changeset
   939
hgs
parents: 38
diff changeset
   940
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   941
// CMPXDbAlbum::GenerateUniqueIdL
hgs
parents: 38
diff changeset
   942
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   943
//
hgs
parents: 38
diff changeset
   944
TUint32 CMPXDbAlbum::GenerateUniqueIdL(const CMPXMedia& aMedia)
hgs
parents: 38
diff changeset
   945
    {
hgs
parents: 38
diff changeset
   946
    TPtrC album(KNullDesC);
hgs
parents: 38
diff changeset
   947
    TPtrC albumArtist(KNullDesC);
hgs
parents: 38
diff changeset
   948
    TPtrC artist(KNullDesC);
hgs
parents: 38
diff changeset
   949
    
hgs
parents: 38
diff changeset
   950
    // check Album attirbute
hgs
parents: 38
diff changeset
   951
    if (aMedia.IsSupported(KMPXMediaMusicAlbum))     
hgs
parents: 38
diff changeset
   952
        {
hgs
parents: 38
diff changeset
   953
        album.Set(aMedia.ValueText(KMPXMediaMusicAlbum).Left(KMCMaxTextLen));
hgs
parents: 38
diff changeset
   954
        }
hgs
parents: 38
diff changeset
   955
    
hgs
parents: 38
diff changeset
   956
    HBufC* buf(NULL);    
hgs
parents: 38
diff changeset
   957
    if (RetrieveAlbumArtistL(aMedia, albumArtist))
hgs
parents: 38
diff changeset
   958
        {
hgs
parents: 38
diff changeset
   959
        buf = HBufC::NewLC(album.Length() + albumArtist.Length() + KAlbumAlbumArtistSeperator().Length());
hgs
parents: 38
diff changeset
   960
    
hgs
parents: 38
diff changeset
   961
        buf->Des().Append(album);
hgs
parents: 38
diff changeset
   962
        buf->Des().Append(KAlbumAlbumArtistSeperator);
hgs
parents: 38
diff changeset
   963
        buf->Des().Append(albumArtist);
hgs
parents: 38
diff changeset
   964
        }
hgs
parents: 38
diff changeset
   965
    else
hgs
parents: 38
diff changeset
   966
        {
hgs
parents: 38
diff changeset
   967
        RetrieveArtist(aMedia, artist);
hgs
parents: 38
diff changeset
   968
        
hgs
parents: 38
diff changeset
   969
        buf = HBufC::NewLC(album.Length() + artist.Length() + KAlbumArtistSeperator().Length());
hgs
parents: 38
diff changeset
   970
        
hgs
parents: 38
diff changeset
   971
        buf->Des().Append(album);
hgs
parents: 38
diff changeset
   972
        buf->Des().Append(KAlbumArtistSeperator);
hgs
parents: 38
diff changeset
   973
        buf->Des().Append(artist);
hgs
parents: 38
diff changeset
   974
        }
hgs
parents: 38
diff changeset
   975
    
hgs
parents: 38
diff changeset
   976
    // try to find the item first
hgs
parents: 38
diff changeset
   977
    TUint32 id(MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), EMPXAlbum,
hgs
parents: 38
diff changeset
   978
        *buf, ETrue));
hgs
parents: 38
diff changeset
   979
    CleanupStack::PopAndDestroy(buf);
hgs
parents: 38
diff changeset
   980
    
hgs
parents: 38
diff changeset
   981
    return id;
hgs
parents: 38
diff changeset
   982
    }
hgs
parents: 38
diff changeset
   983
hgs
parents: 38
diff changeset
   984
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   985
// CMPXDbAlbum::IsUnknownAlbumL
hgs
parents: 38
diff changeset
   986
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
   987
//
hgs
parents: 38
diff changeset
   988
TBool CMPXDbAlbum::IsUnknownAlbumL(const TUint32 aId)
hgs
parents: 38
diff changeset
   989
    {
hgs
parents: 38
diff changeset
   990
    HBufC* query = PreProcessStringLC(KQueryCategoryItem);
hgs
parents: 38
diff changeset
   991
    RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(*query, aId));
hgs
parents: 38
diff changeset
   992
    CleanupStack::PopAndDestroy(query);
hgs
parents: 38
diff changeset
   993
    CleanupClosePushL(recordset);
hgs
parents: 38
diff changeset
   994
hgs
parents: 38
diff changeset
   995
    if (recordset.Next() != KSqlAtRow)
hgs
parents: 38
diff changeset
   996
        {
hgs
parents: 38
diff changeset
   997
        User::Leave(KErrNotFound);
hgs
parents: 38
diff changeset
   998
        }
hgs
parents: 38
diff changeset
   999
    
hgs
parents: 38
diff changeset
  1000
    TPtrC album(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumName)); 
hgs
parents: 38
diff changeset
  1001
    TPtrC artistName(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumArtistName)); 
hgs
parents: 38
diff changeset
  1002
hgs
parents: 38
diff changeset
  1003
    TBool ret = EFalse;
hgs
parents: 38
diff changeset
  1004
    if (album.Length() == 0 || artistName.Length() == 0)
hgs
parents: 38
diff changeset
  1005
        {
hgs
parents: 38
diff changeset
  1006
        ret = ETrue;   
hgs
parents: 38
diff changeset
  1007
        }
hgs
parents: 38
diff changeset
  1008
    else
hgs
parents: 38
diff changeset
  1009
        {
hgs
parents: 38
diff changeset
  1010
        ret = EFalse;
hgs
parents: 38
diff changeset
  1011
        }
hgs
parents: 38
diff changeset
  1012
    
hgs
parents: 38
diff changeset
  1013
    CleanupStack::PopAndDestroy(&recordset);
hgs
parents: 38
diff changeset
  1014
    
hgs
parents: 38
diff changeset
  1015
    return ret;
hgs
parents: 38
diff changeset
  1016
    }
hgs
parents: 38
diff changeset
  1017
hgs
parents: 38
diff changeset
  1018
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1019
// CMPXDbAlbum::RetrieveAlbumArtistL
hgs
parents: 38
diff changeset
  1020
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1021
//
hgs
parents: 38
diff changeset
  1022
TBool CMPXDbAlbum::RetrieveAlbumArtistL(const CMPXMedia& aMedia, TPtrC& aName)
hgs
parents: 38
diff changeset
  1023
    {
hgs
parents: 38
diff changeset
  1024
    // check AlbumArtist attribute
hgs
parents: 38
diff changeset
  1025
    if (aMedia.IsSupported(KMPXMediaMusicAlbumArtist))
hgs
parents: 38
diff changeset
  1026
        {
hgs
parents: 38
diff changeset
  1027
        aName.Set(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen));
hgs
parents: 38
diff changeset
  1028
        }
hgs
parents: 38
diff changeset
  1029
    else
hgs
parents: 38
diff changeset
  1030
        {
hgs
parents: 38
diff changeset
  1031
        aName.Set(KNullDesC);
hgs
parents: 38
diff changeset
  1032
        }
hgs
parents: 38
diff changeset
  1033
    
hgs
parents: 38
diff changeset
  1034
    if (aName.Length() > 0 )
hgs
parents: 38
diff changeset
  1035
        {
hgs
parents: 38
diff changeset
  1036
        return ETrue;
hgs
parents: 38
diff changeset
  1037
        }
hgs
parents: 38
diff changeset
  1038
    else
hgs
parents: 38
diff changeset
  1039
        {
hgs
parents: 38
diff changeset
  1040
        return EFalse;
hgs
parents: 38
diff changeset
  1041
        }
hgs
parents: 38
diff changeset
  1042
    }
hgs
parents: 38
diff changeset
  1043
hgs
parents: 38
diff changeset
  1044
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1045
// CMPXDbAlbum::RetrieveArtist
hgs
parents: 38
diff changeset
  1046
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1047
//
hgs
parents: 38
diff changeset
  1048
void CMPXDbAlbum::RetrieveArtist(const CMPXMedia& aMedia, TPtrC& aName)
hgs
parents: 38
diff changeset
  1049
    {
hgs
parents: 38
diff changeset
  1050
    // check Artist attribute
hgs
parents: 38
diff changeset
  1051
    if (aMedia.IsSupported(KMPXMediaMusicArtist))
hgs
parents: 38
diff changeset
  1052
        {
hgs
parents: 38
diff changeset
  1053
        aName.Set(aMedia.ValueText(KMPXMediaMusicArtist).Left(KMCMaxTextLen));
hgs
parents: 38
diff changeset
  1054
        }
hgs
parents: 38
diff changeset
  1055
    else
hgs
parents: 38
diff changeset
  1056
        {
hgs
parents: 38
diff changeset
  1057
        aName.Set(KNullDesC);            
hgs
parents: 38
diff changeset
  1058
        }
hgs
parents: 38
diff changeset
  1059
    }
hgs
parents: 38
diff changeset
  1060
hgs
parents: 38
diff changeset
  1061
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1062
// CMPXDbAlbum::NeedToUpdateArt
hgs
parents: 38
diff changeset
  1063
// ----------------------------------------------------------------------------
hgs
parents: 38
diff changeset
  1064
//
hgs
parents: 38
diff changeset
  1065
TBool CMPXDbAlbum::NeedToUpdateArt(const TDesC& aDeletedSongArt, const TDesC& aCurrentAlbumArt)
hgs
parents: 38
diff changeset
  1066
    {    
hgs
parents: 38
diff changeset
  1067
    if (aDeletedSongArt.Length() == 0)
hgs
parents: 38
diff changeset
  1068
        {
hgs
parents: 38
diff changeset
  1069
        // Deleted song's art has default album art
hgs
parents: 38
diff changeset
  1070
        return EFalse;
hgs
parents: 38
diff changeset
  1071
        }
hgs
parents: 38
diff changeset
  1072
#ifdef ABSTRACTAUDIOALBUM_INCLUDED
hgs
parents: 38
diff changeset
  1073
    else
hgs
parents: 38
diff changeset
  1074
    if (aDeletedSongArt.Length() > 0)
hgs
parents: 38
diff changeset
  1075
        {
hgs
parents: 38
diff changeset
  1076
        TParsePtrC parse(aDeletedSongArt);
hgs
parents: 38
diff changeset
  1077
        TPtrC ext(parse.Ext());
hgs
parents: 38
diff changeset
  1078
        //set flag to false, so .alb will not overwrite art field in album, artist table 
hgs
parents: 38
diff changeset
  1079
        // when song with embedded art
hgs
parents: 38
diff changeset
  1080
        if (ext.CompareF(KAbstractAlbumExt) == 0) 
hgs
parents: 38
diff changeset
  1081
            {     
hgs
parents: 38
diff changeset
  1082
            // Deleted song's art is Non-embedded album art
hgs
parents: 38
diff changeset
  1083
            return EFalse;
hgs
parents: 38
diff changeset
  1084
            }
hgs
parents: 38
diff changeset
  1085
        }
hgs
parents: 38
diff changeset
  1086
    else
hgs
parents: 38
diff changeset
  1087
#endif   
hgs
parents: 38
diff changeset
  1088
    if (aDeletedSongArt.Length() > 0 && aCurrentAlbumArt.Length() > 0 && aDeletedSongArt.CompareF(aCurrentAlbumArt) == 0)
hgs
parents: 38
diff changeset
  1089
        {
hgs
parents: 38
diff changeset
  1090
        // Deleted song's art is Embedded album art and it is the same as Album's current art
hgs
parents: 38
diff changeset
  1091
        return ETrue;
hgs
parents: 38
diff changeset
  1092
        }
hgs
parents: 38
diff changeset
  1093
    else
hgs
parents: 38
diff changeset
  1094
        {
hgs
parents: 38
diff changeset
  1095
        return EFalse;
hgs
parents: 38
diff changeset
  1096
        }
hgs
parents: 38
diff changeset
  1097
    }
hgs
parents: 38
diff changeset
  1098
hgs
parents: 38
diff changeset
  1099
// ----------------------------------------------------------------------------
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1100
// CMPXDbAlbum::CreateTableL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1101
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1102
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1103
void CMPXDbAlbum::CreateTableL(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1104
    RSqlDatabase& aDatabase,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1105
    TBool /* aCorruptTable */)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1106
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1107
    MPX_FUNC("CMPXDbCategory::CreateTableL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1108
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1109
    // create the table
51
hgs
parents: 38
diff changeset
  1110
    User::LeaveIfError(aDatabase.Exec(KAlbumCreateTable));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1111
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1112
    // do not create an index on the Name field
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1113
    // as it only slows down the insert/update queries overall
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1114
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1115
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1116
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1117
// CMPXDbAlbum::CheckTableL
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1118
// ----------------------------------------------------------------------------
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1119
//
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1120
TBool CMPXDbAlbum::CheckTableL(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1121
    RSqlDatabase& aDatabase)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1122
    {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1123
    MPX_FUNC("CMPXDbCategory::CheckTableL");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1124
51
hgs
parents: 38
diff changeset
  1125
    TBool check(DoCheckTable(aDatabase, KAlbumCheckTable));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1126
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1127
    return check;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1128
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1129
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1130
// End of File