mpdata/src/mpcollectiontbonelistdatamodel.cpp
author hgs
Fri, 14 May 2010 18:54:37 -0500
changeset 35 fdb31ab341af
child 32 c163ef0b758d
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: Music Player secondary collection abstract data model. This is
hgs
parents:
diff changeset
    15
*              primarily used to support Mediawall in Collection View. This
hgs
parents:
diff changeset
    16
*              model represents the list containing album songs.
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*/
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include <hbnamespace.h>
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "mpcollectiontbonelistdatamodel.h"
hgs
parents:
diff changeset
    23
#include "mpmpxcollectiondata.h"
hgs
parents:
diff changeset
    24
#include "mptrace.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
/*!
hgs
parents:
diff changeset
    27
    \class MpCollectionTBoneListDataModel
hgs
parents:
diff changeset
    28
    \brief Music Player collection data model.
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
    Secondary collection data model implements the interface specified by
hgs
parents:
diff changeset
    31
    QAbstractListModel, which defines the standard interface that item models
hgs
parents:
diff changeset
    32
    must use to be able to interoperate with other components in the model/view
hgs
parents:
diff changeset
    33
    architecture.
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
    Every item of data that can be accessed via a model has an associated model
hgs
parents:
diff changeset
    36
    index.
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
    Each item has a number of data elements associated with it and they can be
hgs
parents:
diff changeset
    39
    retrieved by specifying a role (see Qt::ItemDataRole) to the model's data
hgs
parents:
diff changeset
    40
    returned by itemData() function.
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    MpCollectionTBoneListDataModel is primarily used to support Mediawall in
hgs
parents:
diff changeset
    43
    Collection View. This model represents the list containing album songs.
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
    \sa QAbstractListModel
hgs
parents:
diff changeset
    46
*/
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
/*!
hgs
parents:
diff changeset
    49
    \fn void albumDataChanged()
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    This signal is specific to views with TBone. This signal is emitted when
hgs
parents:
diff changeset
    52
    a new data set is available for the list section of the TBone. Currently,
hgs
parents:
diff changeset
    53
    the only operation that can trigger this is the delete operation.
hgs
parents:
diff changeset
    54
 */
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
/*!
hgs
parents:
diff changeset
    57
 Constructs the collection data model.
hgs
parents:
diff changeset
    58
 */
hgs
parents:
diff changeset
    59
MpCollectionTBoneListDataModel::MpCollectionTBoneListDataModel( MpMpxCollectionData *data, QObject *parent )
hgs
parents:
diff changeset
    60
    : QAbstractListModel(parent),
hgs
parents:
diff changeset
    61
      mCollectionData(data),
hgs
parents:
diff changeset
    62
      mRowCount(0)
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    TX_ENTRY
hgs
parents:
diff changeset
    65
    connect( mCollectionData, SIGNAL(refreshAlbumSongs()),
hgs
parents:
diff changeset
    66
             this, SLOT(refreshModel()) );
hgs
parents:
diff changeset
    67
    connect( mCollectionData, SIGNAL(albumDataChanged()),
hgs
parents:
diff changeset
    68
             this, SIGNAL(albumDataChanged()) );
hgs
parents:
diff changeset
    69
    TX_EXIT
hgs
parents:
diff changeset
    70
}
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
/*!
hgs
parents:
diff changeset
    73
 Destructs the collection data model.
hgs
parents:
diff changeset
    74
 */
hgs
parents:
diff changeset
    75
MpCollectionTBoneListDataModel::~MpCollectionTBoneListDataModel()
hgs
parents:
diff changeset
    76
{
hgs
parents:
diff changeset
    77
    TX_LOG
hgs
parents:
diff changeset
    78
}
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
/*!
hgs
parents:
diff changeset
    81
 Returns the number of rows under the given \a parent.
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
 \reimp
hgs
parents:
diff changeset
    84
 */
hgs
parents:
diff changeset
    85
int MpCollectionTBoneListDataModel::rowCount( const QModelIndex &parent ) const
hgs
parents:
diff changeset
    86
{
hgs
parents:
diff changeset
    87
    TX_LOG
hgs
parents:
diff changeset
    88
    Q_UNUSED(parent);
hgs
parents:
diff changeset
    89
    return mRowCount;
hgs
parents:
diff changeset
    90
}
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
/*!
hgs
parents:
diff changeset
    93
 Returns the data stored for the item referred to by the \a index.
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
 \reimp
hgs
parents:
diff changeset
    96
 */
hgs
parents:
diff changeset
    97
QVariant MpCollectionTBoneListDataModel::data(const QModelIndex &index, int role) const
hgs
parents:
diff changeset
    98
{
hgs
parents:
diff changeset
    99
    TX_ENTRY
hgs
parents:
diff changeset
   100
    QVariant returnValue = QVariant();
hgs
parents:
diff changeset
   101
    if ( !index.isValid() ) {
hgs
parents:
diff changeset
   102
        return returnValue;
hgs
parents:
diff changeset
   103
    }
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    int row = index.row();
hgs
parents:
diff changeset
   106
    TX_LOG_ARGS("index=" << row << ", role=" << role);
hgs
parents:
diff changeset
   107
    if ( role == Qt::DisplayRole ) {
hgs
parents:
diff changeset
   108
        // Fetch the primary text, which is the title, if available.
hgs
parents:
diff changeset
   109
        QString songTitle = mCollectionData->albumSongData(row, MpMpxCollectionData::Title);
hgs
parents:
diff changeset
   110
        if ( !songTitle.isEmpty() ) {
hgs
parents:
diff changeset
   111
            returnValue = songTitle;
hgs
parents:
diff changeset
   112
        }
hgs
parents:
diff changeset
   113
        else {
hgs
parents:
diff changeset
   114
            returnValue = hbTrId("txt_mus_other_unknown4");
hgs
parents:
diff changeset
   115
        }
hgs
parents:
diff changeset
   116
    }
hgs
parents:
diff changeset
   117
    TX_EXIT
hgs
parents:
diff changeset
   118
    return returnValue;
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
/*!
hgs
parents:
diff changeset
   122
 Slot to be called when data has changed and model needs to be refreshed
hgs
parents:
diff changeset
   123
 to reflect the new data.
hgs
parents:
diff changeset
   124
 */
hgs
parents:
diff changeset
   125
void MpCollectionTBoneListDataModel::refreshModel()
hgs
parents:
diff changeset
   126
{
hgs
parents:
diff changeset
   127
    TX_ENTRY
hgs
parents:
diff changeset
   128
    mRowCount = mCollectionData->albumSongsCount();
hgs
parents:
diff changeset
   129
    reset();
hgs
parents:
diff changeset
   130
    TX_EXIT
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132