mpdata/src/mpcollectiondatamodel.cpp
author hgs
Tue, 24 Aug 2010 03:36:14 -0500
changeset 51 560ce2306a17
parent 37 eb79a7c355bf
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 model.
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 <QIcon>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include <QList>
35
hgs
parents: 22
diff changeset
    20
#include <QMimeData>
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <hbicon.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <hbnamespace.h>
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
37
hgs
parents: 35
diff changeset
    24
#include <hgwidgets.h>
hgs
parents: 35
diff changeset
    25
hgs
parents: 35
diff changeset
    26
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "mpcollectiondatamodel.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "mpcollectionalbumartmanager.h"
51
hgs
parents: 37
diff changeset
    29
#include "mpplaybackdata.h"
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "mpmpxcollectiondata.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "mptrace.h"
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
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
    \class MpCollectionDataModel
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
    \brief Music Player collection data model.
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
    Collection data model implements the interface specified by HbAbstractDataModel,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
    which defines the standard interface that item models must use to be able to
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
    interoperate with other components in the model/view architecture.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
    Every item of data that can be accessed via a model has an associated model
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
    index.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
    Each item has a number of data elements associated with it and they can be
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
    retrieved by specifying a role (see Qt::ItemDataRole) to the model's data
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
    returned by itemData() function.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
    \sa HbAbstractDataModel
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
    \fn void orderChanged( int containerId, int itemId, int itemOrdinal, int newOrdinal )
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
    This signal is emitted when a reorder operations is propagated to the 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
    model, indicates that the item with \a containerId , \a itemId is to 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
    be moved from \a itemOrdinal to \a newOrdinal.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
/*!
35
hgs
parents: 22
diff changeset
    60
    \fn void dataReloaded()
hgs
parents: 22
diff changeset
    61
hgs
parents: 22
diff changeset
    62
    This signal is emitted when there has been a changed in the data represented
hgs
parents: 22
diff changeset
    63
    by this model. This signal is emitted so that the view owning this model can
hgs
parents: 22
diff changeset
    64
    refresh the view. This can happen after operations like delete and several
hgs
parents: 22
diff changeset
    65
    playlist related operations (save, rearrange, remove).
hgs
parents: 22
diff changeset
    66
 */
hgs
parents: 22
diff changeset
    67
hgs
parents: 22
diff changeset
    68
/*!
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
 Constructs the collection data model.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
 */
51
hgs
parents: 37
diff changeset
    71
MpCollectionDataModel::MpCollectionDataModel( MpMpxCollectionData *data, MpPlaybackData *playbackData, QObject *parent )
hgs
parents: 37
diff changeset
    72
    : QAbstractListModel(parent),
hgs
parents: 37
diff changeset
    73
      mCollectionData(data),
hgs
parents: 37
diff changeset
    74
      mPlaybackData(playbackData),
hgs
parents: 37
diff changeset
    75
      mRowCount(0),
hgs
parents: 37
diff changeset
    76
      mAlbumIndexOffset(0),
hgs
parents: 37
diff changeset
    77
      mHiddenItemIndex(-1),
hgs
parents: 37
diff changeset
    78
      mCollectionLayout(ECollectionListView)
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
    TX_ENTRY
35
hgs
parents: 22
diff changeset
    81
    connect( mCollectionData, SIGNAL(contextChanged(TCollectionContext)), this, SLOT(setContext(TCollectionContext)) );
hgs
parents: 22
diff changeset
    82
    connect( mCollectionData, SIGNAL(dataChanged()), this, SLOT(reloadData()) );
51
hgs
parents: 37
diff changeset
    83
    connect( mCollectionData, SIGNAL(dataChanged(int, int)), this, SLOT(reloadData(int, int)) );
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    mAlbumArtManager = new MpCollectionAlbumArtManager(mCollectionData);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
    connect( mAlbumArtManager, SIGNAL(albumArtReady(int)), this, SLOT(updateAlbumArt(int)) );
51
hgs
parents: 37
diff changeset
    86
    
hgs
parents: 37
diff changeset
    87
    if ( mPlaybackData ) {         
hgs
parents: 37
diff changeset
    88
        connect( mPlaybackData, SIGNAL(fileCorrupted(int)), 
hgs
parents: 37
diff changeset
    89
                 this, SLOT(fileCorrupted(int)) );
hgs
parents: 37
diff changeset
    90
    }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
 Destructs the collection data model.
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
MpCollectionDataModel::~MpCollectionDataModel()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
    delete mAlbumArtManager;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
 Returns the number of rows under the given \a parent.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
 View will request for the row count immediately after a model is set.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
 To prevent it from reading data while caching the album art for the first
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
 screen, return row count as zero.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
int MpCollectionDataModel::rowCount( const QModelIndex &parent ) const
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
    TX_LOG
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
    Q_UNUSED(parent);
35
hgs
parents: 22
diff changeset
   117
    return mRowCount - mAlbumIndexOffset;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
 Returns the data stored for the item referred to by the \a index.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
QVariant MpCollectionDataModel::data(const QModelIndex &index, int role) const
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
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
    QVariant returnValue = QVariant();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
    if ( !index.isValid() ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
        return returnValue;
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
35
hgs
parents: 22
diff changeset
   133
    int row = index.row() + mAlbumIndexOffset;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
    TX_LOG_ARGS("index=" << row << ", role=" << role);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
    TCollectionContext context = mCollectionData->context();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
    if ( role == Qt::DisplayRole ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
        QStringList display;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
        // Fetch the primary text, which is the title, if available.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
        QString primaryText;
35
hgs
parents: 22
diff changeset
   140
        switch ( context ) {
hgs
parents: 22
diff changeset
   141
            case ECollectionContextAllSongs:
hgs
parents: 22
diff changeset
   142
            case ECollectionContextArtists:
hgs
parents: 22
diff changeset
   143
            case ECollectionContextAlbums:
hgs
parents: 22
diff changeset
   144
            case ECollectionContextArtistAlbums:
hgs
parents: 22
diff changeset
   145
            case ECollectionContextPlaylists:
hgs
parents: 22
diff changeset
   146
            case ECollectionContextPlaylistSongs:
hgs
parents: 22
diff changeset
   147
            case ECollectionContextAlbumsTBone:
hgs
parents: 22
diff changeset
   148
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 22
diff changeset
   149
            case ECollectionContextArtistAllSongs:
hgs
parents: 22
diff changeset
   150
                primaryText = mCollectionData->itemData(row, MpMpxCollectionData::Title);
hgs
parents: 22
diff changeset
   151
                if ( !primaryText.isEmpty() ) {
hgs
parents: 22
diff changeset
   152
                    display << primaryText;
hgs
parents: 22
diff changeset
   153
                }
hgs
parents: 22
diff changeset
   154
                else {
51
hgs
parents: 37
diff changeset
   155
                    switch ( context ) {
hgs
parents: 37
diff changeset
   156
                        case ECollectionContextArtists:
hgs
parents: 37
diff changeset
   157
                            display << hbTrId("txt_mus_list_unknown");
hgs
parents: 37
diff changeset
   158
                            break;
hgs
parents: 37
diff changeset
   159
                        case ECollectionContextArtistAlbums:
hgs
parents: 37
diff changeset
   160
                        case ECollectionContextAlbums:
hgs
parents: 37
diff changeset
   161
                            display << hbTrId("txt_mus_dblist_unknown");
hgs
parents: 37
diff changeset
   162
                            break;
hgs
parents: 37
diff changeset
   163
                        case ECollectionContextAlbumsTBone:
hgs
parents: 37
diff changeset
   164
                        case ECollectionContextArtistAlbumsTBone:
hgs
parents: 37
diff changeset
   165
                            display << hbTrId("txt_mus_other_unknown8");
hgs
parents: 37
diff changeset
   166
                            break;
hgs
parents: 37
diff changeset
   167
                        default:
hgs
parents: 37
diff changeset
   168
                            // Otherwise the primary text should be the Song Title or File Name
hgs
parents: 37
diff changeset
   169
                            // but can not be empty, if so there is an error.
hgs
parents: 37
diff changeset
   170
                            TX_LOG_ARGS("Error: Song title empty.");
hgs
parents: 37
diff changeset
   171
                            break;
hgs
parents: 37
diff changeset
   172
                    }
35
hgs
parents: 22
diff changeset
   173
                }
hgs
parents: 22
diff changeset
   174
                break;
hgs
parents: 22
diff changeset
   175
            case ECollectionContextAlbumsMediaWall:
hgs
parents: 22
diff changeset
   176
                primaryText = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
hgs
parents: 22
diff changeset
   177
                if ( !primaryText.isEmpty() ) {
hgs
parents: 22
diff changeset
   178
                    display << primaryText;
hgs
parents: 22
diff changeset
   179
                }
hgs
parents: 22
diff changeset
   180
                else {
51
hgs
parents: 37
diff changeset
   181
                    display << hbTrId("txt_mus_other_unknown2");
35
hgs
parents: 22
diff changeset
   182
                }    
hgs
parents: 22
diff changeset
   183
                break;
hgs
parents: 22
diff changeset
   184
            default:
hgs
parents: 22
diff changeset
   185
                break;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
        }
35
hgs
parents: 22
diff changeset
   187
        
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
        // Fetch the secondary text, which depends on the current context, if available.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
        QString secondaryText;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
        switch ( context ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
            case ECollectionContextAllSongs:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
            case ECollectionContextAlbums:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
            case ECollectionContextPlaylistSongs:
35
hgs
parents: 22
diff changeset
   194
            case ECollectionContextAlbumsTBone:
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
                secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
                if ( !secondaryText.isEmpty() ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
                    display << secondaryText;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
                else {
51
hgs
parents: 37
diff changeset
   200
                    switch ( context ) {
hgs
parents: 37
diff changeset
   201
                        case ECollectionContextAllSongs:
hgs
parents: 37
diff changeset
   202
                        case ECollectionContextPlaylistSongs:
hgs
parents: 37
diff changeset
   203
                            if ( mCollectionLayout == ECollectionSelectionDialog ) {
hgs
parents: 37
diff changeset
   204
                                display << hbTrId("txt_mus_dblist_val_unknown4");
hgs
parents: 37
diff changeset
   205
                            }
hgs
parents: 37
diff changeset
   206
                            else if ( mCollectionLayout == ECollectionArrangeSongsDialog ) {
hgs
parents: 37
diff changeset
   207
                                display << hbTrId("txt_mus_other_unknown9");
hgs
parents: 37
diff changeset
   208
                            }
hgs
parents: 37
diff changeset
   209
                            else {
hgs
parents: 37
diff changeset
   210
                                display << hbTrId("txt_mus_dblist_val_unknown");
hgs
parents: 37
diff changeset
   211
                            }
hgs
parents: 37
diff changeset
   212
                            break;
hgs
parents: 37
diff changeset
   213
                        case ECollectionContextAlbums:
hgs
parents: 37
diff changeset
   214
                            display << hbTrId("txt_mus_dblist_val_unknown2");
hgs
parents: 37
diff changeset
   215
                            break;
hgs
parents: 37
diff changeset
   216
                        case ECollectionContextAlbumsTBone:
hgs
parents: 37
diff changeset
   217
                            display << hbTrId("txt_mus_other_unknown5");
hgs
parents: 37
diff changeset
   218
                            break;
hgs
parents: 37
diff changeset
   219
                    }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
                break;
35
hgs
parents: 22
diff changeset
   222
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 22
diff changeset
   223
                secondaryText = mCollectionData->collectionTitle();
hgs
parents: 22
diff changeset
   224
                if ( !secondaryText.isEmpty() ) {
hgs
parents: 22
diff changeset
   225
                    display << secondaryText;
hgs
parents: 22
diff changeset
   226
                }
hgs
parents: 22
diff changeset
   227
                else {
51
hgs
parents: 37
diff changeset
   228
                    display << hbTrId("txt_mus_other_unknown5");
35
hgs
parents: 22
diff changeset
   229
                }
hgs
parents: 22
diff changeset
   230
                break;
hgs
parents: 22
diff changeset
   231
            case ECollectionContextArtistAllSongs:
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
                secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Album);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
                if ( !secondaryText.isEmpty() ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
                    display << secondaryText;
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
                else {
51
hgs
parents: 37
diff changeset
   237
                    display << hbTrId("txt_mus_dblist_val_unknown3");
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
                }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
                break;
35
hgs
parents: 22
diff changeset
   240
            case ECollectionContextAlbumsMediaWall:
hgs
parents: 22
diff changeset
   241
                secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Title);
hgs
parents: 22
diff changeset
   242
                if ( !secondaryText.isEmpty() ) {
hgs
parents: 22
diff changeset
   243
                    display << secondaryText;
hgs
parents: 22
diff changeset
   244
                }
hgs
parents: 22
diff changeset
   245
                else {
51
hgs
parents: 37
diff changeset
   246
                    display << hbTrId("txt_mus_other_unknown1");
35
hgs
parents: 22
diff changeset
   247
                }
hgs
parents: 22
diff changeset
   248
                break;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
            default:
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
                break;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
        returnValue = display;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
    else if ( role == Qt::DecorationRole ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
        switch ( context ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
            case ECollectionContextAlbums:
35
hgs
parents: 22
diff changeset
   257
            case ECollectionContextAlbumsMediaWall:
hgs
parents: 22
diff changeset
   258
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 22
diff changeset
   259
            case ECollectionContextAlbumsTBone:
hgs
parents: 22
diff changeset
   260
                    returnValue = mAlbumArtManager->albumArt( row ) ;
hgs
parents: 22
diff changeset
   261
                break;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
            case ECollectionContextArtistAlbums:
35
hgs
parents: 22
diff changeset
   263
                if ( row == 0 ) {
hgs
parents: 22
diff changeset
   264
                    returnValue = HbIcon( "qtg_small_sound" );
hgs
parents: 22
diff changeset
   265
                }
hgs
parents: 22
diff changeset
   266
                else {
hgs
parents: 22
diff changeset
   267
                    returnValue = mAlbumArtManager->albumArt( row );
hgs
parents: 22
diff changeset
   268
                }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
                break;
51
hgs
parents: 37
diff changeset
   270
            case ECollectionContextAllSongs:
hgs
parents: 37
diff changeset
   271
            case ECollectionContextArtistAllSongs:
hgs
parents: 37
diff changeset
   272
            case ECollectionContextPlaylistSongs:
hgs
parents: 37
diff changeset
   273
                if( mCollectionData->hasItemProperty(row, MpMpxCollectionData::Corrupted) ){
hgs
parents: 37
diff changeset
   274
					QList<QVariant> iconList;
hgs
parents: 37
diff changeset
   275
                    iconList << QVariant();
hgs
parents: 37
diff changeset
   276
                    iconList << HbIcon("qtg_mono_corrupted");
hgs
parents: 37
diff changeset
   277
                    returnValue = iconList;
hgs
parents: 37
diff changeset
   278
                }
hgs
parents: 37
diff changeset
   279
                else if ( mCollectionData->hasItemProperty(row, MpMpxCollectionData::DrmExpired) ) {
hgs
parents: 37
diff changeset
   280
                    QList<QVariant> iconList;
hgs
parents: 37
diff changeset
   281
                    iconList << QVariant();
hgs
parents: 37
diff changeset
   282
                    iconList << HbIcon("qtg_small_drm_rights_expired");
hgs
parents: 37
diff changeset
   283
                    returnValue = iconList;
hgs
parents: 37
diff changeset
   284
                } 
hgs
parents: 37
diff changeset
   285
                break;
hgs
parents: 37
diff changeset
   286
            default:
hgs
parents: 37
diff changeset
   287
                break;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
        }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
    else if ( role == Hb::IndexFeedbackRole ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
        QString feedbackIndex;
35
hgs
parents: 22
diff changeset
   292
        switch ( context ) {
hgs
parents: 22
diff changeset
   293
            case ECollectionContextAllSongs:
hgs
parents: 22
diff changeset
   294
            case ECollectionContextArtists:
hgs
parents: 22
diff changeset
   295
            case ECollectionContextAlbums:
hgs
parents: 22
diff changeset
   296
            case ECollectionContextArtistAlbums:
hgs
parents: 22
diff changeset
   297
            case ECollectionContextPlaylists:
hgs
parents: 22
diff changeset
   298
            case ECollectionContextPlaylistSongs:
hgs
parents: 22
diff changeset
   299
            case ECollectionContextAlbumsTBone:
hgs
parents: 22
diff changeset
   300
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 22
diff changeset
   301
            case ECollectionContextArtistAllSongs:
hgs
parents: 22
diff changeset
   302
                feedbackIndex = mCollectionData->itemData(row, MpMpxCollectionData::Title);
hgs
parents: 22
diff changeset
   303
                break;
hgs
parents: 22
diff changeset
   304
            case ECollectionContextAlbumsMediaWall:
hgs
parents: 22
diff changeset
   305
                feedbackIndex = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
hgs
parents: 22
diff changeset
   306
                break;
hgs
parents: 22
diff changeset
   307
            default:
hgs
parents: 22
diff changeset
   308
                break;
hgs
parents: 22
diff changeset
   309
        }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
        returnValue = feedbackIndex;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
    }
37
hgs
parents: 35
diff changeset
   312
    else if ( role == HgWidget::HgVisibilityRole 
hgs
parents: 35
diff changeset
   313
        && context == ECollectionContextAlbumsMediaWall) {
hgs
parents: 35
diff changeset
   314
        returnValue = !( row == mHiddenItemIndex );
hgs
parents: 35
diff changeset
   315
        }
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
    return returnValue;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   323
Qt::DropActions MpCollectionDataModel::supportedDropActions() const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
    return Qt::MoveAction;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
/*! 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
bool MpCollectionDataModel::removeRows(int row, int count, const QModelIndex &parent )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
    if ( count != 1 || row >= mRowCount ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
    beginRemoveRows ( parent, row, row);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
    //This call internally caches the item, to be inserted if it it drag and drop.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
    mCollectionData->removeItem(row);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
    mRowCount--;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
    endRemoveRows();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
    return true;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
/*! 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
QStringList MpCollectionDataModel::mimeTypes() const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
    QStringList types;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
    types << QLatin1String("application/x-mpcollectiondatamodelrowandids");
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
    return types;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
/*! 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
QMimeData *MpCollectionDataModel::mimeData(const QModelIndexList &indexes) const
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
    if (indexes.count() != 1)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
        return 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
    QStringList types = mimeTypes();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
    if (types.isEmpty())
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
        return 0;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
    QMimeData *data = new QMimeData();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
    QString format = types.at(0);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
    QByteArray encoded;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
    QDataStream stream(&encoded, QIODevice::WriteOnly);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
    stream << indexes.at(0).row();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
    stream << mCollectionData->containerId();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
    stream << mCollectionData->itemId( indexes.at(0).row() );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
    
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
    data->setData(format, encoded);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   373
    return data;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
/*! 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
 \reimp
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
*/
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
bool MpCollectionDataModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
                          int row, int column, const QModelIndex &parent)
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
    Q_UNUSED(column);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
    // check if the action is supported
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
    if (!data || action != Qt::MoveAction | row > mRowCount ) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
    // check if the format is supported
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
    QStringList types = mimeTypes();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
    if (types.isEmpty()) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
    QString format = types.at(0);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    if (!data->hasFormat(format)) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
    // decode and insert
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    QByteArray encoded = data->data(format);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
    QDataStream stream(&encoded, QIODevice::ReadOnly);
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
    int rowFrom = -1;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
    int mpxContainerId = -1;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
    int mpxItemId = -1;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
    if (!stream.atEnd()) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
        stream >> rowFrom;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
        stream >> mpxContainerId;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
        stream >> mpxItemId;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
    } 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
    if ( rowFrom == -1 || mpxContainerId == -1 || mpxItemId == -1  || 
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
            !mCollectionData->testCachedItem( mpxItemId ) || rowFrom > mRowCount) {
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
        return false;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
    }    
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
        
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
    beginInsertRows( parent, row, row );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
    emit orderChanged( mpxContainerId, mpxItemId, rowFrom, row );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
    mCollectionData->insertCachedItem( row );
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
    mRowCount++;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
    endInsertRows();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
    return true;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
37
hgs
parents: 35
diff changeset
   420
/*! 
hgs
parents: 35
diff changeset
   421
 Sets the item visibility, model will report \a visible value as 
hgs
parents: 35
diff changeset
   422
 HgWidget::HgVisibilityRole for the item at \a index. 
hgs
parents: 35
diff changeset
   423
 datachanged() signal is emited when calling this function.
hgs
parents: 35
diff changeset
   424
 Currently this is only used by Media Wall View.
hgs
parents: 35
diff changeset
   425
*/
hgs
parents: 35
diff changeset
   426
void MpCollectionDataModel::setItemVisibility(const QModelIndex &index, bool visible)
hgs
parents: 35
diff changeset
   427
{
hgs
parents: 35
diff changeset
   428
    mHiddenItemIndex = visible ? -1 : index.row();
hgs
parents: 35
diff changeset
   429
    emit dataChanged(index, index);
hgs
parents: 35
diff changeset
   430
}
hgs
parents: 35
diff changeset
   431
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
 Returns pointer to MpMpxCollectionData, which is the collection data.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
MpMpxCollectionData *MpCollectionDataModel::collectionData()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
    return mCollectionData;
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
/*!
51
hgs
parents: 37
diff changeset
   441
 Sets the layout where the collection is being displayed.
hgs
parents: 37
diff changeset
   442
 */
hgs
parents: 37
diff changeset
   443
void MpCollectionDataModel::setLayout(TCollectionLayout layout)
hgs
parents: 37
diff changeset
   444
{
hgs
parents: 37
diff changeset
   445
    mCollectionLayout = layout;
hgs
parents: 37
diff changeset
   446
}
hgs
parents: 37
diff changeset
   447
hgs
parents: 37
diff changeset
   448
/*!
35
hgs
parents: 22
diff changeset
   449
 Slot to be called when collection context is changed.
hgs
parents: 22
diff changeset
   450
 */
hgs
parents: 22
diff changeset
   451
void MpCollectionDataModel::setContext( TCollectionContext context )
hgs
parents: 22
diff changeset
   452
{
hgs
parents: 22
diff changeset
   453
    TX_ENTRY_ARGS( "context=" << context );
hgs
parents: 22
diff changeset
   454
    // Reset the album index offset for navigation
hgs
parents: 22
diff changeset
   455
    mAlbumIndexOffset = 0;
hgs
parents: 22
diff changeset
   456
    switch ( context ) {
hgs
parents: 22
diff changeset
   457
        case ECollectionContextArtistAlbums:
hgs
parents: 22
diff changeset
   458
        case ECollectionContextAlbums:
hgs
parents: 22
diff changeset
   459
            mAlbumArtManager->setThumbnailSize( MpCommon::ListThumb );
hgs
parents: 22
diff changeset
   460
            mAlbumArtManager->enableDefaultArt( true );
hgs
parents: 22
diff changeset
   461
            break;
hgs
parents: 22
diff changeset
   462
        case ECollectionContextArtistAlbumsTBone:
hgs
parents: 22
diff changeset
   463
            if ( mCollectionData->count() > 1 ) {
hgs
parents: 22
diff changeset
   464
                // Selected artist has more than 1 album and therefore the
hgs
parents: 22
diff changeset
   465
                // artist's "All songs" exist. Since we don't show artist's
hgs
parents: 22
diff changeset
   466
                // "All songs" in TBone, we need to set an offset.
hgs
parents: 22
diff changeset
   467
                mAlbumIndexOffset = 1;
hgs
parents: 22
diff changeset
   468
            }
hgs
parents: 22
diff changeset
   469
            //intentional fallthrough
hgs
parents: 22
diff changeset
   470
       case ECollectionContextAlbumsTBone:
hgs
parents: 22
diff changeset
   471
            mAlbumArtManager->setThumbnailSize( MpCommon::TBoneThumb );
hgs
parents: 22
diff changeset
   472
            mAlbumArtManager->enableDefaultArt( false );
hgs
parents: 22
diff changeset
   473
            break;
hgs
parents: 22
diff changeset
   474
        case ECollectionContextAlbumsMediaWall:
hgs
parents: 22
diff changeset
   475
            mAlbumArtManager->setThumbnailSize( MpCommon::MediaWallThumb );
hgs
parents: 22
diff changeset
   476
            mAlbumArtManager->enableDefaultArt( false );
hgs
parents: 22
diff changeset
   477
            break;
hgs
parents: 22
diff changeset
   478
        default:
hgs
parents: 22
diff changeset
   479
            break;
hgs
parents: 22
diff changeset
   480
    }
hgs
parents: 22
diff changeset
   481
    TX_EXIT
hgs
parents: 22
diff changeset
   482
}
hgs
parents: 22
diff changeset
   483
hgs
parents: 22
diff changeset
   484
/*!
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
 Slot to be called when album art for the \a index needs to be updated.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
void MpCollectionDataModel::updateAlbumArt( int index )
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
    TX_ENTRY_ARGS("index=" << index);
35
hgs
parents: 22
diff changeset
   490
hgs
parents: 22
diff changeset
   491
    index -= mAlbumIndexOffset;
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
    if ( index >= 0 && index < mRowCount ) {
51
hgs
parents: 37
diff changeset
   493
        emit dataChanged(this->index(index, 0), this->index(index, 0));
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
/*!
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
 Slot to be called when data has changed and model needs to be refreshed
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
 to reflect the new data.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
 */
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
void MpCollectionDataModel::refreshModel()
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
{
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
    TX_ENTRY
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
    // Cancel all outstanding album art request first, then reset the model.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
    mAlbumArtManager->cancel();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
    mRowCount = mCollectionData->count();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
    TCollectionContext context = mCollectionData->context();
35
hgs
parents: 22
diff changeset
   510
    if ( context == ECollectionContextAlbums || 
hgs
parents: 22
diff changeset
   511
         context == ECollectionContextArtistAlbums ||
hgs
parents: 22
diff changeset
   512
         context == ECollectionContextAlbumsMediaWall ) {
22
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
        // Before providing the new data to the view (list, grid, etc.), we want
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
        // to make sure that we have enough album arts for the first screen.
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
        mAlbumArtManager->cacheFirstScreen();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
    }
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
    reset();
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
    TX_EXIT
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
}
ecf06a08d4d9 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
35
hgs
parents: 22
diff changeset
   521
/*!
hgs
parents: 22
diff changeset
   522
 Slot to be called when data has changed (same context) and model needs to reload
hgs
parents: 22
diff changeset
   523
 the data.
hgs
parents: 22
diff changeset
   524
 */
hgs
parents: 22
diff changeset
   525
void MpCollectionDataModel::reloadData()
hgs
parents: 22
diff changeset
   526
{
hgs
parents: 22
diff changeset
   527
    TX_ENTRY
hgs
parents: 22
diff changeset
   528
    mAlbumArtManager->cancel();
hgs
parents: 22
diff changeset
   529
    mRowCount = mCollectionData->count();
hgs
parents: 22
diff changeset
   530
    reset();
hgs
parents: 22
diff changeset
   531
    emit dataReloaded();
hgs
parents: 22
diff changeset
   532
    TX_EXIT
hgs
parents: 22
diff changeset
   533
}
hgs
parents: 22
diff changeset
   534
51
hgs
parents: 37
diff changeset
   535
/*!
hgs
parents: 37
diff changeset
   536
 Slot to be called when data has changed (same context) and model needs to reload
hgs
parents: 37
diff changeset
   537
 the data in the specified range.
hgs
parents: 37
diff changeset
   538
 */
hgs
parents: 37
diff changeset
   539
void MpCollectionDataModel::reloadData( int fromIndex, int toIndex )
hgs
parents: 37
diff changeset
   540
{
hgs
parents: 37
diff changeset
   541
    TX_ENTRY_ARGS("fromIndex=" << fromIndex << ", toIndex=" << toIndex);
hgs
parents: 37
diff changeset
   542
    emit dataChanged(this->index(fromIndex,0), this->index(toIndex,0));
hgs
parents: 37
diff changeset
   543
    TX_EXIT
hgs
parents: 37
diff changeset
   544
}
hgs
parents: 37
diff changeset
   545
hgs
parents: 37
diff changeset
   546
/*!
hgs
parents: 37
diff changeset
   547
 Slot to be called when a song is marked as corrupted
hgs
parents: 37
diff changeset
   548
 */
hgs
parents: 37
diff changeset
   549
void MpCollectionDataModel::fileCorrupted(int songId)
hgs
parents: 37
diff changeset
   550
{
hgs
parents: 37
diff changeset
   551
    TX_ENTRY
hgs
parents: 37
diff changeset
   552
    QModelIndex corruptedSongIndex;
hgs
parents: 37
diff changeset
   553
    QList<int> indexList = mCollectionData->songIndex( songId );
hgs
parents: 37
diff changeset
   554
    for (int i = 0; i < indexList.count(); i++){
hgs
parents: 37
diff changeset
   555
        corruptedSongIndex = index( indexList.at(i) );
hgs
parents: 37
diff changeset
   556
        if ( corruptedSongIndex.isValid() && (!(mCollectionData->hasItemProperty(corruptedSongIndex.row(),
hgs
parents: 37
diff changeset
   557
                MpMpxCollectionData::Corrupted)))) {
hgs
parents: 37
diff changeset
   558
        
hgs
parents: 37
diff changeset
   559
            mCollectionData->setCorruptValue(corruptedSongIndex, false);
hgs
parents: 37
diff changeset
   560
            emit dataChanged( corruptedSongIndex, corruptedSongIndex );
hgs
parents: 37
diff changeset
   561
        }
hgs
parents: 37
diff changeset
   562
    }
hgs
parents: 37
diff changeset
   563
    TX_EXIT   
hgs
parents: 37
diff changeset
   564
}
hgs
parents: 37
diff changeset
   565
hgs
parents: 37
diff changeset
   566