mpdata/src/mpmpxcollectiondata_p.cpp
author hgs
Tue, 24 Aug 2010 03:36:14 -0500
changeset 51 560ce2306a17
parent 43 0f32e550d9d8
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) 2009 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: Music Player collection data - private implementation.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
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
#include <thumbnaildata.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include <thumbnailobjectsource.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <mpxmedia.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <mpxmediacontainerdefs.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <mpxmediaarray.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <mpxmediageneraldefs.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <mpxmediamusicdefs.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "mpmpxcollectiondata_p.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "mptrace.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
    \class MpMpxCollectionDataPrivate
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
    \brief Music Player collection data - private implementation.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
    This is a private implementation of the collection data interface.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
MpMpxCollectionDataPrivate::MpMpxCollectionDataPrivate( MpMpxCollectionData *wrapper )
51
hgs
parents: 43
diff changeset
    41
    : q_ptr(wrapper),
hgs
parents: 43
diff changeset
    42
      iContext(ECollectionContextUnknown),
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
      iContainerMedia(0),
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
      iMediaArray(0),
35
hgs
parents: 22
diff changeset
    45
      iCachedRemovedItem(0),
hgs
parents: 22
diff changeset
    46
      iCurrentAlbumIndex(-1),
51
hgs
parents: 43
diff changeset
    47
      iAlbumSongCount(0),
hgs
parents: 43
diff changeset
    48
      iReloadAlbumContent(false),
hgs
parents: 43
diff changeset
    49
	  iNeedReload(false)
22
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
    TX_LOG
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
MpMpxCollectionDataPrivate::~MpMpxCollectionDataPrivate()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
    delete iContainerMedia;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
    delete iCachedRemovedItem;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
    TX_EXIT
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
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
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
TCollectionContext MpMpxCollectionDataPrivate::context() const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    return iContext;
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
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
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
int MpMpxCollectionDataPrivate::count() const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
    if ( iMediaArray ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
        return iMediaArray->Count();
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
    return 0;
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
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
QString MpMpxCollectionDataPrivate::collectionTitle() const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
    QString title;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    if ( iContainerMedia && iContainerMedia->IsSupported( KMPXMediaGeneralTitle ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
        const TDesC& titleText = iContainerMedia->ValueText( KMPXMediaGeneralTitle );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
        if ( titleText.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
            title = QString::fromUtf16( titleText.Ptr(), titleText.Length() );
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
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
    TX_EXIT_ARGS("title =" << title);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
    return title;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
 */
51
hgs
parents: 43
diff changeset
   104
QString MpMpxCollectionDataPrivate::itemData( int index, MpMpxCollectionData::DataType type )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
    TX_ENTRY_ARGS("index=" << index << ", type=" << type);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
    QString data;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
    TRAPD(err, DoGetDataL(index, type, data));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
    if ( err != KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
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
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
    return data;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
}
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
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
 \internal
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
bool MpMpxCollectionDataPrivate::isAutoPlaylist()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
    if ( iContext != ECollectionContextPlaylistSongs ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
        TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    bool isAuto = false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
    TRAPD(err, isAuto = DoIsAutoPlaylistL());
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
    if ( err == KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
        TX_LOG_ARGS("isAuto=" << isAuto);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
    return isAuto;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
bool MpMpxCollectionDataPrivate::isAutoPlaylist( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
    TX_ENTRY_ARGS("index=" << index);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
    if ( iContext != ECollectionContextPlaylists ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
        TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
    bool isAuto = false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
    TRAPD(err, isAuto = DoIsAutoPlaylistL(index));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
    if ( err == KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
        TX_LOG_ARGS("isAuto=" << isAuto);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
    return isAuto;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
int MpMpxCollectionDataPrivate::itemCount( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
    TX_ENTRY_ARGS("index=" << index);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
    int count = 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
    TRAPD(err, count = DoGetItemCountL(index));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    if ( err == KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
        TX_LOG_ARGS("count=" << count);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
    return count;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
int MpMpxCollectionDataPrivate::containerId()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
    int id = -1;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    TRAPD( err, id = DoGetContainerIdL() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
    if ( err == KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
        TX_LOG_ARGS("id=" << id);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    return id;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
}
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
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
 */
36
hgs
parents: 35
diff changeset
   200
int MpMpxCollectionDataPrivate::itemId( int index )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
{
36
hgs
parents: 35
diff changeset
   202
    TX_ENTRY_ARGS( "index=" << index );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
    int id = -1;
36
hgs
parents: 35
diff changeset
   204
    TRAPD( err, id = DoGetItemIdL( index ) );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    if ( err == KErrNone ) {
36
hgs
parents: 35
diff changeset
   206
        TX_LOG_ARGS( "id=" << id );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
    else {
36
hgs
parents: 35
diff changeset
   209
        TX_LOG_ARGS( "Error: " << err << "; should never get here." );
hgs
parents: 35
diff changeset
   210
    }
hgs
parents: 35
diff changeset
   211
    TX_EXIT
hgs
parents: 35
diff changeset
   212
    return id;
hgs
parents: 35
diff changeset
   213
}
hgs
parents: 35
diff changeset
   214
hgs
parents: 35
diff changeset
   215
/*!
hgs
parents: 35
diff changeset
   216
 \internal
hgs
parents: 35
diff changeset
   217
 */
hgs
parents: 35
diff changeset
   218
int MpMpxCollectionDataPrivate::albumSongId( int index )
hgs
parents: 35
diff changeset
   219
{
hgs
parents: 35
diff changeset
   220
    TX_ENTRY_ARGS( "index=" << index );
hgs
parents: 35
diff changeset
   221
    int id = -1;
hgs
parents: 35
diff changeset
   222
    TRAPD( err, id = DoGetAlbumSongIdL( index ) );
hgs
parents: 35
diff changeset
   223
    if ( err == KErrNone ) {
hgs
parents: 35
diff changeset
   224
        TX_LOG_ARGS( "id=" << id );
hgs
parents: 35
diff changeset
   225
    }
hgs
parents: 35
diff changeset
   226
    else {
hgs
parents: 35
diff changeset
   227
        TX_LOG_ARGS( "Error: " << err << "; should never get here." );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    return id;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
void MpMpxCollectionDataPrivate::removeItem(int index)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    TX_ENTRY_ARGS("index=" << index);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
     TRAPD(err,  DoRemoveItemL(index));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    if ( err != KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
bool MpMpxCollectionDataPrivate::testCachedItem( int itemId )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
    TX_ENTRY_ARGS( "itemId=" << itemId);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
    bool match = false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
    TRAPD( err, match = DoTestCachedItemL( itemId ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
    if ( err == KErrNone ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
        TX_LOG_ARGS("match=" << match);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    return match;
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
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
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
void MpMpxCollectionDataPrivate::insertCachedItem(int index)
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
    TX_ENTRY_ARGS("index=" << index);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
    iMediaArray->Insert( iCachedRemovedItem, index );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    iCachedRemovedItem = 0; //ownership tranferred above.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
 */
35
hgs
parents: 22
diff changeset
   278
bool MpMpxCollectionDataPrivate::setCurrentAlbum( int index )
hgs
parents: 22
diff changeset
   279
{
hgs
parents: 22
diff changeset
   280
    TX_ENTRY_ARGS( "index=" << index);
hgs
parents: 22
diff changeset
   281
    bool available = false;
hgs
parents: 22
diff changeset
   282
    TRAPD( err, available = DoSetCurrentAlbumL( index ) );
hgs
parents: 22
diff changeset
   283
    if ( err != KErrNone ) {
hgs
parents: 22
diff changeset
   284
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 22
diff changeset
   285
    }
hgs
parents: 22
diff changeset
   286
    TX_EXIT
hgs
parents: 22
diff changeset
   287
    return available;
hgs
parents: 22
diff changeset
   288
}
hgs
parents: 22
diff changeset
   289
hgs
parents: 22
diff changeset
   290
/*!
hgs
parents: 22
diff changeset
   291
 \internal
hgs
parents: 22
diff changeset
   292
 */
hgs
parents: 22
diff changeset
   293
int MpMpxCollectionDataPrivate::currentAlbumIndex() const
hgs
parents: 22
diff changeset
   294
{
hgs
parents: 22
diff changeset
   295
    return iCurrentAlbumIndex;
hgs
parents: 22
diff changeset
   296
}
hgs
parents: 22
diff changeset
   297
hgs
parents: 22
diff changeset
   298
/*!
hgs
parents: 22
diff changeset
   299
 \internal
hgs
parents: 22
diff changeset
   300
 */
hgs
parents: 22
diff changeset
   301
int MpMpxCollectionDataPrivate::albumSongsCount() const
hgs
parents: 22
diff changeset
   302
{
hgs
parents: 22
diff changeset
   303
    return iAlbumSongCount;
hgs
parents: 22
diff changeset
   304
}
hgs
parents: 22
diff changeset
   305
hgs
parents: 22
diff changeset
   306
/*!
hgs
parents: 22
diff changeset
   307
 \internal
hgs
parents: 22
diff changeset
   308
 */
hgs
parents: 22
diff changeset
   309
QString MpMpxCollectionDataPrivate::albumSongData( int index, MpMpxCollectionData::DataType type ) const
hgs
parents: 22
diff changeset
   310
{
hgs
parents: 22
diff changeset
   311
    TX_ENTRY_ARGS("index=" << index << ", type=" << type);
hgs
parents: 22
diff changeset
   312
    QString data;
hgs
parents: 22
diff changeset
   313
    TRAPD(err, DoGetAlbumSongDataL(index, type, data));
hgs
parents: 22
diff changeset
   314
    if ( err != KErrNone ) {
hgs
parents: 22
diff changeset
   315
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 22
diff changeset
   316
    }
hgs
parents: 22
diff changeset
   317
    TX_EXIT
hgs
parents: 22
diff changeset
   318
    return data;
hgs
parents: 22
diff changeset
   319
}
hgs
parents: 22
diff changeset
   320
hgs
parents: 22
diff changeset
   321
/*!
hgs
parents: 22
diff changeset
   322
 \internal
51
hgs
parents: 43
diff changeset
   323
 */
hgs
parents: 43
diff changeset
   324
bool MpMpxCollectionDataPrivate::hasItemProperty( int index, MpMpxCollectionData:: DataProperty type ) const
hgs
parents: 43
diff changeset
   325
{
hgs
parents: 43
diff changeset
   326
    TX_ENTRY_ARGS("index=" << index << ", type=" << type);
hgs
parents: 43
diff changeset
   327
    bool available = false;
hgs
parents: 43
diff changeset
   328
    TRAPD(err, available = DoHasItemPropertyL(index, type));
hgs
parents: 43
diff changeset
   329
    if ( err != KErrNone ) {
hgs
parents: 43
diff changeset
   330
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 43
diff changeset
   331
    }
hgs
parents: 43
diff changeset
   332
    TX_EXIT
hgs
parents: 43
diff changeset
   333
    return available;
hgs
parents: 43
diff changeset
   334
}
hgs
parents: 43
diff changeset
   335
hgs
parents: 43
diff changeset
   336
/*!
hgs
parents: 43
diff changeset
   337
 \internal
hgs
parents: 43
diff changeset
   338
 */
hgs
parents: 43
diff changeset
   339
bool MpMpxCollectionDataPrivate::hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type ) const
hgs
parents: 43
diff changeset
   340
{
hgs
parents: 43
diff changeset
   341
    TX_ENTRY_ARGS("index=" << index << ", type=" << type);
hgs
parents: 43
diff changeset
   342
    bool available = false;
hgs
parents: 43
diff changeset
   343
    TRAPD(err, available = DoHasAlbumSongPropertyL(index, type));
hgs
parents: 43
diff changeset
   344
    if ( err != KErrNone ) {
hgs
parents: 43
diff changeset
   345
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 43
diff changeset
   346
    }
hgs
parents: 43
diff changeset
   347
    TX_EXIT
hgs
parents: 43
diff changeset
   348
    return available;
hgs
parents: 43
diff changeset
   349
}
hgs
parents: 43
diff changeset
   350
hgs
parents: 43
diff changeset
   351
/*!
hgs
parents: 43
diff changeset
   352
 \internal
35
hgs
parents: 22
diff changeset
   353
 New data from MPX collection. This could be due to Open operation, in which case
hgs
parents: 22
diff changeset
   354
 context would have changed. This could also be due to Re-open after operations
hgs
parents: 22
diff changeset
   355
 such as delete, playlist renaming, playlist rearraging, etc., in which case the
hgs
parents: 22
diff changeset
   356
 context would remain the same, but the internal data may have changed.
hgs
parents: 22
diff changeset
   357
 */
hgs
parents: 22
diff changeset
   358
void MpMpxCollectionDataPrivate::setMpxMedia( const CMPXMedia& entries, bool reopen )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
    TX_ENTRY
35
hgs
parents: 22
diff changeset
   361
    TCollectionContext prevContext = iContext;
hgs
parents: 22
diff changeset
   362
    int prevCount = count();
hgs
parents: 22
diff changeset
   363
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
    TRAPD(err, DoSetMpxMediaL(entries));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
    if ( err == KErrNone ) {
35
hgs
parents: 22
diff changeset
   366
        int newCount = count();
hgs
parents: 22
diff changeset
   367
        if ( (newCount == 0) || (prevCount == 0) ) {
hgs
parents: 22
diff changeset
   368
            TX_LOG_ARGS("Empty container");
hgs
parents: 22
diff changeset
   369
            // Two cases:
hgs
parents: 22
diff changeset
   370
            //     1) newCount is zero: Last item in the model was deleted.
hgs
parents: 22
diff changeset
   371
            //     2) prevCount is zero: Refresh operation found new data.
hgs
parents: 22
diff changeset
   372
            // In these cases, independent of context change, we must emit the
hgs
parents: 22
diff changeset
   373
            // contextChanged() signal so that the container can properly reload
hgs
parents: 22
diff changeset
   374
            // the layout.
hgs
parents: 22
diff changeset
   375
            emit q_ptr->contextChanged(iContext);
hgs
parents: 22
diff changeset
   376
        }
hgs
parents: 22
diff changeset
   377
        else if ( iContext != prevContext ) {
hgs
parents: 22
diff changeset
   378
            TX_LOG_ARGS("Context changed: iContext=" << iContext);
hgs
parents: 22
diff changeset
   379
            if ( prevContext == ECollectionContextArtistAlbumsTBone
hgs
parents: 22
diff changeset
   380
                 && iContext == ECollectionContextArtistAlbums
hgs
parents: 22
diff changeset
   381
                 && reopen ) {
hgs
parents: 22
diff changeset
   382
                // Special case 1: This occurs when a song was deleted from TBone list
hgs
parents: 22
diff changeset
   383
                // within artist container. And the fact that the new context is ArtistAlbums
hgs
parents: 22
diff changeset
   384
                // indicates that the artist has more than 1 album.
hgs
parents: 22
diff changeset
   385
                // Restore context to ArtistAlbumsTBone.
hgs
parents: 22
diff changeset
   386
                iContext = ECollectionContextArtistAlbumsTBone;
hgs
parents: 22
diff changeset
   387
                if ( newCount != prevCount ) {
hgs
parents: 22
diff changeset
   388
                    // Change in count indicates that the deleted song was the last song
hgs
parents: 22
diff changeset
   389
                    // in the TBone list. As a result, the album was deleted also, therefore
hgs
parents: 22
diff changeset
   390
                    // we must emit dataChanged() indicating changes to the album section
hgs
parents: 22
diff changeset
   391
                    // of the TBone.
hgs
parents: 22
diff changeset
   392
                    emit q_ptr->dataChanged();
hgs
parents: 22
diff changeset
   393
                }
hgs
parents: 22
diff changeset
   394
                else {
hgs
parents: 22
diff changeset
   395
                    // Same count indicates that one of the songs in the TBone's list
hgs
parents: 22
diff changeset
   396
                    // section was deleted. We only want to reload the list section of the
hgs
parents: 22
diff changeset
   397
                    // TBone in this case.
hgs
parents: 22
diff changeset
   398
                    emit q_ptr->albumDataChanged();
hgs
parents: 22
diff changeset
   399
                }
hgs
parents: 22
diff changeset
   400
            }
hgs
parents: 22
diff changeset
   401
            else if ( prevContext == ECollectionContextAlbumsTBone && reopen ) {
hgs
parents: 22
diff changeset
   402
                // Special case 2: This occurs when a song was deleted from TBone list
hgs
parents: 22
diff changeset
   403
                // within album container. Restore context to AlbumsTBone.
hgs
parents: 22
diff changeset
   404
                iContext = ECollectionContextAlbumsTBone;
hgs
parents: 22
diff changeset
   405
                if ( newCount != prevCount ) {
hgs
parents: 22
diff changeset
   406
                    // Change in count indicates that the deleted song was the last song
hgs
parents: 22
diff changeset
   407
                    // in the TBone list. As a result, the album was deleted also, therefore
hgs
parents: 22
diff changeset
   408
                    // we must emit dataChanged() indicating changes to the album section
hgs
parents: 22
diff changeset
   409
                    // of the TBone.
hgs
parents: 22
diff changeset
   410
                    emit q_ptr->dataChanged();
hgs
parents: 22
diff changeset
   411
                }
hgs
parents: 22
diff changeset
   412
                else {
hgs
parents: 22
diff changeset
   413
                    // Same count indicates that one of the songs in the TBone's list
hgs
parents: 22
diff changeset
   414
                    // section was deleted. We only want to reload the list section of the
hgs
parents: 22
diff changeset
   415
                    // TBone in this case.
hgs
parents: 22
diff changeset
   416
                    emit q_ptr->albumDataChanged();
hgs
parents: 22
diff changeset
   417
                }
hgs
parents: 22
diff changeset
   418
            }
hgs
parents: 22
diff changeset
   419
            else {
hgs
parents: 22
diff changeset
   420
                // Simple case where the context has really changed and it didn't
hgs
parents: 22
diff changeset
   421
                // involve TBone.
hgs
parents: 22
diff changeset
   422
                emit q_ptr->contextChanged(iContext);
hgs
parents: 22
diff changeset
   423
            }
hgs
parents: 22
diff changeset
   424
        }
hgs
parents: 22
diff changeset
   425
        else if ( prevContext == ECollectionContextArtistAlbumsTBone
hgs
parents: 22
diff changeset
   426
                  && iContext == ECollectionContextArtistAlbumsTBone
hgs
parents: 22
diff changeset
   427
                  && reopen ) {
hgs
parents: 22
diff changeset
   428
            // Special case 3: This occurs when a song was deleted from TBone list
hgs
parents: 22
diff changeset
   429
            // within artist container. This is similar to special case 1, however, the
hgs
parents: 22
diff changeset
   430
            // fact that the new context is also ArtistAlbumsTBone indicates that the
hgs
parents: 22
diff changeset
   431
            // artist has only 1 album. We only want to reload the list section of the
hgs
parents: 22
diff changeset
   432
            // TBone in this case.
hgs
parents: 22
diff changeset
   433
            emit q_ptr->albumDataChanged();
hgs
parents: 22
diff changeset
   434
        }
hgs
parents: 22
diff changeset
   435
        else {
hgs
parents: 22
diff changeset
   436
            // Same context, but the data has changed.
hgs
parents: 22
diff changeset
   437
            emit q_ptr->dataChanged();
hgs
parents: 22
diff changeset
   438
        }
22
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
    else {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    TX_EXIT
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
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
 \internal
51
hgs
parents: 43
diff changeset
   448
 This indicates data update during incremental open operation. This indicates
hgs
parents: 43
diff changeset
   449
 that media received in setMpxMedia() has updates.
hgs
parents: 43
diff changeset
   450
 */
hgs
parents: 43
diff changeset
   451
void MpMpxCollectionDataPrivate::incrementalOpenUpdate()
hgs
parents: 43
diff changeset
   452
{
hgs
parents: 43
diff changeset
   453
    TX_ENTRY_ARGS( "iNeedReload=" << iNeedReload);
hgs
parents: 43
diff changeset
   454
    if ( iNeedReload ) {
hgs
parents: 43
diff changeset
   455
        if ( itemId(iReloadRange.second) != -1 ) {
hgs
parents: 43
diff changeset
   456
            iNeedReload = false;
hgs
parents: 43
diff changeset
   457
            emit q_ptr->dataChanged(iReloadRange.first, iReloadRange.second);
hgs
parents: 43
diff changeset
   458
        }
hgs
parents: 43
diff changeset
   459
    }
hgs
parents: 43
diff changeset
   460
    TX_EXIT
hgs
parents: 43
diff changeset
   461
}
hgs
parents: 43
diff changeset
   462
hgs
parents: 43
diff changeset
   463
/*!
hgs
parents: 43
diff changeset
   464
 \internal
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
 */
35
hgs
parents: 22
diff changeset
   466
const CMPXMedia& MpMpxCollectionDataPrivate::containerMedia()
hgs
parents: 22
diff changeset
   467
{
hgs
parents: 22
diff changeset
   468
    return *iContainerMedia;
hgs
parents: 22
diff changeset
   469
}
hgs
parents: 22
diff changeset
   470
hgs
parents: 22
diff changeset
   471
/*!
hgs
parents: 22
diff changeset
   472
 \internal
hgs
parents: 22
diff changeset
   473
 */
hgs
parents: 22
diff changeset
   474
void MpMpxCollectionDataPrivate::setContext( TCollectionContext context )
hgs
parents: 22
diff changeset
   475
{
hgs
parents: 22
diff changeset
   476
    iContext = context;
hgs
parents: 22
diff changeset
   477
    TX_LOG_ARGS("Context changed: iContext=" << iContext);
36
hgs
parents: 35
diff changeset
   478
    loadAlbumsLookup();
35
hgs
parents: 22
diff changeset
   479
    emit q_ptr->contextChanged(iContext);
hgs
parents: 22
diff changeset
   480
}
hgs
parents: 22
diff changeset
   481
hgs
parents: 22
diff changeset
   482
/*!
hgs
parents: 22
diff changeset
   483
 \internal
hgs
parents: 22
diff changeset
   484
 */
hgs
parents: 22
diff changeset
   485
void MpMpxCollectionDataPrivate::setAlbumContent( const CMPXMedia& albumContent )
hgs
parents: 22
diff changeset
   486
{
hgs
parents: 22
diff changeset
   487
    TX_ENTRY
hgs
parents: 22
diff changeset
   488
    TRAPD(err, DoSetAlbumContentL(albumContent));
hgs
parents: 22
diff changeset
   489
    if ( err == KErrNone ) {
hgs
parents: 22
diff changeset
   490
        TX_LOG_ARGS("Album content is available.");
36
hgs
parents: 35
diff changeset
   491
        loadAlbumSongsLookup();
35
hgs
parents: 22
diff changeset
   492
        emit q_ptr->refreshAlbumSongs();
hgs
parents: 22
diff changeset
   493
    }
hgs
parents: 22
diff changeset
   494
    else {
hgs
parents: 22
diff changeset
   495
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 22
diff changeset
   496
    }
hgs
parents: 22
diff changeset
   497
    TX_EXIT
hgs
parents: 22
diff changeset
   498
}
hgs
parents: 22
diff changeset
   499
hgs
parents: 22
diff changeset
   500
/*!
hgs
parents: 22
diff changeset
   501
 \internal
hgs
parents: 22
diff changeset
   502
   Currently only used to lookup playing song album id to index of albums on 
hgs
parents: 22
diff changeset
   503
   media wall.
hgs
parents: 22
diff changeset
   504
 */
hgs
parents: 22
diff changeset
   505
int MpMpxCollectionDataPrivate::itemIndex( int itemUniqueId )
hgs
parents: 22
diff changeset
   506
{
51
hgs
parents: 43
diff changeset
   507
    return iAlbumIdIndexMapping.value( itemUniqueId, -1 );
36
hgs
parents: 35
diff changeset
   508
}
hgs
parents: 35
diff changeset
   509
hgs
parents: 35
diff changeset
   510
/*!
hgs
parents: 35
diff changeset
   511
 \internal
hgs
parents: 35
diff changeset
   512
   Currently only used to lookup playing song id to index of song in the 
hgs
parents: 35
diff changeset
   513
   current album on media wall.
hgs
parents: 35
diff changeset
   514
 */
hgs
parents: 35
diff changeset
   515
int MpMpxCollectionDataPrivate::albumSongIndex( int songUniqueId )
hgs
parents: 35
diff changeset
   516
{
51
hgs
parents: 43
diff changeset
   517
    return iAlbumSongIdIndexMapping.value( songUniqueId, -1 );
hgs
parents: 43
diff changeset
   518
}
hgs
parents: 43
diff changeset
   519
hgs
parents: 43
diff changeset
   520
/*!
hgs
parents: 43
diff changeset
   521
 \internal
hgs
parents: 43
diff changeset
   522
   Use to lookup playing song id to index of song in collection and playlist
hgs
parents: 43
diff changeset
   523
   view 
hgs
parents: 43
diff changeset
   524
 */
hgs
parents: 43
diff changeset
   525
QList<int>  MpMpxCollectionDataPrivate::songIndex( int songUniqueId )
hgs
parents: 43
diff changeset
   526
{
hgs
parents: 43
diff changeset
   527
    TX_ENTRY
hgs
parents: 43
diff changeset
   528
    if(iSongIdIndexMapping.empty()){
hgs
parents: 43
diff changeset
   529
        for ( int i = count() - 1 ; i >= 0 ; i-- ) {
hgs
parents: 43
diff changeset
   530
            iSongIdIndexMapping.insertMulti( itemId2( i ) , i );
hgs
parents: 43
diff changeset
   531
        }
hgs
parents: 43
diff changeset
   532
    }
hgs
parents: 43
diff changeset
   533
    TX_EXIT
hgs
parents: 43
diff changeset
   534
    return iSongIdIndexMapping.values( songUniqueId );
36
hgs
parents: 35
diff changeset
   535
}
hgs
parents: 35
diff changeset
   536
51
hgs
parents: 43
diff changeset
   537
/*!
hgs
parents: 43
diff changeset
   538
 \internal
hgs
parents: 43
diff changeset
   539
   Set item at index to corrupted depends on if viewing TBone
hgs
parents: 43
diff changeset
   540
 */
hgs
parents: 43
diff changeset
   541
void MpMpxCollectionDataPrivate::setCorruptValue( QModelIndex index, bool tBone)
hgs
parents: 43
diff changeset
   542
{
hgs
parents: 43
diff changeset
   543
    TX_ENTRY
hgs
parents: 43
diff changeset
   544
    TRAPD(err, DoSetCorruptValueL(index, tBone));
hgs
parents: 43
diff changeset
   545
    if ( err != KErrNone ) {
hgs
parents: 43
diff changeset
   546
        TX_LOG_ARGS("Error: " << err << "; should never get here.");
hgs
parents: 43
diff changeset
   547
    }
hgs
parents: 43
diff changeset
   548
    TX_EXIT
hgs
parents: 43
diff changeset
   549
}
hgs
parents: 43
diff changeset
   550
hgs
parents: 43
diff changeset
   551
/*!
hgs
parents: 43
diff changeset
   552
 \internal
hgs
parents: 43
diff changeset
   553
 */
hgs
parents: 43
diff changeset
   554
void MpMpxCollectionDataPrivate::setReloadAlbumContent( bool reloadAlbum )
hgs
parents: 43
diff changeset
   555
{
hgs
parents: 43
diff changeset
   556
    iReloadAlbumContent = reloadAlbum;
hgs
parents: 43
diff changeset
   557
}
36
hgs
parents: 35
diff changeset
   558
hgs
parents: 35
diff changeset
   559
/*!
hgs
parents: 35
diff changeset
   560
 \internal
hgs
parents: 35
diff changeset
   561
 */
hgs
parents: 35
diff changeset
   562
void MpMpxCollectionDataPrivate::loadAlbumsLookup()
hgs
parents: 35
diff changeset
   563
{
hgs
parents: 35
diff changeset
   564
    //Clearing all the album ids.
51
hgs
parents: 43
diff changeset
   565
    iAlbumIdIndexMapping.clear();
36
hgs
parents: 35
diff changeset
   566
    if ( iContext == ECollectionContextAlbumsMediaWall) {
hgs
parents: 35
diff changeset
   567
        //Adding album ids and indixes to the hash, for itemIndex lookup.
hgs
parents: 35
diff changeset
   568
        //This is disabled for other containers to save resources.
hgs
parents: 35
diff changeset
   569
        for ( int i = count() - 1 ; i >= 0 ; i-- ) {
51
hgs
parents: 43
diff changeset
   570
            iAlbumIdIndexMapping.insert( itemId( i ) , i );
36
hgs
parents: 35
diff changeset
   571
        }
hgs
parents: 35
diff changeset
   572
    }
hgs
parents: 35
diff changeset
   573
}
hgs
parents: 35
diff changeset
   574
hgs
parents: 35
diff changeset
   575
/*!
hgs
parents: 35
diff changeset
   576
 \internal
hgs
parents: 35
diff changeset
   577
 */
hgs
parents: 35
diff changeset
   578
void MpMpxCollectionDataPrivate::loadAlbumSongsLookup()
hgs
parents: 35
diff changeset
   579
{
hgs
parents: 35
diff changeset
   580
    //Clearing all the song ids.
51
hgs
parents: 43
diff changeset
   581
    iAlbumSongIdIndexMapping.clear();
hgs
parents: 43
diff changeset
   582
    //Adding album song ids and indixes to the hash, for albumSongIndex lookup.
hgs
parents: 43
diff changeset
   583
    //This is disabled for other containers to save resources.
hgs
parents: 43
diff changeset
   584
    for ( int i = albumSongsCount() - 1 ; i >= 0 ; i-- ) {
hgs
parents: 43
diff changeset
   585
        iAlbumSongIdIndexMapping.insert( albumSongId( i ) , i );
36
hgs
parents: 35
diff changeset
   586
    }
35
hgs
parents: 22
diff changeset
   587
}
hgs
parents: 22
diff changeset
   588
hgs
parents: 22
diff changeset
   589
/*!
hgs
parents: 22
diff changeset
   590
 \internal
hgs
parents: 22
diff changeset
   591
 */
51
hgs
parents: 43
diff changeset
   592
void MpMpxCollectionDataPrivate::setReloadRange( int index )
hgs
parents: 43
diff changeset
   593
{
hgs
parents: 43
diff changeset
   594
    TX_ENTRY_ARGS( "index=" << index);
hgs
parents: 43
diff changeset
   595
    if ( !iNeedReload ) {
hgs
parents: 43
diff changeset
   596
        iNeedReload = true;
hgs
parents: 43
diff changeset
   597
        iReloadRange.first = index;
hgs
parents: 43
diff changeset
   598
        iReloadRange.second = index;
hgs
parents: 43
diff changeset
   599
    }
hgs
parents: 43
diff changeset
   600
    else if ( index < iReloadRange.first ) {
hgs
parents: 43
diff changeset
   601
        iReloadRange.first = index;
hgs
parents: 43
diff changeset
   602
    }
hgs
parents: 43
diff changeset
   603
    else if ( index > iReloadRange.second ) {
hgs
parents: 43
diff changeset
   604
        iReloadRange.second = index;
hgs
parents: 43
diff changeset
   605
    }
hgs
parents: 43
diff changeset
   606
    TX_EXIT
hgs
parents: 43
diff changeset
   607
}
hgs
parents: 43
diff changeset
   608
hgs
parents: 43
diff changeset
   609
/*!
hgs
parents: 43
diff changeset
   610
 \internal
hgs
parents: 43
diff changeset
   611
 */
hgs
parents: 43
diff changeset
   612
int MpMpxCollectionDataPrivate::itemId2( int index )
hgs
parents: 43
diff changeset
   613
{
hgs
parents: 43
diff changeset
   614
    TX_ENTRY_ARGS( "index=" << index );
hgs
parents: 43
diff changeset
   615
    int id = -1;
hgs
parents: 43
diff changeset
   616
    TRAPD( err, id = DoGetItemId2L( index ) );
hgs
parents: 43
diff changeset
   617
    if ( err == KErrNone ) {
hgs
parents: 43
diff changeset
   618
        TX_LOG_ARGS( "id=" << id );
hgs
parents: 43
diff changeset
   619
    }
hgs
parents: 43
diff changeset
   620
    else {
hgs
parents: 43
diff changeset
   621
        TX_LOG_ARGS( "Error: " << err << "; should never get here." );
hgs
parents: 43
diff changeset
   622
    }
hgs
parents: 43
diff changeset
   623
    TX_EXIT
hgs
parents: 43
diff changeset
   624
    return id;
hgs
parents: 43
diff changeset
   625
}
hgs
parents: 43
diff changeset
   626
hgs
parents: 43
diff changeset
   627
/*!
hgs
parents: 43
diff changeset
   628
 \internal
hgs
parents: 43
diff changeset
   629
 */
hgs
parents: 43
diff changeset
   630
void MpMpxCollectionDataPrivate::DoGetDataL( int index, MpMpxCollectionData::DataType type, QString& data )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   631
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   632
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   633
    CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
51
hgs
parents: 43
diff changeset
   635
    if ( currentMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId) == KMPXInvalidItemId ) {
hgs
parents: 43
diff changeset
   636
        // Accessing a data that hasn't been fully fetched from the collection.
hgs
parents: 43
diff changeset
   637
        // This can happen during incremental open. Set the index as reload candidate.
hgs
parents: 43
diff changeset
   638
        setReloadRange(index);
hgs
parents: 43
diff changeset
   639
    }
hgs
parents: 43
diff changeset
   640
35
hgs
parents: 22
diff changeset
   641
    TBuf<10> countBuf;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
    TInt count = 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
    switch ( type ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   644
        case MpMpxCollectionData::Title:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   645
            if ( currentMedia->IsSupported( KMPXMediaGeneralTitle ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   646
                const TDesC& title = currentMedia->ValueText( KMPXMediaGeneralTitle );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   647
                if ( title.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   648
                    data = QString::fromUtf16( title.Ptr(), title.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   649
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   650
            }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   651
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
        case MpMpxCollectionData::Artist:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
            if ( currentMedia->IsSupported( KMPXMediaMusicArtist ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   654
                const TDesC& artist = currentMedia->ValueText( KMPXMediaMusicArtist );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   655
                if ( artist.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   656
                    data = QString::fromUtf16( artist.Ptr(), artist.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   657
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   658
            }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   659
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   660
        case MpMpxCollectionData::Album:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   661
            if ( currentMedia->IsSupported( KMPXMediaMusicAlbum ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   662
                const TDesC& album = currentMedia->ValueText( KMPXMediaMusicAlbum );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   663
                if ( album.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   664
                    data = QString::fromUtf16( album.Ptr(), album.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   665
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   666
            }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   667
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   668
        case MpMpxCollectionData::Count:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   669
            if ( currentMedia->IsSupported( KMPXMediaGeneralCount ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
                count = currentMedia->ValueTObjectL<TInt>( KMPXMediaGeneralCount );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
            }
35
hgs
parents: 22
diff changeset
   672
            countBuf.AppendNum( count );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   673
            data = QString::fromUtf16( countBuf.Ptr(), countBuf.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   674
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   675
        case MpMpxCollectionData::AlbumArtUri:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   676
            if ( currentMedia->IsSupported( KMPXMediaMusicAlbumArtFileName ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   677
                const TDesC& album = currentMedia->ValueText( KMPXMediaMusicAlbumArtFileName );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   678
                if ( album.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   679
                    data = QString::fromUtf16( album.Ptr(), album.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   680
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   681
            }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   682
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   683
        case MpMpxCollectionData::Uri:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   684
            if ( currentMedia->IsSupported( KMPXMediaGeneralUri ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   685
                const TDesC& uri = currentMedia->ValueText( KMPXMediaGeneralUri );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   686
                if ( uri.Compare( KNullDesC ) != 0 ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   687
                    data = QString::fromUtf16( uri.Ptr(), uri.Length() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   688
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   689
            }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   690
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   691
        default:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   692
            break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   693
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   694
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   695
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   696
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   697
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   698
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   699
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
bool MpMpxCollectionDataPrivate::DoIsAutoPlaylistL()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   701
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   702
    if ( iContainerMedia->IsSupported(KMPXMediaGeneralNonPermissibleActions) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   703
        TMPXGeneralNonPermissibleActions attr(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   704
                iContainerMedia->ValueTObjectL<TMPXGeneralNonPermissibleActions>(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   705
                KMPXMediaGeneralNonPermissibleActions ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   706
        if ( attr & EMPXWrite ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   707
            return true;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   708
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   709
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
    return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   711
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   712
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   713
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   714
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   715
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   716
bool MpMpxCollectionDataPrivate::DoIsAutoPlaylistL( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   717
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   718
    const CMPXMediaArray* containerArray = iContainerMedia->Value<CMPXMediaArray>( KMPXMediaArrayContents );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   719
    User::LeaveIfNull( const_cast<CMPXMediaArray*>( containerArray ));
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   720
    CMPXMedia* media( containerArray->AtL(index) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
    if ( media->IsSupported(KMPXMediaGeneralNonPermissibleActions) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   723
        TMPXGeneralNonPermissibleActions attr(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   724
            media->ValueTObjectL<TMPXGeneralNonPermissibleActions>(
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   725
                KMPXMediaGeneralNonPermissibleActions ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   726
        if ( attr & EMPXWrite ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   727
            return true;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   728
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   729
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   730
    return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   731
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   732
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   733
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   734
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   735
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   736
int MpMpxCollectionDataPrivate::DoGetItemCountL( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   737
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   738
    CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   739
    int count = 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   740
    if ( currentMedia->IsSupported( KMPXMediaGeneralCount ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   741
        count = currentMedia->ValueTObjectL<TInt>( KMPXMediaGeneralCount );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   742
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   743
    return count;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   744
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   745
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   746
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   747
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   748
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   749
int MpMpxCollectionDataPrivate::DoGetContainerIdL()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   750
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   751
    if ( !iContainerMedia->IsSupported( KMPXMediaGeneralId ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   752
        User::Leave(KErrNotFound);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   753
    }
43
hgs
parents: 38
diff changeset
   754
    return iContainerMedia->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   755
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   756
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   757
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   758
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   759
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   760
int MpMpxCollectionDataPrivate::DoGetItemIdL( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   762
    CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
51
hgs
parents: 43
diff changeset
   763
    if ( currentMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId) == KMPXInvalidItemId ) {
hgs
parents: 43
diff changeset
   764
        return -1;
hgs
parents: 43
diff changeset
   765
    }
hgs
parents: 43
diff changeset
   766
    else {
hgs
parents: 43
diff changeset
   767
        int id1 = (currentMedia->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId )).iId1;
hgs
parents: 43
diff changeset
   768
        int id2 = (currentMedia->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId )).iId2;
hgs
parents: 43
diff changeset
   769
        TX_LOG_ARGS( "id1=" << id1 << ", id2=" << id2 );
hgs
parents: 43
diff changeset
   770
        return (currentMedia->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId )).iId1;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   771
    }
51
hgs
parents: 43
diff changeset
   772
}
hgs
parents: 43
diff changeset
   773
hgs
parents: 43
diff changeset
   774
/*!
hgs
parents: 43
diff changeset
   775
 \internal
hgs
parents: 43
diff changeset
   776
 */
hgs
parents: 43
diff changeset
   777
int MpMpxCollectionDataPrivate::DoGetItemId2L( int index )
hgs
parents: 43
diff changeset
   778
{
hgs
parents: 43
diff changeset
   779
    CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
hgs
parents: 43
diff changeset
   780
    if ( currentMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId) == KMPXInvalidItemId ) {
hgs
parents: 43
diff changeset
   781
        return -1;
hgs
parents: 43
diff changeset
   782
    }
hgs
parents: 43
diff changeset
   783
    else {
hgs
parents: 43
diff changeset
   784
        return (currentMedia->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId )).iId2;
hgs
parents: 43
diff changeset
   785
    }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   786
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   787
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   788
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   789
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   790
 */
36
hgs
parents: 35
diff changeset
   791
int MpMpxCollectionDataPrivate::DoGetAlbumSongIdL( int index )
hgs
parents: 35
diff changeset
   792
{
hgs
parents: 35
diff changeset
   793
    CMPXMedia* album( iMediaArray->AtL( iCurrentAlbumIndex ) );
hgs
parents: 35
diff changeset
   794
    const CMPXMediaArray* songs = album->Value<CMPXMediaArray>(KMPXMediaArrayContents);
hgs
parents: 35
diff changeset
   795
    User::LeaveIfNull(const_cast<CMPXMediaArray*>(songs));
hgs
parents: 35
diff changeset
   796
    CMPXMedia* song = songs->AtL(index);
51
hgs
parents: 43
diff changeset
   797
    if ( song->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId) == KMPXInvalidItemId ) {
hgs
parents: 43
diff changeset
   798
        return -1;
36
hgs
parents: 35
diff changeset
   799
    }
51
hgs
parents: 43
diff changeset
   800
    else {
hgs
parents: 43
diff changeset
   801
        return song->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
hgs
parents: 43
diff changeset
   802
    }
36
hgs
parents: 35
diff changeset
   803
}
hgs
parents: 35
diff changeset
   804
hgs
parents: 35
diff changeset
   805
/*!
hgs
parents: 35
diff changeset
   806
 \internal
hgs
parents: 35
diff changeset
   807
 */
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   808
void MpMpxCollectionDataPrivate::DoRemoveItemL( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   809
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   810
    delete iCachedRemovedItem;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   811
    iCachedRemovedItem = 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   812
    iCachedRemovedItem = CMPXMedia::NewL( *iMediaArray->AtL( index ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   813
    iMediaArray->Remove( index );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   814
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   815
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   816
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   817
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   818
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   819
bool MpMpxCollectionDataPrivate::DoTestCachedItemL( int itemId )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   820
{
38
hgs
parents: 36
diff changeset
   821
    if ( !iCachedRemovedItem || !iCachedRemovedItem->IsSupported( KMPXMediaGeneralId ) ) {
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   822
        User::Leave(KErrNotFound);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   823
    }
43
hgs
parents: 38
diff changeset
   824
    return ( itemId == TInt( iCachedRemovedItem->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ) ) );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   825
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   826
35
hgs
parents: 22
diff changeset
   827
/*!
hgs
parents: 22
diff changeset
   828
 \internal
hgs
parents: 22
diff changeset
   829
 */
hgs
parents: 22
diff changeset
   830
bool MpMpxCollectionDataPrivate::DoSetCurrentAlbumL( int index )
hgs
parents: 22
diff changeset
   831
{
hgs
parents: 22
diff changeset
   832
    TX_ENTRY_ARGS( "index=" << index);
hgs
parents: 22
diff changeset
   833
    iCurrentAlbumIndex = index;
hgs
parents: 22
diff changeset
   834
hgs
parents: 22
diff changeset
   835
    bool songsAvailable = false;
51
hgs
parents: 43
diff changeset
   836
    if (!iReloadAlbumContent){    
hgs
parents: 43
diff changeset
   837
        CMPXMedia* album( iMediaArray->AtL( index ) );
hgs
parents: 43
diff changeset
   838
        if ( album->IsSupported(KMPXMediaArrayContents) ) {
hgs
parents: 43
diff changeset
   839
            // We've previously fetched the songs for this album so
hgs
parents: 43
diff changeset
   840
            // all we do now is populate the list with the song titles.
hgs
parents: 43
diff changeset
   841
            const CMPXMediaArray* songs = album->Value<CMPXMediaArray>(KMPXMediaArrayContents);
hgs
parents: 43
diff changeset
   842
            iAlbumSongCount = songs->Count();
hgs
parents: 43
diff changeset
   843
            songsAvailable = true;
hgs
parents: 43
diff changeset
   844
            TX_LOG_ARGS("Songs available.");
hgs
parents: 43
diff changeset
   845
            loadAlbumSongsLookup();
hgs
parents: 43
diff changeset
   846
            emit q_ptr->refreshAlbumSongs();
hgs
parents: 43
diff changeset
   847
        }
35
hgs
parents: 22
diff changeset
   848
    }
hgs
parents: 22
diff changeset
   849
    TX_EXIT
hgs
parents: 22
diff changeset
   850
    return songsAvailable;
hgs
parents: 22
diff changeset
   851
}
hgs
parents: 22
diff changeset
   852
hgs
parents: 22
diff changeset
   853
/*!
hgs
parents: 22
diff changeset
   854
 \internal
hgs
parents: 22
diff changeset
   855
 */
hgs
parents: 22
diff changeset
   856
void MpMpxCollectionDataPrivate::DoGetAlbumSongDataL( int index, MpMpxCollectionData::DataType type, QString& data ) const
hgs
parents: 22
diff changeset
   857
{
hgs
parents: 22
diff changeset
   858
    TX_ENTRY
hgs
parents: 22
diff changeset
   859
    CMPXMedia* album( iMediaArray->AtL( iCurrentAlbumIndex ) );
hgs
parents: 22
diff changeset
   860
    if ( album->IsSupported(KMPXMediaArrayContents) ) {
hgs
parents: 22
diff changeset
   861
        const CMPXMediaArray* songs = album->Value<CMPXMediaArray>(KMPXMediaArrayContents);
hgs
parents: 22
diff changeset
   862
        User::LeaveIfNull(const_cast<CMPXMediaArray*>(songs));
hgs
parents: 22
diff changeset
   863
        CMPXMedia* song = songs->AtL(index);
hgs
parents: 22
diff changeset
   864
hgs
parents: 22
diff changeset
   865
        switch ( type ) {
hgs
parents: 22
diff changeset
   866
            case MpMpxCollectionData::Title:
hgs
parents: 22
diff changeset
   867
                if ( song->IsSupported( KMPXMediaGeneralTitle ) ) {
hgs
parents: 22
diff changeset
   868
                    const TDesC& title = song->ValueText( KMPXMediaGeneralTitle );
hgs
parents: 22
diff changeset
   869
                    if ( title.Compare( KNullDesC ) != 0 ) {
hgs
parents: 22
diff changeset
   870
                        data = QString::fromUtf16( title.Ptr(), title.Length() );
hgs
parents: 22
diff changeset
   871
                    }
hgs
parents: 22
diff changeset
   872
                }
hgs
parents: 22
diff changeset
   873
                break;
hgs
parents: 22
diff changeset
   874
            case MpMpxCollectionData::Uri:
hgs
parents: 22
diff changeset
   875
                if ( song->IsSupported( KMPXMediaGeneralUri ) ) {
hgs
parents: 22
diff changeset
   876
                    const TDesC& uri = song->ValueText( KMPXMediaGeneralUri );
hgs
parents: 22
diff changeset
   877
                    if ( uri.Compare( KNullDesC ) != 0 ) {
hgs
parents: 22
diff changeset
   878
                        data = QString::fromUtf16( uri.Ptr(), uri.Length() );
hgs
parents: 22
diff changeset
   879
                    }
hgs
parents: 22
diff changeset
   880
                }
hgs
parents: 22
diff changeset
   881
                break;
hgs
parents: 22
diff changeset
   882
            default:
hgs
parents: 22
diff changeset
   883
                break;
hgs
parents: 22
diff changeset
   884
        }
hgs
parents: 22
diff changeset
   885
    }
hgs
parents: 22
diff changeset
   886
    TX_EXIT
hgs
parents: 22
diff changeset
   887
}
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   888
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   889
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   890
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   891
 */
51
hgs
parents: 43
diff changeset
   892
bool MpMpxCollectionDataPrivate::DoHasItemPropertyL( int index, MpMpxCollectionData:: DataProperty type ) const
hgs
parents: 43
diff changeset
   893
{
hgs
parents: 43
diff changeset
   894
    TX_ENTRY
hgs
parents: 43
diff changeset
   895
    CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
hgs
parents: 43
diff changeset
   896
hgs
parents: 43
diff changeset
   897
    TInt flags(0);
hgs
parents: 43
diff changeset
   898
    if ( currentMedia->IsSupported( KMPXMediaGeneralFlags ) ) {
hgs
parents: 43
diff changeset
   899
        flags = currentMedia->ValueTObjectL<TUint>( KMPXMediaGeneralFlags );
hgs
parents: 43
diff changeset
   900
    }
hgs
parents: 43
diff changeset
   901
    switch ( type ) {
hgs
parents: 43
diff changeset
   902
        case MpMpxCollectionData::Corrupted:
hgs
parents: 43
diff changeset
   903
            if ( ( flags ) & ( KMPXMediaGeneralFlagsIsCorrupted ) ){
hgs
parents: 43
diff changeset
   904
                return true;
hgs
parents: 43
diff changeset
   905
            }
hgs
parents: 43
diff changeset
   906
            break;
hgs
parents: 43
diff changeset
   907
        case MpMpxCollectionData::DrmExpired:
hgs
parents: 43
diff changeset
   908
            if ( ( flags ) & ( KMPXMediaGeneralFlagsIsDrmLicenceInvalid ) ){
hgs
parents: 43
diff changeset
   909
                return true;
hgs
parents: 43
diff changeset
   910
            }
hgs
parents: 43
diff changeset
   911
            break;
hgs
parents: 43
diff changeset
   912
        default:
hgs
parents: 43
diff changeset
   913
            break;
hgs
parents: 43
diff changeset
   914
    }
hgs
parents: 43
diff changeset
   915
    TX_EXIT
hgs
parents: 43
diff changeset
   916
    return false;    
hgs
parents: 43
diff changeset
   917
}
hgs
parents: 43
diff changeset
   918
hgs
parents: 43
diff changeset
   919
/*!
hgs
parents: 43
diff changeset
   920
 \internal
hgs
parents: 43
diff changeset
   921
 */
hgs
parents: 43
diff changeset
   922
bool MpMpxCollectionDataPrivate::DoHasAlbumSongPropertyL( int index, MpMpxCollectionData:: DataProperty type ) const
hgs
parents: 43
diff changeset
   923
{
hgs
parents: 43
diff changeset
   924
    TX_ENTRY
hgs
parents: 43
diff changeset
   925
    CMPXMedia* album( iMediaArray->AtL( iCurrentAlbumIndex ) );
hgs
parents: 43
diff changeset
   926
    if ( album->IsSupported(KMPXMediaArrayContents) ) {
hgs
parents: 43
diff changeset
   927
        const CMPXMediaArray* songs = album->Value<CMPXMediaArray>(KMPXMediaArrayContents);
hgs
parents: 43
diff changeset
   928
        User::LeaveIfNull(const_cast<CMPXMediaArray*>(songs));
hgs
parents: 43
diff changeset
   929
        CMPXMedia* song = songs->AtL(index);
hgs
parents: 43
diff changeset
   930
        TInt flags(0);
hgs
parents: 43
diff changeset
   931
        if ( song->IsSupported( KMPXMediaGeneralFlags ) ) {
hgs
parents: 43
diff changeset
   932
            flags = song->ValueTObjectL<TUint>( KMPXMediaGeneralFlags );
hgs
parents: 43
diff changeset
   933
        }
hgs
parents: 43
diff changeset
   934
        switch ( type ) {
hgs
parents: 43
diff changeset
   935
            case MpMpxCollectionData::Corrupted:
hgs
parents: 43
diff changeset
   936
                if ( ( flags ) & ( KMPXMediaGeneralFlagsIsCorrupted ) ){
hgs
parents: 43
diff changeset
   937
                    return true;
hgs
parents: 43
diff changeset
   938
                }
hgs
parents: 43
diff changeset
   939
                break;
hgs
parents: 43
diff changeset
   940
            case MpMpxCollectionData::DrmExpired:
hgs
parents: 43
diff changeset
   941
                if ( ( flags ) & ( KMPXMediaGeneralFlagsIsDrmLicenceInvalid ) ){
hgs
parents: 43
diff changeset
   942
                    return true;
hgs
parents: 43
diff changeset
   943
                }
hgs
parents: 43
diff changeset
   944
                break;
hgs
parents: 43
diff changeset
   945
            default:
hgs
parents: 43
diff changeset
   946
                break;
hgs
parents: 43
diff changeset
   947
        }
hgs
parents: 43
diff changeset
   948
        
hgs
parents: 43
diff changeset
   949
    }
hgs
parents: 43
diff changeset
   950
    TX_EXIT
hgs
parents: 43
diff changeset
   951
    return false;    
hgs
parents: 43
diff changeset
   952
}
hgs
parents: 43
diff changeset
   953
/*!
hgs
parents: 43
diff changeset
   954
 \internal
hgs
parents: 43
diff changeset
   955
 */
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   956
void MpMpxCollectionDataPrivate::SetCollectionContextL()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   957
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   958
    TX_ENTRY
51
hgs
parents: 43
diff changeset
   959
	// Clear Song Index Hash when context switched
hgs
parents: 43
diff changeset
   960
    iSongIdIndexMapping.clear();
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   961
    TMPXGeneralType containerType( EMPXNoType );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   962
    if ( iContainerMedia->IsSupported( KMPXMediaGeneralType ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   963
        containerType = iContainerMedia->ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   964
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   965
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   966
    TMPXGeneralCategory containerCategory( EMPXNoCategory );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   967
    if( iContainerMedia->IsSupported( KMPXMediaGeneralCategory ) ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   968
        containerCategory = iContainerMedia->ValueTObjectL<TMPXGeneralCategory>( KMPXMediaGeneralCategory );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   969
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   970
    TX_LOG_ARGS("type=" << containerType << ", category=" << containerCategory );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   971
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   972
    iContext = ECollectionContextUnknown;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   973
    if ( containerType == EMPXGroup ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   974
        switch (containerCategory) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   975
            case EMPXSong:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   976
                iContext = ECollectionContextAllSongs;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   977
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   978
            case EMPXArtist:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   979
                iContext = ECollectionContextArtists;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   980
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   981
            case EMPXAlbum:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   982
                iContext = ECollectionContextAlbums;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   983
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   984
            case EMPXPlaylist:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   985
                iContext = ECollectionContextPlaylists;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   986
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   987
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   988
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   989
    else if ( containerType == EMPXItem ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   990
        switch (containerCategory) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   991
            case EMPXArtist:
35
hgs
parents: 22
diff changeset
   992
                if ( iMediaArray->Count() > 1 ) {
hgs
parents: 22
diff changeset
   993
                    iContext = ECollectionContextArtistAlbums;
hgs
parents: 22
diff changeset
   994
                }
hgs
parents: 22
diff changeset
   995
                else {
hgs
parents: 22
diff changeset
   996
                    // Single album. Go directly to TBone.
hgs
parents: 22
diff changeset
   997
                    iContext = ECollectionContextArtistAlbumsTBone;
hgs
parents: 22
diff changeset
   998
                }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   999
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1000
            case EMPXSong:
35
hgs
parents: 22
diff changeset
  1001
                // All songs for an artist
hgs
parents: 22
diff changeset
  1002
                iContext = ECollectionContextArtistAllSongs;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1003
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1004
            case EMPXPlaylist:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1005
                iContext = ECollectionContextPlaylistSongs;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1006
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1007
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1008
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1009
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1010
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1011
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1012
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1013
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1014
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1015
void MpMpxCollectionDataPrivate::DoSetMpxMediaL( const CMPXMedia& entries )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1016
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1017
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1018
    delete iContainerMedia;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1019
    iContainerMedia = 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1020
    iContainerMedia = CMPXMedia::NewL(entries);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1021
    iMediaArray = const_cast<CMPXMediaArray*>(iContainerMedia->Value<CMPXMediaArray>( KMPXMediaArrayContents ) );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1022
    TX_LOG_ARGS("media count=" << iMediaArray->Count() );
51
hgs
parents: 43
diff changeset
  1023
    iReloadAlbumContent = false;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1024
    SetCollectionContextL();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1025
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1026
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1027
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1028
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1029
 \internal
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1030
 */
35
hgs
parents: 22
diff changeset
  1031
void MpMpxCollectionDataPrivate::DoSetAlbumContentL( const CMPXMedia& albumContent )
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1032
{
35
hgs
parents: 22
diff changeset
  1033
    TX_ENTRY
hgs
parents: 22
diff changeset
  1034
    CMPXMediaArray* songArray(const_cast<CMPXMediaArray*>( albumContent.Value<CMPXMediaArray>(
hgs
parents: 22
diff changeset
  1035
                    KMPXMediaArrayContents ) ) );
hgs
parents: 22
diff changeset
  1036
    User::LeaveIfNull( songArray );
hgs
parents: 22
diff changeset
  1037
hgs
parents: 22
diff changeset
  1038
    // Save the songs to the album so that we don't need to find them again
hgs
parents: 22
diff changeset
  1039
    // if the same album is selected again.
hgs
parents: 22
diff changeset
  1040
    iAlbumSongCount = songArray->Count();
hgs
parents: 22
diff changeset
  1041
hgs
parents: 22
diff changeset
  1042
    if ( iAlbumSongCount ) {
hgs
parents: 22
diff changeset
  1043
        CMPXMedia* albumMedia( iMediaArray->AtL( iCurrentAlbumIndex ) );
hgs
parents: 22
diff changeset
  1044
        albumMedia->SetCObjectValueL(KMPXMediaArrayContents, songArray);
hgs
parents: 22
diff changeset
  1045
        albumMedia->SetTObjectValueL<TInt>(KMPXMediaArrayCount, iAlbumSongCount);
hgs
parents: 22
diff changeset
  1046
    }
hgs
parents: 22
diff changeset
  1047
    TX_EXIT
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1048
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1049
51
hgs
parents: 43
diff changeset
  1050
/*!
hgs
parents: 43
diff changeset
  1051
 \internal
hgs
parents: 43
diff changeset
  1052
 */
hgs
parents: 43
diff changeset
  1053
void MpMpxCollectionDataPrivate::DoSetCorruptValueL(QModelIndex index, bool tBone)
hgs
parents: 43
diff changeset
  1054
{
hgs
parents: 43
diff changeset
  1055
    TX_ENTRY
hgs
parents: 43
diff changeset
  1056
    if (tBone){
hgs
parents: 43
diff changeset
  1057
        CMPXMedia* album( iMediaArray->AtL( iCurrentAlbumIndex ) );
hgs
parents: 43
diff changeset
  1058
        if ( album->IsSupported(KMPXMediaArrayContents) ) {
hgs
parents: 43
diff changeset
  1059
            const CMPXMediaArray* songs = album->Value<CMPXMediaArray>(KMPXMediaArrayContents);
hgs
parents: 43
diff changeset
  1060
            User::LeaveIfNull(const_cast<CMPXMediaArray*>(songs));
hgs
parents: 43
diff changeset
  1061
            CMPXMedia* song = songs->AtL( index.row() );
hgs
parents: 43
diff changeset
  1062
            song->SetTObjectValueL<TUint>( KMPXMediaGeneralFlags,KMPXMediaGeneralFlagsIsCorrupted );
hgs
parents: 43
diff changeset
  1063
        }
hgs
parents: 43
diff changeset
  1064
    }
hgs
parents: 43
diff changeset
  1065
    else {
hgs
parents: 43
diff changeset
  1066
        CMPXMedia* song( iMediaArray->AtL( index.row() ) );
hgs
parents: 43
diff changeset
  1067
        song->SetTObjectValueL<TUint>( KMPXMediaGeneralFlags,KMPXMediaGeneralFlagsIsCorrupted );        
hgs
parents: 43
diff changeset
  1068
    }
hgs
parents: 43
diff changeset
  1069
    TX_EXIT  
hgs
parents: 43
diff changeset
  1070
}
35
hgs
parents: 22
diff changeset
  1071