mpdata/src/mpmpxcollectiondata.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 12:49:57 +0300
changeset 29 8192e5b5c935
parent 22 ecf06a08d4d9
child 32 c163ef0b758d
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: Music Player collection data.
*
*/

#include "mpmpxcollectiondata.h"
#include "mpmpxcollectiondata_p.h"

/*!
    \class MpMpxCollectionData
    \brief Music Player collection data.

    Collection data provides access to collection data needed by the view.
    Every item of data can be accessed via an index and its details by specifying
    the data type of the selected data item.
*/

/*!
    \enum MpMpxCollectionData::DataType

    This enum defines available data types.
 */

/*!
    \fn void contextChanged( TCollectionContext context )

    This signal is emitted when a new data set is available and the
    collection context is changed.

    \sa setMpxMedia()
 */

/*!
    \fn void dataChanged()

    This signal is emitted when a new data set is available within the
    same context. This can happen after operations like delete and several
    playlist related operations (save, rearrange, remove).

    \sa setMpxMedia()
 */


/*!
    \fn void albumDataChanged()

    This signal is specific to views with TBone. This signal is emitted when
    a new data set is available for the list section of the TBone. Currently,
    the only operation that can trigger this is the delete operation.

    \sa setMpxMedia()
 */

/*!
    \fn void refreshAlbumSongs()

    This signal is specific to views with TBone. This signal is emitted when
    album song data is available (for the list section of the TBone), upon
    completion of MpEngine's findAlbumSongs() operation.

    \sa setAlbumContent()
 */

/*!
 Constructs the collection data.
 */
MpMpxCollectionData::MpMpxCollectionData( QObject *parent )
    : QObject(parent)
{
    d_ptr = new MpMpxCollectionDataPrivate(this);
}

/*!
 Destructs the collection data.
 */
MpMpxCollectionData::~MpMpxCollectionData()
{
    delete d_ptr;
}

/*!
 Returns the current collection context.
 /sa setContext()
 */
TCollectionContext MpMpxCollectionData::context() const
{
    return d_ptr->context();
}

/*!
 Returns the number of data entries.
 */
int MpMpxCollectionData::count() const
{
    return d_ptr->count();
}

/*!
 Returns the \a title of the collection data based on the current context.
 */
QString MpMpxCollectionData::collectionTitle() const
{
    return d_ptr->collectionTitle();
}

/*!
 Returns the data for the specified \a index and \a type.
 */
QString MpMpxCollectionData::itemData( int index, MpMpxCollectionData::DataType type ) const
{
    return d_ptr->itemData(index, type);
}

/*!
 Returns if the current container is of type 'Auto playlist'.
 */
bool MpMpxCollectionData::isAutoPlaylist()
{
    return d_ptr->isAutoPlaylist();
}

/*!
 Returns if the item specified by \a index is of type 'Auto playlist'.
 */
bool MpMpxCollectionData::isAutoPlaylist( int index )
{
    return d_ptr->isAutoPlaylist(index);
}

/*!
 Returns the count of the items contained within item specified by \a index.
 */
int MpMpxCollectionData::itemCount( int index )
{
    return d_ptr->itemCount(index);
}

/*!
 Returns the current container id.
 */
int MpMpxCollectionData::containerId()
{
    return d_ptr->containerId();
}

/*!
 Returns id of the item specified by \a index
 */
int MpMpxCollectionData::itemId(int index)
{
    return d_ptr->itemId(index);
}

/*!
 Removes item specified by \a index, also internally caches the item for drag
 and drop operations.
 
 \sa testCachedItem() insertCachedItem()
 */
void MpMpxCollectionData::removeItem(int index)
{
    d_ptr->removeItem(index);
}

/*!
 Test wether the cached item matches \a itemId.
 \sa removeItem() insertCachedItem()
 */
bool MpMpxCollectionData::testCachedItem( int itemId )
{
    return d_ptr->testCachedItem( itemId );
}

/*!
 Inserts the cached item in the location specified by \a index
 \sa removeItem() testCachedItem()
 */
void MpMpxCollectionData::insertCachedItem(int index)
{
    d_ptr->insertCachedItem( index );
}

/*!
 Sets the current album in focus. Also, triggers refreshAlbumSongs() signal
 if data contains album songs already and returns true. Otherwise, function
 returns false.
 */
bool MpMpxCollectionData::setCurrentAlbum( int index )
{
    return d_ptr->setCurrentAlbum( index );
}

/*!
 Returns the current album index.
 \sa setCurrentAlbum()
 */
int MpMpxCollectionData::currentAlbumIndex() const
{
    return d_ptr->currentAlbumIndex();
}

/*!
 Returns the number of songs in the current album.
 */
int MpMpxCollectionData::albumSongsCount() const
{
    return d_ptr->albumSongsCount();
}

/*!
 Returns the data for the specified \a index and \a type in the current album.
 Currently supported data types are: Title and Uri. All others will return

 empty string.

 \sa setCurrentAlbum()
 */
QString MpMpxCollectionData::albumSongData( int index, MpMpxCollectionData::DataType type ) const
{
    return d_ptr->albumSongData( index, type );
}

/*!
 Sets the media \a entries from the MPX framework. The \a reopen flag indicates
 whether the new media is a result of reopenCollection() operation in the MpEngine.
 Internal usage only from MpEngine.
 */
void MpMpxCollectionData::setMpxMedia( const CMPXMedia& entries, bool reopen )
{
    d_ptr->setMpxMedia(entries, reopen);
}

/*!
 Returns the container media from the MPX framework.
 Internal usage only from MpEngine.

 \sa setMpxMedia()
 */
const CMPXMedia& MpMpxCollectionData::containerMedia()
{
    return d_ptr->containerMedia();
}

/*!
 Sets the context.
 Used to fake open() and back() in T-Bone supporting views.
 Used to force the context for Media Wall view.
 */
void MpMpxCollectionData::setContext( TCollectionContext context )
{
    d_ptr->setContext( context );
}

/*!
 Sets the media \a albumContent from the MPX framework.
 Internal usage only from MpEngine.
 Album songs have been populated. Notify the change by emitting
 refreshAlbumSongs() signal.

 \sa setCurrentAlbum()
 */
void MpMpxCollectionData::setAlbumContent( const CMPXMedia& albumContent )
{
    d_ptr->setAlbumContent(albumContent);
}

/*!
 Returns the index of the iten with \a ItemUniqueId.
 Only supported for ECollectionContextAlbumsMediaWall.

 \sa setContext()
 */
int MpMpxCollectionData::itemIndex( int itemUniqueId )
{
    return d_ptr->itemIndex( itemUniqueId );
}