diff -r 26a1709b9fec -r 14979e23cb5e mpdata/src/mpmpxcollectiondata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpdata/src/mpmpxcollectiondata.cpp Tue Aug 31 15:12:29 2010 +0300 @@ -0,0 +1,376 @@ +/* +* 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 dataChanged( int fromIndex, int toIndex ) + + This signal is emitted when a new data set is available within the + same context. This can happen during an incremental open operation, + if the view accesses a range of data that doesn't have final data + (i.e. Unknown). This signal is emitted upon completion of incremental + open operation, if such unavailable range was accessed. + + \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); +} + +/*! + Returns id of the album song specified by \a index + */ +int MpMpxCollectionData::albumSongId( int index ) +{ + return d_ptr->albumSongId( 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 ); +} + +/*! + Returns item property for the specified \a index and \a type in the current item. + Currently supported data types are: Corrupted and DrmExpired. All others will return + false bool. + */ + +bool MpMpxCollectionData::hasItemProperty( int index, MpMpxCollectionData:: DataProperty type ) const +{ + return d_ptr->hasItemProperty( index, type ); +} + +/*! + Returns item property for the specified \a index and \a type in the current album. + Currently supported data types are: Corrupted and DrmExpired. All others will return + false bool. + */ +bool MpMpxCollectionData::hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type ) const +{ + return d_ptr->hasAlbumSongProperty( 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); +} + +/*! + Called when collection was opened with incremental open. This indicates that the + media received in setMpxMedia() has an update. + */ +void MpMpxCollectionData::incrementalOpenUpdate() +{ + d_ptr->incrementalOpenUpdate(); +} + +/*! + 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 item with \a ItemUniqueId. + Only supported for ECollectionContextAlbumsMediaWall. + + \sa setContext() + */ +int MpMpxCollectionData::itemIndex( int itemUniqueId ) +{ + return d_ptr->itemIndex( itemUniqueId ); +} + +/*! + Returns the index within the album data for the song with \a songUniqueId. + + */ +int MpMpxCollectionData::albumSongIndex( int songUniqueId ) +{ + return d_ptr->albumSongIndex( songUniqueId ); +} + +/*! + Returns the list of index for the song with \a songUniqueId. + A list is returned due to playlist can contain the same song + multiple times. + + */ +QList MpMpxCollectionData::songIndex( int songUniqueId ) +{ + return d_ptr->songIndex( songUniqueId ); +} + +/*! + Set model index \a index as corrupted. + + */ +void MpMpxCollectionData::setCorruptValue( QModelIndex index, bool tBone ) +{ + d_ptr->setCorruptValue( index, tBone ); +} + +/*! + Set the reloadAlbumContent variable to \a reloadAlbum + + */ +void MpMpxCollectionData::setReloadAlbumContent( bool reloadAlbum ) +{ + d_ptr->setReloadAlbumContent( reloadAlbum ); +} +