# HG changeset patch
# User hgs
# Date 1273881277 18000
# Node ID fdb31ab341afa421c7bc12e42a62d1718d51cf2a
# Parent 2c5162224003ff6141e02d185f28124c03aab02e
201019
diff -r 2c5162224003 -r fdb31ab341af app/app.pro
--- a/app/app.pro Fri Apr 30 19:33:32 2010 -0500
+++ b/app/app.pro Fri May 14 18:54:37 2010 -0500
@@ -16,7 +16,7 @@
SERVICEAPP = app
TARGET = musicplayer
-ICON = resources/qgn_menu_mp_qt.svg
+ICON = resources/qtg_large_music_player.svg
DEPENDPATH += .
INCLUDEPATH += . \
inc \
diff -r 2c5162224003 -r fdb31ab341af app/inc/mpmainwindow.h
--- a/app/inc/mpmainwindow.h Fri Apr 30 19:33:32 2010 -0500
+++ b/app/inc/mpmainwindow.h Fri May 14 18:54:37 2010 -0500
@@ -40,7 +40,8 @@
CollectionView = 1,
PlaybackView,
SettingsView,
- DetailsView };
+ DetailsView,
+ MediaWallView};
MpMainWindow();
~MpMainWindow();
@@ -58,7 +59,7 @@
void activateView(ViewType);
void connectView();
void disconnectView();
-
+ void keyPressEvent(QKeyEvent *event);
MpxViewPlugin* loadView( ViewType type, MpCommon::MpViewMode viewMode= MpCommon::DefaultView );
private:
@@ -67,10 +68,10 @@
MpxViewPlugin *mPlaybackViewPlugin; // Own
MpxViewPlugin *mSettingsViewPlugin; // Own
MpxViewPlugin *mDetailsViewPlugin; // Own
-
+ MpxViewPlugin *mMediaWallViewPlugin; // Own
MpxViewPlugin *mCurrentViewPlugin; // Own
ViewType mVerticalViewType;
- MusicServices *mMusicServices; // Own
+ MusicServices *mMusicServices; // Own
};
diff -r 2c5162224003 -r fdb31ab341af app/resources/qgn_menu_mp_qt.svg
--- a/app/resources/qgn_menu_mp_qt.svg Fri Apr 30 19:33:32 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-
-
diff -r 2c5162224003 -r fdb31ab341af app/resources/qtg_large_music_player.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/resources/qtg_large_music_player.svg Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,84 @@
+
+
+
diff -r 2c5162224003 -r fdb31ab341af app/src/main.cpp
--- a/app/src/main.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/app/src/main.cpp Fri May 14 18:54:37 2010 -0500
@@ -37,6 +37,11 @@
// Main window widget.
// Includes decorators such as signal strength and battery life indicator.
MpMainWindow mainWindow;
+ mainWindow.viewport()->grabGesture(Qt::SwipeGesture);
+ mainWindow.viewport()->grabGesture(Qt::PanGesture);
+ mainWindow.viewport()->grabGesture(Qt::TapGesture);
+ mainWindow.viewport()->grabGesture(Qt::TapAndHoldGesture);
+ mainWindow.setOptimizationFlag(QGraphicsView::DontSavePainterState);
mainWindow.initialize();
mainWindow.show();
diff -r 2c5162224003 -r fdb31ab341af app/src/mpmainwindow.cpp
--- a/app/src/mpmainwindow.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/app/src/mpmainwindow.cpp Fri May 14 18:54:37 2010 -0500
@@ -29,7 +29,7 @@
#include "mpmainwindow.h"
#include "mpviewbase.h"
#include "musicservices.h"
-#include "mpengine.h"
+#include "mpenginefactory.h"
#include "mptrace.h"
/*!
@@ -50,6 +50,7 @@
mPlaybackViewPlugin(0),
mSettingsViewPlugin(0),
mDetailsViewPlugin(0),
+ mMediaWallViewPlugin(0),
mCurrentViewPlugin(0),
mVerticalViewType( CollectionView ),
mMusicServices(0)
@@ -83,8 +84,11 @@
mDetailsViewPlugin->destroyView();
delete mDetailsViewPlugin;
}
-
- MpEngine::instance()->close();
+ if (mMediaWallViewPlugin) {
+ mMediaWallViewPlugin->destroyView();
+ delete mMediaWallViewPlugin;
+ }
+ MpEngineFactory::close();
TX_EXIT
@@ -128,20 +132,26 @@
XQServiceUtil::toBackground( false );
}
- MpEngine *engine = MpEngine::instance();
-
if ( !mMusicServices ) {
- engine->initialize(MpCommon::DefaultView);
-
- loadView(CollectionView);
- activateView(CollectionView);
-
+ MpEngineFactory::createSharedEngine();
+ if ( orientation() == Qt::Vertical ) {
+ loadView(CollectionView);
+ activateView(CollectionView);
+ loadView(MediaWallView);
+ }
+ else {
+ loadView(MediaWallView);
+ activateView(MediaWallView);
+ loadView(CollectionView);
+ }
connect(this, SIGNAL( orientationChanged( Qt::Orientation ) ), SLOT( switchView( Qt::Orientation ) ) );
- connect( engine, SIGNAL( libraryUpdated() ), SLOT( handleLibraryUpdated() ) );
- engine->checkForSystemEvents();
+ connect( MpEngineFactory::sharedEngine(), SIGNAL( libraryUpdated() ), SLOT( handleLibraryUpdated() ) );
+ MpEngineFactory::sharedEngine()->checkForSystemEvents();
loadView( PlaybackView );
}
- setOrientation(Qt::Vertical, true);//This sould prevent media wall activation.
+ else {
+ setOrientation(Qt::Vertical, true);//This sould prevent media wall activation.
+ }
TX_EXIT
}
@@ -151,7 +161,7 @@
void MpMainWindow::handleCommand( int commandCode )
{
TX_ENTRY_ARGS("commandCode=" << commandCode );
-
+
switch ( commandCode ) {
case MpCommon::Exit:
if ( mCurrentViewPlugin ) {
@@ -159,6 +169,9 @@
}
qApp->quit();
break;
+ case MpCommon::SendToBackground:
+ lower();
+ break;
case MpCommon::ActivateCollectionView:
activateView(CollectionView);
break;
@@ -183,7 +196,9 @@
if (orientation == Qt::Vertical) {
activateView( mVerticalViewType );
}
-
+ else {
+ activateView(MediaWallView);
+ }
}
/*!
@@ -199,7 +214,10 @@
if ( mCurrentViewPlugin ) {
disconnectView();
mCurrentViewPlugin->deactivateView();
- if ( viewType == CollectionView && mCurrentViewPlugin == mPlaybackViewPlugin ||
+ if ( viewType == MediaWallView || mCurrentViewPlugin == mMediaWallViewPlugin ) {
+ doTransition = false;
+ }
+ else if ( viewType == CollectionView && mCurrentViewPlugin == mPlaybackViewPlugin ||
viewType == PlaybackView && mCurrentViewPlugin == mDetailsViewPlugin ||
viewType == PlaybackView && mCurrentViewPlugin == mSettingsViewPlugin ) {
transitionFlags |= Hb::ViewSwitchUseBackAnim;
@@ -212,9 +230,9 @@
Q_ASSERT( mCurrentViewPlugin );
if ( mCurrentViewPlugin ) {
-
- mVerticalViewType = viewType;
-
+ if ( viewType != MediaWallView ) {
+ mVerticalViewType = viewType;
+ }
addView( reinterpret_cast( mCurrentViewPlugin->getView() ) );
setCurrentView( reinterpret_cast( mCurrentViewPlugin->getView() ) , doTransition , transitionFlags);
mCurrentViewPlugin->activateView();
@@ -275,17 +293,35 @@
/*!
Reimp.
*/
-
+void MpMainWindow::keyPressEvent(QKeyEvent *event)
+{
+ switch(event->key()) {
+ case 16842754:
+ case Qt::Key_Hangup:
+ if (orientation () == Qt::Vertical) {
+ setOrientation(Qt::Horizontal, false);
+ }
+ else {
+ setOrientation(Qt::Vertical, false);
+ }
+ break;
+ case 16842753:
+ case Qt::Key_Call:
+ unsetOrientation(false);
+ break;
+ default:
+ HbMainWindow::keyPressEvent (event);
+ break;
+ }
+}
-void MpMainWindow::initializeServiceView( TUid hostUid ){
-
- MpEngine *engine = MpEngine::instance();
-
+void MpMainWindow::initializeServiceView( TUid hostUid )
+{
switch (mMusicServices->currentService()) {
case MusicServices::EUriFetcher:
{
- engine->initialize( MpCommon::FetchView, hostUid );
+ MpEngineFactory::createSharedEngine( hostUid , MpEngine::Fetch );
loadView( CollectionView, MpCommon::FetchView );
MpViewBase* collectionView = reinterpret_cast(mCollectionViewPlugin->getView());
connect(collectionView, SIGNAL(songSelected(QString)), mMusicServices, SLOT(itemSelected(QString)));
@@ -293,22 +329,22 @@
loadView(PlaybackView, MpCommon::FetchView );
MpViewBase* playbackView = reinterpret_cast(mPlaybackViewPlugin->getView());
connect(playbackView, SIGNAL(songSelected(QString)), mMusicServices, SLOT(itemSelected(QString)));
- connect( engine, SIGNAL( libraryUpdated() ), this, SLOT( handleLibraryUpdated() ) );
- engine->checkForSystemEvents();
+ connect( MpEngineFactory::sharedEngine(), SIGNAL( libraryUpdated() ), this, SLOT( handleLibraryUpdated() ) );
+ MpEngineFactory::sharedEngine()->checkForSystemEvents();
break;
}
case MusicServices::EPlayback:
{
- engine->initialize( MpCommon::EmbeddedView, hostUid );
+ MpEngineFactory::createSharedEngine( hostUid , MpEngine::Embedded );
loadView(PlaybackView, MpCommon::EmbeddedView );
MpViewBase* playbackView = reinterpret_cast(mPlaybackViewPlugin->getView());
- connect(mMusicServices, SIGNAL(playReady(QString)), engine, SLOT(playEmbedded(QString)));
- connect(mMusicServices, SIGNAL(playReady(const XQSharableFile&)), engine, SLOT(playEmbedded(const XQSharableFile&)));
+ connect(mMusicServices, SIGNAL(playReady(QString)), MpEngineFactory::sharedEngine(), SLOT(playEmbedded(QString)));
+ connect(mMusicServices, SIGNAL(playReady(const XQSharableFile&)), MpEngineFactory::sharedEngine(), SLOT(playEmbedded(const XQSharableFile&)));
connect(playbackView, SIGNAL(songSelected(QString)), mMusicServices, SLOT(itemSelected(QString)));
activateView( PlaybackView );
break;
}
- default:
+ default:
Q_ASSERT_X(false, "MpMainWindow::initializeServiceView", "undefined service");
break;
}
@@ -338,7 +374,10 @@
pluginUid = MpCommon::KDetailsViewUid;
plugin = &mDetailsViewPlugin;
break;
-
+ case MediaWallView:
+ pluginUid = MpCommon::KMediaWallViewUid;
+ plugin = &mMediaWallViewPlugin;
+ break;
default:
Q_ASSERT_X(false, "MpMainWindow::loadView", "undefined view type");
break;
diff -r 2c5162224003 -r fdb31ab341af inc/mpcollectiondatamodel.h
--- a/inc/mpcollectiondatamodel.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpcollectiondatamodel.h Fri May 14 18:54:37 2010 -0500
@@ -19,6 +19,7 @@
#define MPCOLLECTIONDATAMODEL_H
#include
+#include "mpmpxcollectionviewdefs.h"
class MpMpxCollectionData;
class MpCollectionAlbumArtManager;
@@ -32,7 +33,7 @@
class MPDATA_EXPORT MpCollectionDataModel : public QAbstractListModel
{
Q_OBJECT
-
+
public:
explicit MpCollectionDataModel( MpMpxCollectionData *data, QObject *parent=0 );
@@ -50,18 +51,23 @@
MpMpxCollectionData *collectionData();
signals:
+
void orderChanged( int containerId, int itemId, int itemOrdinal, int newOrdinal );
+ void dataReloaded();
public slots:
+ void setContext( TCollectionContext context );
void updateAlbumArt( int index );
void refreshModel();
+ void reloadData();
private:
- MpMpxCollectionData *mCollectionData;
- MpCollectionAlbumArtManager *mAlbumArtManager; // Own
+ MpMpxCollectionData *mCollectionData; // Not own
+ MpCollectionAlbumArtManager *mAlbumArtManager; // Own
int mRowCount;
+ int mAlbumIndexOffset;
};
diff -r 2c5162224003 -r fdb31ab341af inc/mpcollectiontbonelistdatamodel.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mpcollectiontbonelistdatamodel.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,61 @@
+/*
+* 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 abstract data model. This is
+* primarily used to support TBone Mediawall in Collection View.
+* This model represents the list containing album songs.
+*
+*/
+
+#ifndef MPCOLLECTIONTBONELISTDATAMODEL_H
+#define MPCOLLECTIONTBONELISTDATAMODEL_H
+
+#include
+
+class MpMpxCollectionData;
+
+#if defined(BUILD_MPDATA_LIB)
+#define MPDATA_EXPORT Q_DECL_EXPORT
+#else
+#define MPDATA_EXPORT Q_DECL_IMPORT
+#endif
+
+class MPDATA_EXPORT MpCollectionTBoneListDataModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+
+ explicit MpCollectionTBoneListDataModel( MpMpxCollectionData *data, QObject *parent=0 );
+ virtual ~MpCollectionTBoneListDataModel();
+
+ int rowCount(const QModelIndex &parent=QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const;
+
+signals:
+
+ void albumDataChanged();
+
+public slots:
+
+ void refreshModel();
+
+private:
+
+ MpMpxCollectionData *mCollectionData; // Not own
+ int mRowCount;
+
+};
+
+#endif // MPCOLLECTIONTBONELISTDATAMODEL_H
+
diff -r 2c5162224003 -r fdb31ab341af inc/mpcommondefs.h
--- a/inc/mpcommondefs.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpcommondefs.h Fri May 14 18:54:37 2010 -0500
@@ -28,6 +28,7 @@
const long int KPlaybackViewUid = {0x10207C64};
const long int KSettingsViewUid = {0x10207C66};
const long int KDetailsViewUid = {0x2002D0AA};
+ const long int KMediaWallViewUid = {0x10207C94};
/*!
Command code sent from the views to the application main window
@@ -35,10 +36,11 @@
*/
enum MpCommandCode {
Exit,
+ SendToBackground,
ActivateCollectionView,
ActivatePlaybackView,
- ActivateSettingsView,
- ActivateDetailsView
+ ActivateSettingsView,
+ ActivateDetailsView
};
/*!
@@ -51,6 +53,15 @@
FetchView,
EmbeddedView
};
+
+ /*!
+ Thumbnail type, used in collection model.
+ */
+ enum MpThumbType{
+ ListThumb,
+ TBoneThumb,
+ MediaWallThumb,
+ };
}
#endif // MPCOMMONDEFS_H
diff -r 2c5162224003 -r fdb31ab341af inc/mpengine.h
--- a/inc/mpengine.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpengine.h Fri May 14 18:54:37 2010 -0500
@@ -28,13 +28,18 @@
class QTranslator;
class HbPopup;
class MpMpxHarvesterFrameworkWrapper;
-class MpSongScanner;
class MpMediaKeyHandler;
class MpMpxCollectionFrameworkWrapper;
class MpMpxPlaybackFrameworkWrapper;
+class MpMpxDetailsFrameworkWrapper;
class MpMpxCollectionData;
class MpPlaybackData;
+class MpSongData;
class XQSharableFile;
+class MpEngineFactory;
+class MpAudioEffectsFrameworkWrapper;
+class MpEqualizerFrameworkWrapper;
+class MpProgressDialogHandler;
#if defined(BUILD_MPENGINE_LIB)
#define MPENGINE_EXPORT Q_DECL_EXPORT
@@ -46,7 +51,18 @@
class MPENGINE_EXPORT MpEngine : public QObject
{
Q_OBJECT
+ Q_PROPERTY(int activePreset READ activePreset)
+ friend class MpEngineFactory;
+
+public:
+ enum EngineMode{
+ StandAlone,
+ Fetch,
+ Embedded,
+ MediaBrowsing
+ };
+
private:
enum UsbBlockingState {
@@ -61,11 +77,7 @@
public:
virtual ~MpEngine();
- static MpEngine *instance();
- void initialize(MpCommon::MpViewMode viewMode, TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ) );
- void close();
-
// Harvester related
bool verifyUsbBlocking( bool showMessage = false );
void checkForSystemEvents();
@@ -82,16 +94,32 @@
void renamePlaylist( QString &newName );
void deleteSongs( QList &selection );
-
void previewItem( int index );
void openIsolatedCollection( TCollectionContext context );
void releaseIsolatedCollection();
-
+
+ void findAlbumSongs( int index );
+ void playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData = 0 );
+
MpMpxCollectionData *collectionData();
// Playback related
MpPlaybackData *playbackData();
+
+ // Details related
+ MpSongData *songData();
+ void retrieveSong();
+
+ // Audio Effects related
+ int balance();
+ bool loudness();
+
+ // Equalizer related
+ void applyPreset( int presetIndex );
+ void disableEqualizer();
+ int activePreset();
+ QStringList presetNames();
signals:
@@ -107,6 +135,11 @@
void playlistsRenamed( bool success );
void isolatedCollectionOpened( MpMpxCollectionData* collectionData );
+
+ void containerContentsChanged();
+
+ // Equalizer related
+ void equalizerReady();
public slots:
@@ -121,19 +154,33 @@
// Collection related
void reopenCollection();
void reorderPlaylist( int playlistId, int songId, int originalOrdinal, int newOrdinal );
+ void handleDeleteStarted();
+ void handleDeleteEnded();
- // Playback related
- void playEmbedded( QString aFilename );
- void playEmbedded( const XQSharableFile& file );
+ // Playback related
+ void playEmbedded( QString aFilename );
+ void playEmbedded( const XQSharableFile& file );
void playPause();
void stop();
void skipForward();
+ void startSeekForward();
+ void stopSeeking();
void skipBackward();
+ void startSeekBackward();
void setPosition( int position );
void setShuffle( bool mode );
void setRepeat( bool mode );
+
+ // Audio Effects related
+ void setBalance( int balance );
+ void setLoudness( bool mode );
+
+ // Equalizer related
+ void handleEqualizerReady();
private:
+
+ void initialize( TUid hostUid, EngineMode mode);
// Harvester related
void handleUsbMassStorageStartEvent();
@@ -145,14 +192,13 @@
void changeUsbBlockingState( UsbBlockingState state );
void launchBlockingNote();
void setOutstandingPopup( HbPopup *popup );
-
+
private:
Q_DISABLE_COPY( MpEngine )
// Harvesting related
MpMpxHarvesterFrameworkWrapper *mMpxHarvesterWrapper; // Own
- MpSongScanner *mSongScanner; // Own
MpMediaKeyHandler *mMediaKeyHandler; // Own
HbPopup *mUsbOutstandingNote; // Own
@@ -161,14 +207,24 @@
// Playback related
MpMpxPlaybackFrameworkWrapper *mMpxPlaybackWrapper; //Own
+
+ // Details related
+ MpMpxDetailsFrameworkWrapper *mMpxDetailsWrapper; // Own
+
+ // Audio Effects related
+ MpAudioEffectsFrameworkWrapper *mAudioEffectsWrapper; // Own
+
+ // Equalizer related
+ MpEqualizerFrameworkWrapper *mEqualizerWrapper; // Own
+ int mCurrentPresetIndex;
// General
QTranslator *mMpTranslator; // Own
UsbBlockingState mUsbBlockingState;
UsbBlockingState mPreviousUsbState;
- MpCommon::MpViewMode mViewMode;
TUid mHostUid;
-
+ MpProgressDialogHandler *mProgressDialogHandler; // Own
+
};
#endif // MPENGINE_H
diff -r 2c5162224003 -r fdb31ab341af inc/mpenginefactory.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mpenginefactory.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,59 @@
+/*
+* 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 engine.
+*
+*/
+
+#ifndef MPENGINEFACTORY_H
+#define MPENGINEFACTORY_H
+
+#include
+
+#include "mpengine.h"
+#include "mpcommondefs.h"
+
+
+#if defined(BUILD_MPENGINE_LIB)
+#define MPENGINE_EXPORT Q_DECL_EXPORT
+#else
+#define MPENGINE_EXPORT Q_DECL_IMPORT
+#endif
+
+
+class MPENGINE_EXPORT MpEngineFactory : public QObject
+{
+ Q_OBJECT
+
+private:
+ explicit MpEngineFactory();
+
+public:
+ virtual ~MpEngineFactory();
+ static MpEngineFactory * instance();
+
+ static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+ static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode );
+ static MpEngine *sharedEngine();
+ static void close();
+
+private:
+
+ Q_DISABLE_COPY( MpEngineFactory )
+
+ MpEngine *mSharedEngine;
+ QList mEngines;
+
+};
+
+#endif // MPENGINEFACTORY_H
diff -r 2c5162224003 -r fdb31ab341af inc/mpmpxcollectiondata.h
--- a/inc/mpmpxcollectiondata.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpmpxcollectiondata.h Fri May 14 18:54:37 2010 -0500
@@ -69,12 +69,24 @@
bool testCachedItem( int itemId );
void insertCachedItem(int index);
- void setMpxMedia( const CMPXMedia& entries );
+ bool setCurrentAlbum( int index );
+ int currentAlbumIndex() const;
+ int albumSongsCount() const;
+ QString albumSongData( int index, MpMpxCollectionData::DataType type ) const;
+
+ void setMpxMedia( const CMPXMedia& entries, bool reopen=false );
const CMPXMedia& containerMedia();
+ void setContext( TCollectionContext context );
+ void setAlbumContent( const CMPXMedia& albumContent );
+ int itemIndex( int itemUniqueId );
signals:
void contextChanged( TCollectionContext context );
+ void dataChanged();
+ void albumDataChanged();
+ void refreshAlbumSongs();
+
private:
Q_DISABLE_COPY(MpMpxCollectionData)
diff -r 2c5162224003 -r fdb31ab341af inc/mpmpxcollectionviewdefs.h
--- a/inc/mpmpxcollectionviewdefs.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpmpxcollectionviewdefs.h Fri May 14 18:54:37 2010 -0500
@@ -25,15 +25,15 @@
enum TCollectionContext {
ECollectionContextUnknown = 0,
ECollectionContextAllSongs,
- ECollectionContextArtists,
- ECollectionContextArtistAlbums,
- ECollectionContextArtistSongs,
+ ECollectionContextArtists,
+ ECollectionContextArtistAlbums,
+ ECollectionContextArtistAlbumsTBone,
+ ECollectionContextArtistAllSongs,
ECollectionContextAlbums,
- ECollectionContextAlbumSongs,
+ ECollectionContextAlbumsTBone,
ECollectionContextPlaylists,
ECollectionContextPlaylistSongs,
- ECollectionContextGenres,
- ECollectionContextGenreSongs
+ ECollectionContextAlbumsMediaWall
};
// Register so type can be used in signal and slot connection
Q_DECLARE_METATYPE(TCollectionContext)
diff -r 2c5162224003 -r fdb31ab341af inc/mpnowplayingwidget.h
--- a/inc/mpnowplayingwidget.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpnowplayingwidget.h Fri May 14 18:54:37 2010 -0500
@@ -31,6 +31,8 @@
//forward declartions
class QGraphicsSceneMouseEvent;
class MpNowPlayingWidgetPrivate;
+class HbFrameItem;
+
class MPNOWPLAYINGBANNER_EXPORT MpNowPlayingWidget : public HbWidget
{
@@ -41,8 +43,7 @@
explicit MpNowPlayingWidget(long int playerId, QGraphicsItem *parent=0 );
virtual ~MpNowPlayingWidget();
void setEnabled( bool enabled );
- void paint( QPainter *painter, const QStyleOptionGraphicsItem *option,
- QWidget *widget = 0 );
+ void resizeEvent(QGraphicsSceneResizeEvent *event);
signals:
void clicked();
@@ -51,12 +52,12 @@
private:
void mousePressEvent( QGraphicsSceneMouseEvent *event );
void mouseReleaseEvent( QGraphicsSceneMouseEvent *event );
- void changeEvent(QEvent *event);
+ void mouseMoveEvent( QGraphicsSceneMouseEvent *event );
private:
Q_DISABLE_COPY(MpNowPlayingWidget)
MpNowPlayingWidgetPrivate * const d_ptr; //owned
-
+ HbFrameItem *mFrameItem;
};
#endif // MPNOWPLAYINGWIDGET_H
diff -r 2c5162224003 -r fdb31ab341af inc/mpplaybackdata.h
--- a/inc/mpplaybackdata.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpplaybackdata.h Fri May 14 18:54:37 2010 -0500
@@ -22,9 +22,10 @@
#include
#include
+#include
+
//forward declartions
-class HbIcon;
class ThumbnailManager;
#if defined(BUILD_MPDATA_LIB)
@@ -40,6 +41,7 @@
public:
enum SimplifiedState {
+ NotPlaying,
Playing,
Paused,
Stopped
@@ -61,14 +63,19 @@
const QString& album() const;
bool setUri( const QString& uri );
const QString& uri() const;
-
void setAlbumArtUri( const QString& albumArtUri );
void albumArt( HbIcon& icon ) const;
-
+ bool setAlbumId( int id );
+ int albumId();
+ bool setId( int id );
+ int id();
+ bool setRealAudio( bool mode );
+ bool realAudio();
void setPlaybackState( const SimplifiedState state );
MpPlaybackData::SimplifiedState playbackState() const;
void commitPlaybackInfo();
+
public slots:
@@ -81,7 +88,7 @@
void albumArtReady();
void playbackStateChanged();
void playbackInfoChanged();
-
+
private:
ThumbnailManager *mThumbnailManager; //owned
@@ -93,9 +100,12 @@
QString mAlbum;
QString mArtist;
QString mUri;
- HbIcon *mAlbumArt;
- HbIcon *mDefaultAlbumArt;
+ int mAlbumId;
+ int mId;
+ HbIcon mAlbumArt;
+ HbIcon mDefaultAlbumArt;
SimplifiedState mPlaybackState;
+ bool mRealAudio;
Q_DISABLE_COPY(MpPlaybackData)
};
diff -r 2c5162224003 -r fdb31ab341af inc/mpsettingsmanager.h
--- a/inc/mpsettingsmanager.h Fri Apr 30 19:33:32 2010 -0500
+++ b/inc/mpsettingsmanager.h Fri May 14 18:54:37 2010 -0500
@@ -44,17 +44,23 @@
static bool shuffle();
static bool repeat();
static int preset();
+ static bool inspireMe();
+ static bool songDetailsGb();
public slots:
void valueChanged(const XQSettingsKey& key, const QVariant& value);
static void setShuffle(bool shuffle);
static void setRepeat(bool repeat);
static void setPreset(int preset);
+ static void setInspireMe(bool inspireme);
+ static void setSongDetailsGb(bool songdetails);
signals:
void shuffleChanged(bool shuffle);
void repeatChanged(bool repeat);
void presetChanged(int preset);
+ void InspireMeChanged(bool inspireme);
+ void SongDetailsGbChanged(bool songdetails);
private:
Q_DISABLE_COPY(MpSettingsManager)
@@ -63,6 +69,8 @@
bool mShuffle;
bool mRepeat;
int mPreset;
+ bool mInspireMe;
+ bool mSongDetailsGb;
};
#endif // MPSETTINGSMANAGER_H
diff -r 2c5162224003 -r fdb31ab341af inc/mpsongdata.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mpsongdata.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,133 @@
+/*
+* 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: Metadata of song for details view.
+*
+*/
+
+#ifndef MPSONGDATA_H
+#define MPSONGDATA_H
+
+#include
+#include
+#include
+
+//forward declartions
+class ThumbnailManager;
+class HbIcon;
+
+#if defined(BUILD_MPDATA_LIB)
+#define MPDATA_EXPORT Q_DECL_EXPORT
+#else
+#define MPDATA_EXPORT Q_DECL_IMPORT
+#endif
+
+//class declaration
+class MPDATA_EXPORT MpSongData : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit MpSongData( QObject *parent=0 );
+ virtual ~MpSongData();
+
+ bool setTitle( const QString &title );
+ bool setAlbum( const QString &album );
+ bool setArtist( const QString &artist );
+ bool setComment( const QString &comment );
+ void setAlbumArtUri( const QString &albumArtUri );
+ bool setYear( int date );
+ bool setGenre( const QString &genre );
+ bool setComposer( const QString &compoer );
+ bool setAlbumTrack( const QString &albumtrack );
+ void setLink( const QString &link );
+ bool setFileName( const QString &fileName );
+ bool setMimeType( const QString &mimeType );
+ bool setDuration( int duration );
+ bool setBitRate( int bitRate);
+ bool setSampleRate( int sampleRate );
+ bool setSize( int size );
+ bool setModified( const QString &modified );
+ bool setCopyright( const QString ©right );
+ bool setMusicURL( const QString &musicURL );
+ bool setDrmProtected( bool drmProtected );
+
+ // inform details view when basic information is ready to accelerate UI update
+ void commitPlaybackInfo();
+ // inform details view when details information is ready
+ void commitSongDetailInfo();
+
+public slots:
+ void thumbnailReady( const QPixmap& pixmap, void *data, int id, int error );
+
+ int reservedLength() const { return mLink.length() + mTitle.length() + mArtist.length(); }
+
+ QString title() const;
+ QString album() const;
+ QString artist() const;
+ QString comment() const;
+ void albumArt( HbIcon& icon ) const;
+ QString year() const;
+ QString genre() const;
+ QString composer() const;
+ QString albumTrack() const;
+ QString link() const;
+
+ QString fileName() const;
+ QString mimeType() const;
+ QString duration() const;
+ QString bitRate() const;
+ QString sampleRate() const;
+ QString size() const;
+ QString modified() const;
+ QString copyright() const;
+ QString musicURL() const;
+ bool isDrmProtected() const;
+
+ QString albumArtBase64() const;
+
+signals:
+ void albumArtReady();
+ void playbackInfoChanged();
+ void songDetailInfoChanged();
+
+private:
+ QString mTitle;
+ QString mAlbum;
+ QString mArtist;
+ QString mComment;
+ QString mComposer;
+ QString mGenre;
+ QString mYear;
+ QString mAlbumTrack;
+ HbIcon *mAlbumArt;
+ ThumbnailManager *mThumbnailManager; //owned
+ TInt mReqId;
+ QString currentAAUri;
+ HbIcon *mDefaultAlbumArt;
+ QString mLink;
+ QString mFileName;
+ QString mMimeType;
+ QString mDuration;
+ QString mBitRate;
+ QString mSampleRate;
+ QString mSize;
+ QString mModified;
+ QString mCopyright;
+ QString mMusicURL;
+ bool mDrmProtected;
+
+ Q_DISABLE_COPY(MpSongData)
+};
+
+#endif // MPSONGDATA_H
diff -r 2c5162224003 -r fdb31ab341af mpdata/bwins/mpdatau.def
--- a/mpdata/bwins/mpdatau.def Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/bwins/mpdatau.def Fri May 14 18:54:37 2010 -0500
@@ -1,87 +1,182 @@
EXPORTS
?tr@MpMpxCollectionData@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString MpMpxCollectionData::tr(char const *, char const *)
- ?album@MpPlaybackData@@QBEABVQString@@XZ @ 2 NONAME ; class QString const & MpPlaybackData::album(void) const
- ?dropMimeData@MpCollectionDataModel@@UAE_NPBVQMimeData@@W4DropAction@Qt@@HHABVQModelIndex@@@Z @ 3 NONAME ; bool MpCollectionDataModel::dropMimeData(class QMimeData const *, enum Qt::DropAction, int, int, class QModelIndex const &)
- ?count@MpMpxCollectionData@@QBEHXZ @ 4 NONAME ; int MpMpxCollectionData::count(void) const
- ?refreshModel@MpCollectionDataModel@@QAEXXZ @ 5 NONAME ; void MpCollectionDataModel::refreshModel(void)
- ?contextChanged@MpMpxCollectionData@@IAEXW4TCollectionContext@@@Z @ 6 NONAME ; void MpMpxCollectionData::contextChanged(enum TCollectionContext)
- ?testCachedItem@MpMpxCollectionData@@QAE_NH@Z @ 7 NONAME ; bool MpMpxCollectionData::testCachedItem(int)
- ?tr@MpCollectionDataModel@@SA?AVQString@@PBD0@Z @ 8 NONAME ; class QString MpCollectionDataModel::tr(char const *, char const *)
- ?mimeData@MpCollectionDataModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 9 NONAME ; class QMimeData * MpCollectionDataModel::mimeData(class QList const &) const
- ?setTitle@MpPlaybackData@@QAE_NABVQString@@@Z @ 10 NONAME ; bool MpPlaybackData::setTitle(class QString const &)
- ?trUtf8@MpMpxCollectionData@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString MpMpxCollectionData::trUtf8(char const *, char const *, int)
- ?tr@MpMpxCollectionData@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString MpMpxCollectionData::tr(char const *, char const *, int)
- ??_EMpMpxCollectionData@@UAE@I@Z @ 13 NONAME ; MpMpxCollectionData::~MpMpxCollectionData(unsigned int)
- ?trUtf8@MpCollectionDataModel@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString MpCollectionDataModel::trUtf8(char const *, char const *)
- ?qt_metacast@MpCollectionDataModel@@UAEPAXPBD@Z @ 15 NONAME ; void * MpCollectionDataModel::qt_metacast(char const *)
- ?staticMetaObject@MpCollectionDataModel@@2UQMetaObject@@B @ 16 NONAME ; struct QMetaObject const MpCollectionDataModel::staticMetaObject
- ?updateAlbumArt@MpCollectionDataModel@@QAEXH@Z @ 17 NONAME ; void MpCollectionDataModel::updateAlbumArt(int)
- ??_EMpPlaybackData@@UAE@I@Z @ 18 NONAME ; MpPlaybackData::~MpPlaybackData(unsigned int)
- ?metaObject@MpPlaybackData@@UBEPBUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const * MpPlaybackData::metaObject(void) const
- ?data@MpCollectionDataModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 20 NONAME ; class QVariant MpCollectionDataModel::data(class QModelIndex const &, int) const
- ?removeItem@MpMpxCollectionData@@QAEXH@Z @ 21 NONAME ; void MpMpxCollectionData::removeItem(int)
- ?getStaticMetaObject@MpMpxCollectionData@@SAABUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const & MpMpxCollectionData::getStaticMetaObject(void)
- ?mimeTypes@MpCollectionDataModel@@UBE?AVQStringList@@XZ @ 23 NONAME ; class QStringList MpCollectionDataModel::mimeTypes(void) const
- ?itemCount@MpMpxCollectionData@@QAEHH@Z @ 24 NONAME ; int MpMpxCollectionData::itemCount(int)
- ?collectionTitle@MpMpxCollectionData@@QBE?AVQString@@XZ @ 25 NONAME ; class QString MpMpxCollectionData::collectionTitle(void) const
+ ?dropMimeData@MpCollectionDataModel@@UAE_NPBVQMimeData@@W4DropAction@Qt@@HHABVQModelIndex@@@Z @ 2 NONAME ; bool MpCollectionDataModel::dropMimeData(class QMimeData const *, enum Qt::DropAction, int, int, class QModelIndex const &)
+ ?currentAlbumIndex@MpMpxCollectionData@@QBEHXZ @ 3 NONAME ; int MpMpxCollectionData::currentAlbumIndex(void) const
+ ?refreshModel@MpCollectionDataModel@@QAEXXZ @ 4 NONAME ; void MpCollectionDataModel::refreshModel(void)
+ ?contextChanged@MpMpxCollectionData@@IAEXW4TCollectionContext@@@Z @ 5 NONAME ; void MpMpxCollectionData::contextChanged(enum TCollectionContext)
+ ?mimeData@MpCollectionDataModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 6 NONAME ; class QMimeData * MpCollectionDataModel::mimeData(class QList const &) const
+ ?fileName@MpSongData@@QBE?AVQString@@XZ @ 7 NONAME ; class QString MpSongData::fileName(void) const
+ ?trUtf8@MpMpxCollectionData@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString MpMpxCollectionData::trUtf8(char const *, char const *, int)
+ ?tr@MpMpxCollectionData@@SA?AVQString@@PBD0H@Z @ 9 NONAME ; class QString MpMpxCollectionData::tr(char const *, char const *, int)
+ ??_EMpMpxCollectionData@@UAE@I@Z @ 10 NONAME ; MpMpxCollectionData::~MpMpxCollectionData(unsigned int)
+ ?qt_metacast@MpCollectionDataModel@@UAEPAXPBD@Z @ 11 NONAME ; void * MpCollectionDataModel::qt_metacast(char const *)
+ ?updateAlbumArt@MpCollectionDataModel@@QAEXH@Z @ 12 NONAME ; void MpCollectionDataModel::updateAlbumArt(int)
+ ??_EMpPlaybackData@@UAE@I@Z @ 13 NONAME ; MpPlaybackData::~MpPlaybackData(unsigned int)
+ ?setLink@MpSongData@@QAEXABVQString@@@Z @ 14 NONAME ; void MpSongData::setLink(class QString const &)
+ ?metaObject@MpPlaybackData@@UBEPBUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const * MpPlaybackData::metaObject(void) const
+ ?setCopyright@MpSongData@@QAE_NABVQString@@@Z @ 16 NONAME ; bool MpSongData::setCopyright(class QString const &)
+ ?refreshModel@MpCollectionTBoneListDataModel@@QAEXXZ @ 17 NONAME ; void MpCollectionTBoneListDataModel::refreshModel(void)
+ ?title@MpSongData@@QBE?AVQString@@XZ @ 18 NONAME ; class QString MpSongData::title(void) const
+ ?data@MpCollectionDataModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 19 NONAME ; class QVariant MpCollectionDataModel::data(class QModelIndex const &, int) const
+ ?setAlbumId@MpPlaybackData@@QAE_NH@Z @ 20 NONAME ; bool MpPlaybackData::setAlbumId(int)
+ ?setDrmProtected@MpSongData@@QAE_N_N@Z @ 21 NONAME ; bool MpSongData::setDrmProtected(bool)
+ ?mimeType@MpSongData@@QBE?AVQString@@XZ @ 22 NONAME ; class QString MpSongData::mimeType(void) const
+ ?removeItem@MpMpxCollectionData@@QAEXH@Z @ 23 NONAME ; void MpMpxCollectionData::removeItem(int)
+ ?getStaticMetaObject@MpMpxCollectionData@@SAABUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const & MpMpxCollectionData::getStaticMetaObject(void)
+ ?itemCount@MpMpxCollectionData@@QAEHH@Z @ 25 NONAME ; int MpMpxCollectionData::itemCount(int)
?isAutoPlaylist@MpMpxCollectionData@@QAE_NH@Z @ 26 NONAME ; bool MpMpxCollectionData::isAutoPlaylist(int)
- ?tr@MpPlaybackData@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString MpPlaybackData::tr(char const *, char const *)
- ?qt_metacall@MpPlaybackData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 28 NONAME ; int MpPlaybackData::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?position@MpPlaybackData@@QBEHXZ @ 29 NONAME ; int MpPlaybackData::position(void) const
- ?setAlbumArtUri@MpPlaybackData@@QAEXABVQString@@@Z @ 30 NONAME ; void MpPlaybackData::setAlbumArtUri(class QString const &)
- ??_EMpCollectionDataModel@@UAE@I@Z @ 31 NONAME ; MpCollectionDataModel::~MpCollectionDataModel(unsigned int)
- ?insertCachedItem@MpMpxCollectionData@@QAEXH@Z @ 32 NONAME ; void MpMpxCollectionData::insertCachedItem(int)
- ?positionChanged@MpPlaybackData@@IAEXXZ @ 33 NONAME ; void MpPlaybackData::positionChanged(void)
- ?title@MpPlaybackData@@QBEABVQString@@XZ @ 34 NONAME ; class QString const & MpPlaybackData::title(void) const
- ??0MpMpxCollectionData@@QAE@PAVQObject@@@Z @ 35 NONAME ; MpMpxCollectionData::MpMpxCollectionData(class QObject *)
- ?setArtist@MpPlaybackData@@QAE_NABVQString@@@Z @ 36 NONAME ; bool MpPlaybackData::setArtist(class QString const &)
- ?qt_metacall@MpCollectionDataModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 37 NONAME ; int MpCollectionDataModel::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??1MpMpxCollectionData@@UAE@XZ @ 38 NONAME ; MpMpxCollectionData::~MpMpxCollectionData(void)
- ?playbackState@MpPlaybackData@@QBE?AW4SimplifiedState@1@XZ @ 39 NONAME ; enum MpPlaybackData::SimplifiedState MpPlaybackData::playbackState(void) const
- ??0MpPlaybackData@@QAE@PAVQObject@@@Z @ 40 NONAME ; MpPlaybackData::MpPlaybackData(class QObject *)
- ?trUtf8@MpCollectionDataModel@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString MpCollectionDataModel::trUtf8(char const *, char const *, int)
+ ?position@MpPlaybackData@@QBEHXZ @ 27 NONAME ; int MpPlaybackData::position(void) const
+ ?setAlbumArtUri@MpPlaybackData@@QAEXABVQString@@@Z @ 28 NONAME ; void MpPlaybackData::setAlbumArtUri(class QString const &)
+ ??_EMpCollectionDataModel@@UAE@I@Z @ 29 NONAME ; MpCollectionDataModel::~MpCollectionDataModel(unsigned int)
+ ?qt_metacast@MpSongData@@UAEPAXPBD@Z @ 30 NONAME ; void * MpSongData::qt_metacast(char const *)
+ ?setBitRate@MpSongData@@QAE_NH@Z @ 31 NONAME ; bool MpSongData::setBitRate(int)
+ ?positionChanged@MpPlaybackData@@IAEXXZ @ 32 NONAME ; void MpPlaybackData::positionChanged(void)
+ ?tr@MpCollectionTBoneListDataModel@@SA?AVQString@@PBD0H@Z @ 33 NONAME ; class QString MpCollectionTBoneListDataModel::tr(char const *, char const *, int)
+ ?itemIndex@MpMpxCollectionData@@QAEHH@Z @ 34 NONAME ; int MpMpxCollectionData::itemIndex(int)
+ ?title@MpPlaybackData@@QBEABVQString@@XZ @ 35 NONAME ; class QString const & MpPlaybackData::title(void) const
+ ?qt_metacall@MpCollectionDataModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 36 NONAME ; int MpCollectionDataModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?artist@MpSongData@@QBE?AVQString@@XZ @ 37 NONAME ; class QString MpSongData::artist(void) const
+ ?setMpxMedia@MpMpxCollectionData@@QAEXABVCMPXMedia@@_N@Z @ 38 NONAME ; void MpMpxCollectionData::setMpxMedia(class CMPXMedia const &, bool)
+ ?staticMetaObject@MpSongData@@2UQMetaObject@@B @ 39 NONAME ; struct QMetaObject const MpSongData::staticMetaObject
+ ?playbackState@MpPlaybackData@@QBE?AW4SimplifiedState@1@XZ @ 40 NONAME ; enum MpPlaybackData::SimplifiedState MpPlaybackData::playbackState(void) const
+ ?tr@MpSongData@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString MpSongData::tr(char const *, char const *, int)
?context@MpMpxCollectionData@@QBE?AW4TCollectionContext@@XZ @ 42 NONAME ; enum TCollectionContext MpMpxCollectionData::context(void) const
- ?metaObject@MpMpxCollectionData@@UBEPBUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const * MpMpxCollectionData::metaObject(void) const
- ?qt_metacast@MpMpxCollectionData@@UAEPAXPBD@Z @ 44 NONAME ; void * MpMpxCollectionData::qt_metacast(char const *)
- ?qt_metacast@MpPlaybackData@@UAEPAXPBD@Z @ 45 NONAME ; void * MpPlaybackData::qt_metacast(char const *)
- ?supportedDropActions@MpCollectionDataModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 46 NONAME ; class QFlags MpCollectionDataModel::supportedDropActions(void) const
- ?durationChanged@MpPlaybackData@@IAEXXZ @ 47 NONAME ; void MpPlaybackData::durationChanged(void)
- ?staticMetaObject@MpPlaybackData@@2UQMetaObject@@B @ 48 NONAME ; struct QMetaObject const MpPlaybackData::staticMetaObject
- ?containerId@MpMpxCollectionData@@QAEHXZ @ 49 NONAME ; int MpMpxCollectionData::containerId(void)
- ?orderChanged@MpCollectionDataModel@@IAEXHHHH@Z @ 50 NONAME ; void MpCollectionDataModel::orderChanged(int, int, int, int)
- ?containerMedia@MpMpxCollectionData@@QAEABVCMPXMedia@@XZ @ 51 NONAME ; class CMPXMedia const & MpMpxCollectionData::containerMedia(void)
- ??1MpCollectionDataModel@@UAE@XZ @ 52 NONAME ; MpCollectionDataModel::~MpCollectionDataModel(void)
+ ?supportedDropActions@MpCollectionDataModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 43 NONAME ; class QFlags MpCollectionDataModel::supportedDropActions(void) const
+ ?setContext@MpMpxCollectionData@@QAEXW4TCollectionContext@@@Z @ 44 NONAME ; void MpMpxCollectionData::setContext(enum TCollectionContext)
+ ?durationChanged@MpPlaybackData@@IAEXXZ @ 45 NONAME ; void MpPlaybackData::durationChanged(void)
+ ?staticMetaObject@MpPlaybackData@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const MpPlaybackData::staticMetaObject
+ ?staticMetaObject@MpCollectionTBoneListDataModel@@2UQMetaObject@@B @ 47 NONAME ; struct QMetaObject const MpCollectionTBoneListDataModel::staticMetaObject
+ ?orderChanged@MpCollectionDataModel@@IAEXHHHH@Z @ 48 NONAME ; void MpCollectionDataModel::orderChanged(int, int, int, int)
+ ?metaObject@MpCollectionTBoneListDataModel@@UBEPBUQMetaObject@@XZ @ 49 NONAME ; struct QMetaObject const * MpCollectionTBoneListDataModel::metaObject(void) const
+ ?tr@MpCollectionTBoneListDataModel@@SA?AVQString@@PBD0@Z @ 50 NONAME ; class QString MpCollectionTBoneListDataModel::tr(char const *, char const *)
+ ?bitRate@MpSongData@@QBE?AVQString@@XZ @ 51 NONAME ; class QString MpSongData::bitRate(void) const
+ ?setModified@MpSongData@@QAE_NABVQString@@@Z @ 52 NONAME ; bool MpSongData::setModified(class QString const &)
?setUri@MpPlaybackData@@QAE_NABVQString@@@Z @ 53 NONAME ; bool MpPlaybackData::setUri(class QString const &)
- ?tr@MpCollectionDataModel@@SA?AVQString@@PBD0H@Z @ 54 NONAME ; class QString MpCollectionDataModel::tr(char const *, char const *, int)
- ?collectionData@MpCollectionDataModel@@QAEPAVMpMpxCollectionData@@XZ @ 55 NONAME ; class MpMpxCollectionData * MpCollectionDataModel::collectionData(void)
- ??0MpCollectionDataModel@@QAE@PAVMpMpxCollectionData@@PAVQObject@@@Z @ 56 NONAME ; MpCollectionDataModel::MpCollectionDataModel(class MpMpxCollectionData *, class QObject *)
- ?isAutoPlaylist@MpMpxCollectionData@@QAE_NXZ @ 57 NONAME ; bool MpMpxCollectionData::isAutoPlaylist(void)
- ?trUtf8@MpMpxCollectionData@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString MpMpxCollectionData::trUtf8(char const *, char const *)
- ?setPosition@MpPlaybackData@@QAEXH@Z @ 59 NONAME ; void MpPlaybackData::setPosition(int)
- ??1MpPlaybackData@@UAE@XZ @ 60 NONAME ; MpPlaybackData::~MpPlaybackData(void)
- ?setAlbum@MpPlaybackData@@QAE_NABVQString@@@Z @ 61 NONAME ; bool MpPlaybackData::setAlbum(class QString const &)
- ?setPlaybackState@MpPlaybackData@@QAEXW4SimplifiedState@1@@Z @ 62 NONAME ; void MpPlaybackData::setPlaybackState(enum MpPlaybackData::SimplifiedState)
- ?trUtf8@MpPlaybackData@@SA?AVQString@@PBD0@Z @ 63 NONAME ; class QString MpPlaybackData::trUtf8(char const *, char const *)
- ?itemId@MpMpxCollectionData@@QAEHH@Z @ 64 NONAME ; int MpMpxCollectionData::itemId(int)
- ?setMpxMedia@MpMpxCollectionData@@QAEXABVCMPXMedia@@@Z @ 65 NONAME ; void MpMpxCollectionData::setMpxMedia(class CMPXMedia const &)
- ?artist@MpPlaybackData@@QBEABVQString@@XZ @ 66 NONAME ; class QString const & MpPlaybackData::artist(void) const
- ?getStaticMetaObject@MpPlaybackData@@SAABUQMetaObject@@XZ @ 67 NONAME ; struct QMetaObject const & MpPlaybackData::getStaticMetaObject(void)
- ?albumArt@MpPlaybackData@@QBEXAAVHbIcon@@@Z @ 68 NONAME ; void MpPlaybackData::albumArt(class HbIcon &) const
- ?playbackStateChanged@MpPlaybackData@@IAEXXZ @ 69 NONAME ; void MpPlaybackData::playbackStateChanged(void)
- ?duration@MpPlaybackData@@QBEHXZ @ 70 NONAME ; int MpPlaybackData::duration(void) const
- ?commitPlaybackInfo@MpPlaybackData@@QAEXXZ @ 71 NONAME ; void MpPlaybackData::commitPlaybackInfo(void)
- ?removeRows@MpCollectionDataModel@@UAE_NHHABVQModelIndex@@@Z @ 72 NONAME ; bool MpCollectionDataModel::removeRows(int, int, class QModelIndex const &)
- ?getStaticMetaObject@MpCollectionDataModel@@SAABUQMetaObject@@XZ @ 73 NONAME ; struct QMetaObject const & MpCollectionDataModel::getStaticMetaObject(void)
- ?setDuration@MpPlaybackData@@QAEXH@Z @ 74 NONAME ; void MpPlaybackData::setDuration(int)
- ?playbackInfoChanged@MpPlaybackData@@IAEXXZ @ 75 NONAME ; void MpPlaybackData::playbackInfoChanged(void)
- ?itemData@MpMpxCollectionData@@QBE?AVQString@@HW4DataType@1@@Z @ 76 NONAME ; class QString MpMpxCollectionData::itemData(int, enum MpMpxCollectionData::DataType) const
- ?uri@MpPlaybackData@@QBEABVQString@@XZ @ 77 NONAME ; class QString const & MpPlaybackData::uri(void) const
- ?rowCount@MpCollectionDataModel@@UBEHABVQModelIndex@@@Z @ 78 NONAME ; int MpCollectionDataModel::rowCount(class QModelIndex const &) const
- ?trUtf8@MpPlaybackData@@SA?AVQString@@PBD0H@Z @ 79 NONAME ; class QString MpPlaybackData::trUtf8(char const *, char const *, int)
- ?thumbnailReady@MpPlaybackData@@QAEXABVQPixmap@@PAXHH@Z @ 80 NONAME ; void MpPlaybackData::thumbnailReady(class QPixmap const &, void *, int, int)
- ?staticMetaObject@MpMpxCollectionData@@2UQMetaObject@@B @ 81 NONAME ; struct QMetaObject const MpMpxCollectionData::staticMetaObject
- ?tr@MpPlaybackData@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString MpPlaybackData::tr(char const *, char const *, int)
- ?metaObject@MpCollectionDataModel@@UBEPBUQMetaObject@@XZ @ 83 NONAME ; struct QMetaObject const * MpCollectionDataModel::metaObject(void) const
- ?albumArtReady@MpPlaybackData@@IAEXXZ @ 84 NONAME ; void MpPlaybackData::albumArtReady(void)
- ?qt_metacall@MpMpxCollectionData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ; int MpMpxCollectionData::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacast@MpCollectionTBoneListDataModel@@UAEPAXPBD@Z @ 54 NONAME ; void * MpCollectionTBoneListDataModel::qt_metacast(char const *)
+ ?duration@MpSongData@@QBE?AVQString@@XZ @ 55 NONAME ; class QString MpSongData::duration(void) const
+ ?qt_metacall@MpCollectionTBoneListDataModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 56 NONAME ; int MpCollectionTBoneListDataModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??0MpCollectionDataModel@@QAE@PAVMpMpxCollectionData@@PAVQObject@@@Z @ 57 NONAME ; MpCollectionDataModel::MpCollectionDataModel(class MpMpxCollectionData *, class QObject *)
+ ?isAutoPlaylist@MpMpxCollectionData@@QAE_NXZ @ 58 NONAME ; bool MpMpxCollectionData::isAutoPlaylist(void)
+ ?setAlbum@MpPlaybackData@@QAE_NABVQString@@@Z @ 59 NONAME ; bool MpPlaybackData::setAlbum(class QString const &)
+ ?setGenre@MpSongData@@QAE_NABVQString@@@Z @ 60 NONAME ; bool MpSongData::setGenre(class QString const &)
+ ?setCurrentAlbum@MpMpxCollectionData@@QAE_NH@Z @ 61 NONAME ; bool MpMpxCollectionData::setCurrentAlbum(int)
+ ?itemId@MpMpxCollectionData@@QAEHH@Z @ 62 NONAME ; int MpMpxCollectionData::itemId(int)
+ ?trUtf8@MpSongData@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString MpSongData::trUtf8(char const *, char const *, int)
+ ?artist@MpPlaybackData@@QBEABVQString@@XZ @ 64 NONAME ; class QString const & MpPlaybackData::artist(void) const
+ ?setFileName@MpSongData@@QAE_NABVQString@@@Z @ 65 NONAME ; bool MpSongData::setFileName(class QString const &)
+ ??0MpCollectionTBoneListDataModel@@QAE@PAVMpMpxCollectionData@@PAVQObject@@@Z @ 66 NONAME ; MpCollectionTBoneListDataModel::MpCollectionTBoneListDataModel(class MpMpxCollectionData *, class QObject *)
+ ?setContext@MpCollectionDataModel@@QAEXW4TCollectionContext@@@Z @ 67 NONAME ; void MpCollectionDataModel::setContext(enum TCollectionContext)
+ ?commitPlaybackInfo@MpSongData@@QAEXXZ @ 68 NONAME ; void MpSongData::commitPlaybackInfo(void)
+ ?sampleRate@MpSongData@@QBE?AVQString@@XZ @ 69 NONAME ; class QString MpSongData::sampleRate(void) const
+ ?playbackStateChanged@MpPlaybackData@@IAEXXZ @ 70 NONAME ; void MpPlaybackData::playbackStateChanged(void)
+ ?copyright@MpSongData@@QBE?AVQString@@XZ @ 71 NONAME ; class QString MpSongData::copyright(void) const
+ ?duration@MpPlaybackData@@QBEHXZ @ 72 NONAME ; int MpPlaybackData::duration(void) const
+ ?genre@MpSongData@@QBE?AVQString@@XZ @ 73 NONAME ; class QString MpSongData::genre(void) const
+ ?setMimeType@MpSongData@@QAE_NABVQString@@@Z @ 74 NONAME ; bool MpSongData::setMimeType(class QString const &)
+ ?getStaticMetaObject@MpCollectionDataModel@@SAABUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const & MpCollectionDataModel::getStaticMetaObject(void)
+ ?setSampleRate@MpSongData@@QAE_NH@Z @ 76 NONAME ; bool MpSongData::setSampleRate(int)
+ ?setDuration@MpPlaybackData@@QAEXH@Z @ 77 NONAME ; void MpPlaybackData::setDuration(int)
+ ?albumDataChanged@MpMpxCollectionData@@IAEXXZ @ 78 NONAME ; void MpMpxCollectionData::albumDataChanged(void)
+ ?setMusicURL@MpSongData@@QAE_NABVQString@@@Z @ 79 NONAME ; bool MpSongData::setMusicURL(class QString const &)
+ ??0MpSongData@@QAE@PAVQObject@@@Z @ 80 NONAME ; MpSongData::MpSongData(class QObject *)
+ ?setComment@MpSongData@@QAE_NABVQString@@@Z @ 81 NONAME ; bool MpSongData::setComment(class QString const &)
+ ?uri@MpPlaybackData@@QBEABVQString@@XZ @ 82 NONAME ; class QString const & MpPlaybackData::uri(void) const
+ ?albumArtReady@MpSongData@@IAEXXZ @ 83 NONAME ; void MpSongData::albumArtReady(void)
+ ?rowCount@MpCollectionDataModel@@UBEHABVQModelIndex@@@Z @ 84 NONAME ; int MpCollectionDataModel::rowCount(class QModelIndex const &) const
+ ?trUtf8@MpPlaybackData@@SA?AVQString@@PBD0H@Z @ 85 NONAME ; class QString MpPlaybackData::trUtf8(char const *, char const *, int)
+ ?thumbnailReady@MpPlaybackData@@QAEXABVQPixmap@@PAXHH@Z @ 86 NONAME ; void MpPlaybackData::thumbnailReady(class QPixmap const &, void *, int, int)
+ ?staticMetaObject@MpMpxCollectionData@@2UQMetaObject@@B @ 87 NONAME ; struct QMetaObject const MpMpxCollectionData::staticMetaObject
+ ?tr@MpPlaybackData@@SA?AVQString@@PBD0H@Z @ 88 NONAME ; class QString MpPlaybackData::tr(char const *, char const *, int)
+ ?modified@MpSongData@@QBE?AVQString@@XZ @ 89 NONAME ; class QString MpSongData::modified(void) const
+ ?setRealAudio@MpPlaybackData@@QAE_N_N@Z @ 90 NONAME ; bool MpPlaybackData::setRealAudio(bool)
+ ?qt_metacall@MpMpxCollectionData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 91 NONAME ; int MpMpxCollectionData::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?albumArtReady@MpPlaybackData@@IAEXXZ @ 92 NONAME ; void MpPlaybackData::albumArtReady(void)
+ ?setAlbumTrack@MpSongData@@QAE_NABVQString@@@Z @ 93 NONAME ; bool MpSongData::setAlbumTrack(class QString const &)
+ ?album@MpPlaybackData@@QBEABVQString@@XZ @ 94 NONAME ; class QString const & MpPlaybackData::album(void) const
+ ?albumSongsCount@MpMpxCollectionData@@QBEHXZ @ 95 NONAME ; int MpMpxCollectionData::albumSongsCount(void) const
+ ?count@MpMpxCollectionData@@QBEHXZ @ 96 NONAME ; int MpMpxCollectionData::count(void) const
+ ?setAlbumArtUri@MpSongData@@QAEXABVQString@@@Z @ 97 NONAME ; void MpSongData::setAlbumArtUri(class QString const &)
+ ??1MpSongData@@UAE@XZ @ 98 NONAME ; MpSongData::~MpSongData(void)
+ ?dataReloaded@MpCollectionDataModel@@IAEXXZ @ 99 NONAME ; void MpCollectionDataModel::dataReloaded(void)
+ ?testCachedItem@MpMpxCollectionData@@QAE_NH@Z @ 100 NONAME ; bool MpMpxCollectionData::testCachedItem(int)
+ ?tr@MpCollectionDataModel@@SA?AVQString@@PBD0@Z @ 101 NONAME ; class QString MpCollectionDataModel::tr(char const *, char const *)
+ ?setTitle@MpPlaybackData@@QAE_NABVQString@@@Z @ 102 NONAME ; bool MpPlaybackData::setTitle(class QString const &)
+ ?getStaticMetaObject@MpCollectionTBoneListDataModel@@SAABUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const & MpCollectionTBoneListDataModel::getStaticMetaObject(void)
+ ?trUtf8@MpCollectionDataModel@@SA?AVQString@@PBD0@Z @ 104 NONAME ; class QString MpCollectionDataModel::trUtf8(char const *, char const *)
+ ?setTitle@MpSongData@@QAE_NABVQString@@@Z @ 105 NONAME ; bool MpSongData::setTitle(class QString const &)
+ ?musicURL@MpSongData@@QBE?AVQString@@XZ @ 106 NONAME ; class QString MpSongData::musicURL(void) const
+ ?realAudio@MpPlaybackData@@QAE_NXZ @ 107 NONAME ; bool MpPlaybackData::realAudio(void)
+ ?staticMetaObject@MpCollectionDataModel@@2UQMetaObject@@B @ 108 NONAME ; struct QMetaObject const MpCollectionDataModel::staticMetaObject
+ ?rowCount@MpCollectionTBoneListDataModel@@UBEHABVQModelIndex@@@Z @ 109 NONAME ; int MpCollectionTBoneListDataModel::rowCount(class QModelIndex const &) const
+ ?dataChanged@MpMpxCollectionData@@IAEXXZ @ 110 NONAME ; void MpMpxCollectionData::dataChanged(void)
+ ?trUtf8@MpCollectionTBoneListDataModel@@SA?AVQString@@PBD0H@Z @ 111 NONAME ; class QString MpCollectionTBoneListDataModel::trUtf8(char const *, char const *, int)
+ ?getStaticMetaObject@MpSongData@@SAABUQMetaObject@@XZ @ 112 NONAME ; struct QMetaObject const & MpSongData::getStaticMetaObject(void)
+ ?songDetailInfoChanged@MpSongData@@IAEXXZ @ 113 NONAME ; void MpSongData::songDetailInfoChanged(void)
+ ?mimeTypes@MpCollectionDataModel@@UBE?AVQStringList@@XZ @ 114 NONAME ; class QStringList MpCollectionDataModel::mimeTypes(void) const
+ ?albumArt@MpSongData@@QBEXAAVHbIcon@@@Z @ 115 NONAME ; void MpSongData::albumArt(class HbIcon &) const
+ ?isDrmProtected@MpSongData@@QBE_NXZ @ 116 NONAME ; bool MpSongData::isDrmProtected(void) const
+ ?collectionTitle@MpMpxCollectionData@@QBE?AVQString@@XZ @ 117 NONAME ; class QString MpMpxCollectionData::collectionTitle(void) const
+ ?albumTrack@MpSongData@@QBE?AVQString@@XZ @ 118 NONAME ; class QString MpSongData::albumTrack(void) const
+ ?setArtist@MpSongData@@QAE_NABVQString@@@Z @ 119 NONAME ; bool MpSongData::setArtist(class QString const &)
+ ?tr@MpPlaybackData@@SA?AVQString@@PBD0@Z @ 120 NONAME ; class QString MpPlaybackData::tr(char const *, char const *)
+ ?setYear@MpSongData@@QAE_NH@Z @ 121 NONAME ; bool MpSongData::setYear(int)
+ ?qt_metacall@MpPlaybackData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 122 NONAME ; int MpPlaybackData::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?albumSongData@MpMpxCollectionData@@QBE?AVQString@@HW4DataType@1@@Z @ 123 NONAME ; class QString MpMpxCollectionData::albumSongData(int, enum MpMpxCollectionData::DataType) const
+ ?playbackInfoChanged@MpSongData@@IAEXXZ @ 124 NONAME ; void MpSongData::playbackInfoChanged(void)
+ ?insertCachedItem@MpMpxCollectionData@@QAEXH@Z @ 125 NONAME ; void MpMpxCollectionData::insertCachedItem(int)
+ ?setComposer@MpSongData@@QAE_NABVQString@@@Z @ 126 NONAME ; bool MpSongData::setComposer(class QString const &)
+ ?setAlbumContent@MpMpxCollectionData@@QAEXABVCMPXMedia@@@Z @ 127 NONAME ; void MpMpxCollectionData::setAlbumContent(class CMPXMedia const &)
+ ??0MpMpxCollectionData@@QAE@PAVQObject@@@Z @ 128 NONAME ; MpMpxCollectionData::MpMpxCollectionData(class QObject *)
+ ?setArtist@MpPlaybackData@@QAE_NABVQString@@@Z @ 129 NONAME ; bool MpPlaybackData::setArtist(class QString const &)
+ ?trUtf8@MpSongData@@SA?AVQString@@PBD0@Z @ 130 NONAME ; class QString MpSongData::trUtf8(char const *, char const *)
+ ?albumId@MpPlaybackData@@QAEHXZ @ 131 NONAME ; int MpPlaybackData::albumId(void)
+ ??1MpMpxCollectionData@@UAE@XZ @ 132 NONAME ; MpMpxCollectionData::~MpMpxCollectionData(void)
+ ??0MpPlaybackData@@QAE@PAVQObject@@@Z @ 133 NONAME ; MpPlaybackData::MpPlaybackData(class QObject *)
+ ?trUtf8@MpCollectionDataModel@@SA?AVQString@@PBD0H@Z @ 134 NONAME ; class QString MpCollectionDataModel::trUtf8(char const *, char const *, int)
+ ?metaObject@MpMpxCollectionData@@UBEPBUQMetaObject@@XZ @ 135 NONAME ; struct QMetaObject const * MpMpxCollectionData::metaObject(void) const
+ ?qt_metacast@MpMpxCollectionData@@UAEPAXPBD@Z @ 136 NONAME ; void * MpMpxCollectionData::qt_metacast(char const *)
+ ?qt_metacast@MpPlaybackData@@UAEPAXPBD@Z @ 137 NONAME ; void * MpPlaybackData::qt_metacast(char const *)
+ ?size@MpSongData@@QBE?AVQString@@XZ @ 138 NONAME ; class QString MpSongData::size(void) const
+ ??_EMpSongData@@UAE@I@Z @ 139 NONAME ; MpSongData::~MpSongData(unsigned int)
+ ?containerId@MpMpxCollectionData@@QAEHXZ @ 140 NONAME ; int MpMpxCollectionData::containerId(void)
+ ?containerMedia@MpMpxCollectionData@@QAEABVCMPXMedia@@XZ @ 141 NONAME ; class CMPXMedia const & MpMpxCollectionData::containerMedia(void)
+ ?setDuration@MpSongData@@QAE_NH@Z @ 142 NONAME ; bool MpSongData::setDuration(int)
+ ??_EMpCollectionTBoneListDataModel@@UAE@I@Z @ 143 NONAME ; MpCollectionTBoneListDataModel::~MpCollectionTBoneListDataModel(unsigned int)
+ ??1MpCollectionDataModel@@UAE@XZ @ 144 NONAME ; MpCollectionDataModel::~MpCollectionDataModel(void)
+ ?setSize@MpSongData@@QAE_NH@Z @ 145 NONAME ; bool MpSongData::setSize(int)
+ ?thumbnailReady@MpSongData@@QAEXABVQPixmap@@PAXHH@Z @ 146 NONAME ; void MpSongData::thumbnailReady(class QPixmap const &, void *, int, int)
+ ?tr@MpCollectionDataModel@@SA?AVQString@@PBD0H@Z @ 147 NONAME ; class QString MpCollectionDataModel::tr(char const *, char const *, int)
+ ?reloadData@MpCollectionDataModel@@QAEXXZ @ 148 NONAME ; void MpCollectionDataModel::reloadData(void)
+ ?commitSongDetailInfo@MpSongData@@QAEXXZ @ 149 NONAME ; void MpSongData::commitSongDetailInfo(void)
+ ??1MpCollectionTBoneListDataModel@@UAE@XZ @ 150 NONAME ; MpCollectionTBoneListDataModel::~MpCollectionTBoneListDataModel(void)
+ ?qt_metacall@MpSongData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 151 NONAME ; int MpSongData::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?reservedLength@MpSongData@@QBEHXZ @ 152 NONAME ; int MpSongData::reservedLength(void) const
+ ?collectionData@MpCollectionDataModel@@QAEPAVMpMpxCollectionData@@XZ @ 153 NONAME ; class MpMpxCollectionData * MpCollectionDataModel::collectionData(void)
+ ?trUtf8@MpMpxCollectionData@@SA?AVQString@@PBD0@Z @ 154 NONAME ; class QString MpMpxCollectionData::trUtf8(char const *, char const *)
+ ?setPosition@MpPlaybackData@@QAEXH@Z @ 155 NONAME ; void MpPlaybackData::setPosition(int)
+ ??1MpPlaybackData@@UAE@XZ @ 156 NONAME ; MpPlaybackData::~MpPlaybackData(void)
+ ?tr@MpSongData@@SA?AVQString@@PBD0@Z @ 157 NONAME ; class QString MpSongData::tr(char const *, char const *)
+ ?setPlaybackState@MpPlaybackData@@QAEXW4SimplifiedState@1@@Z @ 158 NONAME ; void MpPlaybackData::setPlaybackState(enum MpPlaybackData::SimplifiedState)
+ ?refreshAlbumSongs@MpMpxCollectionData@@IAEXXZ @ 159 NONAME ; void MpMpxCollectionData::refreshAlbumSongs(void)
+ ?trUtf8@MpPlaybackData@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString MpPlaybackData::trUtf8(char const *, char const *)
+ ?albumDataChanged@MpCollectionTBoneListDataModel@@IAEXXZ @ 161 NONAME ; void MpCollectionTBoneListDataModel::albumDataChanged(void)
+ ?comment@MpSongData@@QBE?AVQString@@XZ @ 162 NONAME ; class QString MpSongData::comment(void) const
+ ?year@MpSongData@@QBE?AVQString@@XZ @ 163 NONAME ; class QString MpSongData::year(void) const
+ ?data@MpCollectionTBoneListDataModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 164 NONAME ; class QVariant MpCollectionTBoneListDataModel::data(class QModelIndex const &, int) const
+ ?setAlbum@MpSongData@@QAE_NABVQString@@@Z @ 165 NONAME ; bool MpSongData::setAlbum(class QString const &)
+ ?getStaticMetaObject@MpPlaybackData@@SAABUQMetaObject@@XZ @ 166 NONAME ; struct QMetaObject const & MpPlaybackData::getStaticMetaObject(void)
+ ?composer@MpSongData@@QBE?AVQString@@XZ @ 167 NONAME ; class QString MpSongData::composer(void) const
+ ?albumArt@MpPlaybackData@@QBEXAAVHbIcon@@@Z @ 168 NONAME ; void MpPlaybackData::albumArt(class HbIcon &) const
+ ?commitPlaybackInfo@MpPlaybackData@@QAEXXZ @ 169 NONAME ; void MpPlaybackData::commitPlaybackInfo(void)
+ ?removeRows@MpCollectionDataModel@@UAE_NHHABVQModelIndex@@@Z @ 170 NONAME ; bool MpCollectionDataModel::removeRows(int, int, class QModelIndex const &)
+ ?id@MpPlaybackData@@QAEHXZ @ 171 NONAME ; int MpPlaybackData::id(void)
+ ?album@MpSongData@@QBE?AVQString@@XZ @ 172 NONAME ; class QString MpSongData::album(void) const
+ ?albumArtBase64@MpSongData@@QBE?AVQString@@XZ @ 173 NONAME ; class QString MpSongData::albumArtBase64(void) const
+ ?playbackInfoChanged@MpPlaybackData@@IAEXXZ @ 174 NONAME ; void MpPlaybackData::playbackInfoChanged(void)
+ ?itemData@MpMpxCollectionData@@QBE?AVQString@@HW4DataType@1@@Z @ 175 NONAME ; class QString MpMpxCollectionData::itemData(int, enum MpMpxCollectionData::DataType) const
+ ?link@MpSongData@@QBE?AVQString@@XZ @ 176 NONAME ; class QString MpSongData::link(void) const
+ ?trUtf8@MpCollectionTBoneListDataModel@@SA?AVQString@@PBD0@Z @ 177 NONAME ; class QString MpCollectionTBoneListDataModel::trUtf8(char const *, char const *)
+ ?setId@MpPlaybackData@@QAE_NH@Z @ 178 NONAME ; bool MpPlaybackData::setId(int)
+ ?metaObject@MpCollectionDataModel@@UBEPBUQMetaObject@@XZ @ 179 NONAME ; struct QMetaObject const * MpCollectionDataModel::metaObject(void) const
+ ?metaObject@MpSongData@@UBEPBUQMetaObject@@XZ @ 180 NONAME ; struct QMetaObject const * MpSongData::metaObject(void) const
diff -r 2c5162224003 -r fdb31ab341af mpdata/eabi/mpdatau.def
--- a/mpdata/eabi/mpdatau.def Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/eabi/mpdatau.def Fri May 14 18:54:37 2010 -0500
@@ -1,87 +1,181 @@
EXPORTS
- _ZN14MpPlaybackData11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
- _ZN14MpPlaybackData11qt_metacastEPKc @ 2 NONAME
- _ZN14MpPlaybackData11setDurationEi @ 3 NONAME
- _ZN14MpPlaybackData11setPositionEi @ 4 NONAME
- _ZN14MpPlaybackData13albumArtReadyEv @ 5 NONAME
- _ZN14MpPlaybackData14setAlbumArtUriERK7QString @ 6 NONAME
- _ZN14MpPlaybackData14thumbnailReadyERK7QPixmapPvii @ 7 NONAME
- _ZN14MpPlaybackData15durationChangedEv @ 8 NONAME
- _ZN14MpPlaybackData15positionChangedEv @ 9 NONAME
- _ZN14MpPlaybackData16setPlaybackStateENS_15SimplifiedStateE @ 10 NONAME
- _ZN14MpPlaybackData16staticMetaObjectE @ 11 NONAME DATA 16
- _ZN14MpPlaybackData18commitPlaybackInfoEv @ 12 NONAME
- _ZN14MpPlaybackData19getStaticMetaObjectEv @ 13 NONAME
- _ZN14MpPlaybackData19playbackInfoChangedEv @ 14 NONAME
- _ZN14MpPlaybackData20playbackStateChangedEv @ 15 NONAME
- _ZN14MpPlaybackData6setUriERK7QString @ 16 NONAME
- _ZN14MpPlaybackData8setAlbumERK7QString @ 17 NONAME
- _ZN14MpPlaybackData8setTitleERK7QString @ 18 NONAME
- _ZN14MpPlaybackData9setArtistERK7QString @ 19 NONAME
- _ZN14MpPlaybackDataC1EP7QObject @ 20 NONAME
- _ZN14MpPlaybackDataC2EP7QObject @ 21 NONAME
- _ZN14MpPlaybackDataD0Ev @ 22 NONAME
- _ZN14MpPlaybackDataD1Ev @ 23 NONAME
- _ZN14MpPlaybackDataD2Ev @ 24 NONAME
- _ZN19MpMpxCollectionData10removeItemEi @ 25 NONAME
- _ZN19MpMpxCollectionData11containerIdEv @ 26 NONAME
- _ZN19MpMpxCollectionData11qt_metacallEN11QMetaObject4CallEiPPv @ 27 NONAME
- _ZN19MpMpxCollectionData11qt_metacastEPKc @ 28 NONAME
- _ZN19MpMpxCollectionData11setMpxMediaERK9CMPXMedia @ 29 NONAME
- _ZN19MpMpxCollectionData14containerMediaEv @ 30 NONAME
- _ZN19MpMpxCollectionData14contextChangedE18TCollectionContext @ 31 NONAME
- _ZN19MpMpxCollectionData14isAutoPlaylistEi @ 32 NONAME
- _ZN19MpMpxCollectionData14isAutoPlaylistEv @ 33 NONAME
- _ZN19MpMpxCollectionData14testCachedItemEi @ 34 NONAME
- _ZN19MpMpxCollectionData16insertCachedItemEi @ 35 NONAME
- _ZN19MpMpxCollectionData16staticMetaObjectE @ 36 NONAME DATA 16
- _ZN19MpMpxCollectionData19getStaticMetaObjectEv @ 37 NONAME
- _ZN19MpMpxCollectionData6itemIdEi @ 38 NONAME
- _ZN19MpMpxCollectionData9itemCountEi @ 39 NONAME
- _ZN19MpMpxCollectionDataC1EP7QObject @ 40 NONAME
- _ZN19MpMpxCollectionDataC2EP7QObject @ 41 NONAME
- _ZN19MpMpxCollectionDataD0Ev @ 42 NONAME
- _ZN19MpMpxCollectionDataD1Ev @ 43 NONAME
- _ZN19MpMpxCollectionDataD2Ev @ 44 NONAME
- _ZN21MpCollectionDataModel10removeRowsEiiRK11QModelIndex @ 45 NONAME
- _ZN21MpCollectionDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 46 NONAME
- _ZN21MpCollectionDataModel11qt_metacastEPKc @ 47 NONAME
- _ZN21MpCollectionDataModel12dropMimeDataEPK9QMimeDataN2Qt10DropActionEiiRK11QModelIndex @ 48 NONAME
- _ZN21MpCollectionDataModel12orderChangedEiiii @ 49 NONAME
- _ZN21MpCollectionDataModel12refreshModelEv @ 50 NONAME
- _ZN21MpCollectionDataModel14collectionDataEv @ 51 NONAME
- _ZN21MpCollectionDataModel14updateAlbumArtEi @ 52 NONAME
- _ZN21MpCollectionDataModel16staticMetaObjectE @ 53 NONAME DATA 16
- _ZN21MpCollectionDataModel19getStaticMetaObjectEv @ 54 NONAME
- _ZN21MpCollectionDataModelC1EP19MpMpxCollectionDataP7QObject @ 55 NONAME
- _ZN21MpCollectionDataModelC2EP19MpMpxCollectionDataP7QObject @ 56 NONAME
- _ZN21MpCollectionDataModelD0Ev @ 57 NONAME
- _ZN21MpCollectionDataModelD1Ev @ 58 NONAME
- _ZN21MpCollectionDataModelD2Ev @ 59 NONAME
- _ZNK14MpPlaybackData10metaObjectEv @ 60 NONAME
- _ZNK14MpPlaybackData13playbackStateEv @ 61 NONAME
- _ZNK14MpPlaybackData3uriEv @ 62 NONAME
- _ZNK14MpPlaybackData5albumEv @ 63 NONAME
- _ZNK14MpPlaybackData5titleEv @ 64 NONAME
- _ZNK14MpPlaybackData6artistEv @ 65 NONAME
- _ZNK14MpPlaybackData8albumArtER6HbIcon @ 66 NONAME
- _ZNK14MpPlaybackData8durationEv @ 67 NONAME
- _ZNK14MpPlaybackData8positionEv @ 68 NONAME
- _ZNK19MpMpxCollectionData10metaObjectEv @ 69 NONAME
- _ZNK19MpMpxCollectionData15collectionTitleEv @ 70 NONAME
- _ZNK19MpMpxCollectionData5countEv @ 71 NONAME
- _ZNK19MpMpxCollectionData7contextEv @ 72 NONAME
- _ZNK19MpMpxCollectionData8itemDataEiNS_8DataTypeE @ 73 NONAME
- _ZNK21MpCollectionDataModel10metaObjectEv @ 74 NONAME
- _ZNK21MpCollectionDataModel20supportedDropActionsEv @ 75 NONAME
- _ZNK21MpCollectionDataModel4dataERK11QModelIndexi @ 76 NONAME
- _ZNK21MpCollectionDataModel8mimeDataERK5QListI11QModelIndexE @ 77 NONAME
- _ZNK21MpCollectionDataModel8rowCountERK11QModelIndex @ 78 NONAME
- _ZNK21MpCollectionDataModel9mimeTypesEv @ 79 NONAME
- _ZTI14MpPlaybackData @ 80 NONAME
- _ZTI19MpMpxCollectionData @ 81 NONAME
- _ZTI21MpCollectionDataModel @ 82 NONAME
- _ZTV14MpPlaybackData @ 83 NONAME
- _ZTV19MpMpxCollectionData @ 84 NONAME
- _ZTV21MpCollectionDataModel @ 85 NONAME
+ _ZN10MpSongData10setBitRateEi @ 1 NONAME
+ _ZN10MpSongData10setCommentERK7QString @ 2 NONAME
+ _ZN10MpSongData11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+ _ZN10MpSongData11qt_metacastEPKc @ 4 NONAME
+ _ZN10MpSongData11setComposerERK7QString @ 5 NONAME
+ _ZN10MpSongData11setDurationEi @ 6 NONAME
+ _ZN10MpSongData11setFileNameERK7QString @ 7 NONAME
+ _ZN10MpSongData11setMimeTypeERK7QString @ 8 NONAME
+ _ZN10MpSongData11setModifiedERK7QString @ 9 NONAME
+ _ZN10MpSongData11setMusicURLERK7QString @ 10 NONAME
+ _ZN10MpSongData12setCopyrightERK7QString @ 11 NONAME
+ _ZN10MpSongData13albumArtReadyEv @ 12 NONAME
+ _ZN10MpSongData13setAlbumTrackERK7QString @ 13 NONAME
+ _ZN10MpSongData13setSampleRateEi @ 14 NONAME
+ _ZN10MpSongData14setAlbumArtUriERK7QString @ 15 NONAME
+ _ZN10MpSongData14thumbnailReadyERK7QPixmapPvii @ 16 NONAME
+ _ZN10MpSongData15setDrmProtectedEb @ 17 NONAME
+ _ZN10MpSongData16staticMetaObjectE @ 18 NONAME DATA 16
+ _ZN10MpSongData18commitPlaybackInfoEv @ 19 NONAME
+ _ZN10MpSongData19getStaticMetaObjectEv @ 20 NONAME
+ _ZN10MpSongData19playbackInfoChangedEv @ 21 NONAME
+ _ZN10MpSongData20commitSongDetailInfoEv @ 22 NONAME
+ _ZN10MpSongData21songDetailInfoChangedEv @ 23 NONAME
+ _ZN10MpSongData7setLinkERK7QString @ 24 NONAME
+ _ZN10MpSongData7setSizeEi @ 25 NONAME
+ _ZN10MpSongData7setYearEi @ 26 NONAME
+ _ZN10MpSongData8setAlbumERK7QString @ 27 NONAME
+ _ZN10MpSongData8setGenreERK7QString @ 28 NONAME
+ _ZN10MpSongData8setTitleERK7QString @ 29 NONAME
+ _ZN10MpSongData9setArtistERK7QString @ 30 NONAME
+ _ZN10MpSongDataC1EP7QObject @ 31 NONAME
+ _ZN10MpSongDataC2EP7QObject @ 32 NONAME
+ _ZN10MpSongDataD0Ev @ 33 NONAME
+ _ZN10MpSongDataD1Ev @ 34 NONAME
+ _ZN10MpSongDataD2Ev @ 35 NONAME
+ _ZN14MpPlaybackData10setAlbumIdEi @ 36 NONAME
+ _ZN14MpPlaybackData11qt_metacallEN11QMetaObject4CallEiPPv @ 37 NONAME
+ _ZN14MpPlaybackData11qt_metacastEPKc @ 38 NONAME
+ _ZN14MpPlaybackData11setDurationEi @ 39 NONAME
+ _ZN14MpPlaybackData11setPositionEi @ 40 NONAME
+ _ZN14MpPlaybackData12setRealAudioEb @ 41 NONAME
+ _ZN14MpPlaybackData13albumArtReadyEv @ 42 NONAME
+ _ZN14MpPlaybackData14setAlbumArtUriERK7QString @ 43 NONAME
+ _ZN14MpPlaybackData14thumbnailReadyERK7QPixmapPvii @ 44 NONAME
+ _ZN14MpPlaybackData15durationChangedEv @ 45 NONAME
+ _ZN14MpPlaybackData15positionChangedEv @ 46 NONAME
+ _ZN14MpPlaybackData16setPlaybackStateENS_15SimplifiedStateE @ 47 NONAME
+ _ZN14MpPlaybackData16staticMetaObjectE @ 48 NONAME DATA 16
+ _ZN14MpPlaybackData18commitPlaybackInfoEv @ 49 NONAME
+ _ZN14MpPlaybackData19getStaticMetaObjectEv @ 50 NONAME
+ _ZN14MpPlaybackData19playbackInfoChangedEv @ 51 NONAME
+ _ZN14MpPlaybackData20playbackStateChangedEv @ 52 NONAME
+ _ZN14MpPlaybackData2idEv @ 53 NONAME
+ _ZN14MpPlaybackData5setIdEi @ 54 NONAME
+ _ZN14MpPlaybackData6setUriERK7QString @ 55 NONAME
+ _ZN14MpPlaybackData7albumIdEv @ 56 NONAME
+ _ZN14MpPlaybackData8setAlbumERK7QString @ 57 NONAME
+ _ZN14MpPlaybackData8setTitleERK7QString @ 58 NONAME
+ _ZN14MpPlaybackData9realAudioEv @ 59 NONAME
+ _ZN14MpPlaybackData9setArtistERK7QString @ 60 NONAME
+ _ZN14MpPlaybackDataC1EP7QObject @ 61 NONAME
+ _ZN14MpPlaybackDataC2EP7QObject @ 62 NONAME
+ _ZN14MpPlaybackDataD0Ev @ 63 NONAME
+ _ZN14MpPlaybackDataD1Ev @ 64 NONAME
+ _ZN14MpPlaybackDataD2Ev @ 65 NONAME
+ _ZN19MpMpxCollectionData10removeItemEi @ 66 NONAME
+ _ZN19MpMpxCollectionData10setContextE18TCollectionContext @ 67 NONAME
+ _ZN19MpMpxCollectionData11containerIdEv @ 68 NONAME
+ _ZN19MpMpxCollectionData11dataChangedEv @ 69 NONAME
+ _ZN19MpMpxCollectionData11qt_metacallEN11QMetaObject4CallEiPPv @ 70 NONAME
+ _ZN19MpMpxCollectionData11qt_metacastEPKc @ 71 NONAME
+ _ZN19MpMpxCollectionData11setMpxMediaERK9CMPXMediab @ 72 NONAME
+ _ZN19MpMpxCollectionData14containerMediaEv @ 73 NONAME
+ _ZN19MpMpxCollectionData14contextChangedE18TCollectionContext @ 74 NONAME
+ _ZN19MpMpxCollectionData14isAutoPlaylistEi @ 75 NONAME
+ _ZN19MpMpxCollectionData14isAutoPlaylistEv @ 76 NONAME
+ _ZN19MpMpxCollectionData14testCachedItemEi @ 77 NONAME
+ _ZN19MpMpxCollectionData15setAlbumContentERK9CMPXMedia @ 78 NONAME
+ _ZN19MpMpxCollectionData15setCurrentAlbumEi @ 79 NONAME
+ _ZN19MpMpxCollectionData16albumDataChangedEv @ 80 NONAME
+ _ZN19MpMpxCollectionData16insertCachedItemEi @ 81 NONAME
+ _ZN19MpMpxCollectionData16staticMetaObjectE @ 82 NONAME DATA 16
+ _ZN19MpMpxCollectionData17refreshAlbumSongsEv @ 83 NONAME
+ _ZN19MpMpxCollectionData19getStaticMetaObjectEv @ 84 NONAME
+ _ZN19MpMpxCollectionData6itemIdEi @ 85 NONAME
+ _ZN19MpMpxCollectionData9itemCountEi @ 86 NONAME
+ _ZN19MpMpxCollectionData9itemIndexEi @ 87 NONAME
+ _ZN19MpMpxCollectionDataC1EP7QObject @ 88 NONAME
+ _ZN19MpMpxCollectionDataC2EP7QObject @ 89 NONAME
+ _ZN19MpMpxCollectionDataD0Ev @ 90 NONAME
+ _ZN19MpMpxCollectionDataD1Ev @ 91 NONAME
+ _ZN19MpMpxCollectionDataD2Ev @ 92 NONAME
+ _ZN21MpCollectionDataModel10reloadDataEv @ 93 NONAME
+ _ZN21MpCollectionDataModel10removeRowsEiiRK11QModelIndex @ 94 NONAME
+ _ZN21MpCollectionDataModel10setContextE18TCollectionContext @ 95 NONAME
+ _ZN21MpCollectionDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 96 NONAME
+ _ZN21MpCollectionDataModel11qt_metacastEPKc @ 97 NONAME
+ _ZN21MpCollectionDataModel12dataReloadedEv @ 98 NONAME
+ _ZN21MpCollectionDataModel12dropMimeDataEPK9QMimeDataN2Qt10DropActionEiiRK11QModelIndex @ 99 NONAME
+ _ZN21MpCollectionDataModel12orderChangedEiiii @ 100 NONAME
+ _ZN21MpCollectionDataModel12refreshModelEv @ 101 NONAME
+ _ZN21MpCollectionDataModel14collectionDataEv @ 102 NONAME
+ _ZN21MpCollectionDataModel14updateAlbumArtEi @ 103 NONAME
+ _ZN21MpCollectionDataModel16staticMetaObjectE @ 104 NONAME DATA 16
+ _ZN21MpCollectionDataModel19getStaticMetaObjectEv @ 105 NONAME
+ _ZN21MpCollectionDataModelC1EP19MpMpxCollectionDataP7QObject @ 106 NONAME
+ _ZN21MpCollectionDataModelC2EP19MpMpxCollectionDataP7QObject @ 107 NONAME
+ _ZN21MpCollectionDataModelD0Ev @ 108 NONAME
+ _ZN21MpCollectionDataModelD1Ev @ 109 NONAME
+ _ZN21MpCollectionDataModelD2Ev @ 110 NONAME
+ _ZN30MpCollectionTBoneListDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 111 NONAME
+ _ZN30MpCollectionTBoneListDataModel11qt_metacastEPKc @ 112 NONAME
+ _ZN30MpCollectionTBoneListDataModel12refreshModelEv @ 113 NONAME
+ _ZN30MpCollectionTBoneListDataModel16albumDataChangedEv @ 114 NONAME
+ _ZN30MpCollectionTBoneListDataModel16staticMetaObjectE @ 115 NONAME DATA 16
+ _ZN30MpCollectionTBoneListDataModel19getStaticMetaObjectEv @ 116 NONAME
+ _ZN30MpCollectionTBoneListDataModelC1EP19MpMpxCollectionDataP7QObject @ 117 NONAME
+ _ZN30MpCollectionTBoneListDataModelC2EP19MpMpxCollectionDataP7QObject @ 118 NONAME
+ _ZN30MpCollectionTBoneListDataModelD0Ev @ 119 NONAME
+ _ZN30MpCollectionTBoneListDataModelD1Ev @ 120 NONAME
+ _ZN30MpCollectionTBoneListDataModelD2Ev @ 121 NONAME
+ _ZNK10MpSongData10albumTrackEv @ 122 NONAME
+ _ZNK10MpSongData10metaObjectEv @ 123 NONAME
+ _ZNK10MpSongData10sampleRateEv @ 124 NONAME
+ _ZNK10MpSongData14albumArtBase64Ev @ 125 NONAME
+ _ZNK10MpSongData14isDrmProtectedEv @ 126 NONAME
+ _ZNK10MpSongData4linkEv @ 127 NONAME
+ _ZNK10MpSongData4sizeEv @ 128 NONAME
+ _ZNK10MpSongData4yearEv @ 129 NONAME
+ _ZNK10MpSongData5albumEv @ 130 NONAME
+ _ZNK10MpSongData5genreEv @ 131 NONAME
+ _ZNK10MpSongData5titleEv @ 132 NONAME
+ _ZNK10MpSongData6artistEv @ 133 NONAME
+ _ZNK10MpSongData7bitRateEv @ 134 NONAME
+ _ZNK10MpSongData7commentEv @ 135 NONAME
+ _ZNK10MpSongData8albumArtER6HbIcon @ 136 NONAME
+ _ZNK10MpSongData8composerEv @ 137 NONAME
+ _ZNK10MpSongData8durationEv @ 138 NONAME
+ _ZNK10MpSongData8fileNameEv @ 139 NONAME
+ _ZNK10MpSongData8mimeTypeEv @ 140 NONAME
+ _ZNK10MpSongData8modifiedEv @ 141 NONAME
+ _ZNK10MpSongData8musicURLEv @ 142 NONAME
+ _ZNK10MpSongData9copyrightEv @ 143 NONAME
+ _ZNK14MpPlaybackData10metaObjectEv @ 144 NONAME
+ _ZNK14MpPlaybackData13playbackStateEv @ 145 NONAME
+ _ZNK14MpPlaybackData3uriEv @ 146 NONAME
+ _ZNK14MpPlaybackData5albumEv @ 147 NONAME
+ _ZNK14MpPlaybackData5titleEv @ 148 NONAME
+ _ZNK14MpPlaybackData6artistEv @ 149 NONAME
+ _ZNK14MpPlaybackData8albumArtER6HbIcon @ 150 NONAME
+ _ZNK14MpPlaybackData8durationEv @ 151 NONAME
+ _ZNK14MpPlaybackData8positionEv @ 152 NONAME
+ _ZNK19MpMpxCollectionData10metaObjectEv @ 153 NONAME
+ _ZNK19MpMpxCollectionData13albumSongDataEiNS_8DataTypeE @ 154 NONAME
+ _ZNK19MpMpxCollectionData15albumSongsCountEv @ 155 NONAME
+ _ZNK19MpMpxCollectionData15collectionTitleEv @ 156 NONAME
+ _ZNK19MpMpxCollectionData17currentAlbumIndexEv @ 157 NONAME
+ _ZNK19MpMpxCollectionData5countEv @ 158 NONAME
+ _ZNK19MpMpxCollectionData7contextEv @ 159 NONAME
+ _ZNK19MpMpxCollectionData8itemDataEiNS_8DataTypeE @ 160 NONAME
+ _ZNK21MpCollectionDataModel10metaObjectEv @ 161 NONAME
+ _ZNK21MpCollectionDataModel20supportedDropActionsEv @ 162 NONAME
+ _ZNK21MpCollectionDataModel4dataERK11QModelIndexi @ 163 NONAME
+ _ZNK21MpCollectionDataModel8mimeDataERK5QListI11QModelIndexE @ 164 NONAME
+ _ZNK21MpCollectionDataModel8rowCountERK11QModelIndex @ 165 NONAME
+ _ZNK21MpCollectionDataModel9mimeTypesEv @ 166 NONAME
+ _ZNK30MpCollectionTBoneListDataModel10metaObjectEv @ 167 NONAME
+ _ZNK30MpCollectionTBoneListDataModel4dataERK11QModelIndexi @ 168 NONAME
+ _ZNK30MpCollectionTBoneListDataModel8rowCountERK11QModelIndex @ 169 NONAME
+ _ZTI10MpSongData @ 170 NONAME
+ _ZTI14MpPlaybackData @ 171 NONAME
+ _ZTI19MpMpxCollectionData @ 172 NONAME
+ _ZTI21MpCollectionDataModel @ 173 NONAME
+ _ZTI30MpCollectionTBoneListDataModel @ 174 NONAME
+ _ZTV10MpSongData @ 175 NONAME
+ _ZTV14MpPlaybackData @ 176 NONAME
+ _ZTV19MpMpxCollectionData @ 177 NONAME
+ _ZTV21MpCollectionDataModel @ 178 NONAME
+ _ZTV30MpCollectionTBoneListDataModel @ 179 NONAME
diff -r 2c5162224003 -r fdb31ab341af mpdata/inc/mpcollectionalbumartmanager.h
--- a/mpdata/inc/mpcollectionalbumartmanager.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/inc/mpcollectionalbumartmanager.h Fri May 14 18:54:37 2010 -0500
@@ -21,9 +21,12 @@
#include
#include
-#include
#include
+#include
+
+#include "mpcommondefs.h"
+
class MpMpxCollectionData;
class ThumbnailManager;
@@ -36,9 +39,11 @@
explicit MpCollectionAlbumArtManager( MpMpxCollectionData *data, QObject *parent=0 );
virtual ~MpCollectionAlbumArtManager();
- const QIcon* albumArt( int index );
+ const HbIcon albumArt( int index );
void cacheFirstScreen();
void cancel();
+ void setThumbnailSize( MpCommon::MpThumbType type );
+ void enableDefaultArt( bool enabled );
signals:
@@ -52,14 +57,15 @@
MpMpxCollectionData *mCollectionData;
ThumbnailManager *mThumbnailManager;
- QCache mImageCache;
+ QCache mImageCache;
bool mCachingInProgress;
- QIcon *mDefaultIcon;
+ HbIcon mDefaultIcon;
QList mRequestQueue;
bool mPendingRequest;
int mRequestId;
+ bool mDefaultArtEnabled;
};
diff -r 2c5162224003 -r fdb31ab341af mpdata/inc/mpmpxcollectiondata_p.h
--- a/mpdata/inc/mpmpxcollectiondata_p.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/inc/mpmpxcollectiondata_p.h Fri May 14 18:54:37 2010 -0500
@@ -20,6 +20,8 @@
#include
+#include
+
#include "mpmpxcollectiondata.h"
#include "mpmpxcollectionviewdefs.h"
@@ -49,8 +51,16 @@
bool testCachedItem( int itemId );
void insertCachedItem(int index);
- void setMpxMedia( const CMPXMedia& entries );
+ bool setCurrentAlbum( int index );
+ int currentAlbumIndex() const;
+ int albumSongsCount() const;
+ QString albumSongData( int index, MpMpxCollectionData::DataType type ) const;
+
+ void setMpxMedia( const CMPXMedia& entries, bool reopen );
const CMPXMedia& containerMedia();
+ void setContext( TCollectionContext context );
+ void setAlbumContent( const CMPXMedia& albumContent );
+ int itemIndex( int itemUniqueId );
private:
@@ -62,20 +72,27 @@
int DoGetItemIdL( int index );
void DoRemoveItemL( int index );
bool DoTestCachedItemL( int itemId );
-
+
+ bool DoSetCurrentAlbumL( int index );
+ void DoGetAlbumSongDataL( int index, MpMpxCollectionData::DataType type, QString& data ) const;
+
void SetCollectionContextL();
void DoSetMpxMediaL( const CMPXMedia& entries );
+ void DoSetAlbumContentL( const CMPXMedia& albumContent );
private:
MpMpxCollectionData *q_ptr;
+ TCollectionContext iContext;
+
CMPXMedia *iContainerMedia; // Owned
CMPXMediaArray *iMediaArray; // Not owned
+ CMPXMedia *iCachedRemovedItem; // Owned
- TCollectionContext iContext;
-
- CMPXMedia *iCachedRemovedItem; //Owned
+ int iCurrentAlbumIndex;
+ int iAlbumSongCount;
+ QHash albumIdIndexMapping;
};
diff -r 2c5162224003 -r fdb31ab341af mpdata/mpdata.pro
--- a/mpdata/mpdata.pro Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/mpdata.pro Fri May 14 18:54:37 2010 -0500
@@ -27,7 +27,8 @@
../inc
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-LIBS += -lmpxcommon.dll \
+LIBS += -lestor.dll \
+ -lmpxcommon.dll \
-lthumbnailmanagerqt.dll
symbian:TARGET.EPOCALLOWDLLDATA = 1
@@ -35,14 +36,18 @@
HEADERS += ../inc/mpmpxcollectiondata.h \
inc/mpmpxcollectiondata_p.h \
../inc/mpcollectiondatamodel.h \
- inc/mpcollectionalbumartmanager.h \
- ../inc/mpplaybackdata.h
+ ../inc/mpcollectiontbonelistdatamodel.h \
+ inc/mpcollectionalbumartmanager.h \
+ ../inc/mpplaybackdata.h \
+ ../inc/mpsongdata.h
SOURCES += src/mpmpxcollectiondata.cpp \
src/mpmpxcollectiondata_p.cpp \
src/mpcollectiondatamodel.cpp \
- src/mpcollectionalbumartmanager.cpp \
- src/mpplaybackdata.cpp
+ src/mpcollectiontbonelistdatamodel.cpp \
+ src/mpcollectionalbumartmanager.cpp \
+ src/mpplaybackdata.cpp \
+ src/mpsongdata.cpp
DEFINES += BUILD_MPDATA_LIB
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpcollectionalbumartmanager.cpp
--- a/mpdata/src/mpcollectionalbumartmanager.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/src/mpcollectionalbumartmanager.cpp Fri May 14 18:54:37 2010 -0500
@@ -57,26 +57,23 @@
Constructs the album art manager.
*/
MpCollectionAlbumArtManager::MpCollectionAlbumArtManager( MpMpxCollectionData *data, QObject *parent )
- : QObject(parent),
- mCollectionData(data),
- mThumbnailManager(0),
- mCachingInProgress(false),
- mDefaultIcon(0),
- mPendingRequest(false)
+ : QObject( parent ),
+ mCollectionData( data ),
+ mThumbnailManager( 0 ),
+ mCachingInProgress( false ),
+ mDefaultIcon( "qtg_large_music_album" ),
+ mPendingRequest( false ),
+ mDefaultArtEnabled( true )
{
TX_ENTRY
mThumbnailManager = new ThumbnailManager(this);
mThumbnailManager->setMode(ThumbnailManager::Default);
mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailSmall);
-
connect( mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)),
this, SLOT(thumbnailReady(QPixmap, void *, int, int)) );
mImageCache.setMaxCost(KMaxCacheSize);
- //TODO: Change to final resource when available
- HbIcon albumArt( "qtg_large_music" );
- mDefaultIcon = new QIcon( albumArt.qicon() );
TX_EXIT
}
@@ -88,7 +85,6 @@
TX_ENTRY
cancel();
delete mThumbnailManager;
- delete mDefaultIcon;
TX_EXIT
}
@@ -99,12 +95,17 @@
\sa signal albumArtReady
*/
-const QIcon* MpCollectionAlbumArtManager::albumArt( int index )
+const HbIcon MpCollectionAlbumArtManager::albumArt( int index )
{
TX_ENTRY_ARGS("index=" << index);
- QIcon *icon = mImageCache[index];
- if ( !icon ) {
- icon = mDefaultIcon;
+ HbIcon icon;
+ if ( mImageCache.contains( index ) ) {
+ icon = *mImageCache[index];
+ }
+ else {
+ if ( mDefaultArtEnabled ) {
+ icon = mDefaultIcon;
+ }
if ( !mRequestQueue.contains(index) ) {
// Icon was not found in cache. If the item has AlbumArtUri, request it
// through ThumbnailManager interface.
@@ -167,17 +168,50 @@
TX_EXIT
}
+
+/*!
+ changes the thumbnail size.
+
+ */
+void MpCollectionAlbumArtManager::setThumbnailSize(MpCommon::MpThumbType type)
+{
+ switch ( type ) {
+ case MpCommon::ListThumb:
+ mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailSmall);
+ break;
+ case MpCommon::TBoneThumb:
+ mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailMedium);
+ break;
+ case MpCommon::MediaWallThumb:
+ default:
+ mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
+ break;
+ }
+ cancel();
+}
+
+/*!
+ sets the Default art \a enabled.
+ */
+void MpCollectionAlbumArtManager::enableDefaultArt( bool enabled )
+{
+ mDefaultArtEnabled = enabled;
+}
+
/*!
Slot to be called when thumbnail bitmap generation or loading is complete.
*/
void MpCollectionAlbumArtManager::thumbnailReady( QPixmap pixmap, void *data, int id, int error )
{
- int index = reinterpret_cast(data);
+ int index = reinterpret_cast( data );
TX_ENTRY_ARGS("index=" << index << ", id=" << id << ", error=" << error);
if ( !error && id == mRequestId && !pixmap.isNull() ) {
// Find the index
- mImageCache.insert(index, new QIcon(pixmap));
- TX_LOG_ARGS("Album art ready for index=" << index);
+ HbIcon *tmpIconPtr = new HbIcon(pixmap);
+ //TODO:Enable This optimization for WK16
+ //tmpIconPtr->setFlags( HbIcon::NonThemeable );
+ mImageCache.insert( index, tmpIconPtr );
+ TX_LOG_ARGS( "Album art ready for index=" << index );
if ( !mCachingInProgress ) {
emit albumArtReady(index);
}
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpcollectiondatamodel.cpp
--- a/mpdata/src/mpcollectiondatamodel.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/src/mpcollectiondatamodel.cpp Fri May 14 18:54:37 2010 -0500
@@ -17,7 +17,7 @@
#include
#include
-#include
+#include
#include
#include
@@ -53,14 +53,26 @@
*/
/*!
+ \fn void dataReloaded()
+
+ This signal is emitted when there has been a changed in the data represented
+ by this model. This signal is emitted so that the view owning this model can
+ refresh the view. This can happen after operations like delete and several
+ playlist related operations (save, rearrange, remove).
+ */
+
+/*!
Constructs the collection data model.
*/
MpCollectionDataModel::MpCollectionDataModel( MpMpxCollectionData *data, QObject *parent )
: QAbstractListModel(parent),
mCollectionData(data),
- mRowCount(0)
+ mRowCount(0),
+ mAlbumIndexOffset(0)
{
TX_ENTRY
+ connect( mCollectionData, SIGNAL(contextChanged(TCollectionContext)), this, SLOT(setContext(TCollectionContext)) );
+ connect( mCollectionData, SIGNAL(dataChanged()), this, SLOT(reloadData()) );
mAlbumArtManager = new MpCollectionAlbumArtManager(mCollectionData);
connect( mAlbumArtManager, SIGNAL(albumArtReady(int)), this, SLOT(updateAlbumArt(int)) );
TX_EXIT
@@ -89,7 +101,7 @@
{
TX_LOG
Q_UNUSED(parent);
- return mRowCount;
+ return mRowCount - mAlbumIndexOffset;
}
/*!
@@ -105,27 +117,51 @@
return returnValue;
}
- int row = index.row();
+ int row = index.row() + mAlbumIndexOffset;
TX_LOG_ARGS("index=" << row << ", role=" << role);
TCollectionContext context = mCollectionData->context();
if ( role == Qt::DisplayRole ) {
QStringList display;
// Fetch the primary text, which is the title, if available.
QString primaryText;
- primaryText = mCollectionData->itemData(row, MpMpxCollectionData::Title);
- if ( !primaryText.isEmpty() ) {
- display << primaryText;
+ switch ( context ) {
+ case ECollectionContextAllSongs:
+ case ECollectionContextArtists:
+ case ECollectionContextAlbums:
+ case ECollectionContextArtistAlbums:
+ case ECollectionContextPlaylists:
+ case ECollectionContextPlaylistSongs:
+ case ECollectionContextAlbumsTBone:
+ case ECollectionContextArtistAlbumsTBone:
+ case ECollectionContextArtistAllSongs:
+ primaryText = mCollectionData->itemData(row, MpMpxCollectionData::Title);
+ if ( !primaryText.isEmpty() ) {
+ display << primaryText;
+ }
+ else {
+ display << hbTrId("txt_mus_other_unknown4");
+ }
+ break;
+ case ECollectionContextAlbumsMediaWall:
+ primaryText = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
+ if ( !primaryText.isEmpty() ) {
+ display << primaryText;
+ }
+ else {
+ display << hbTrId("txt_mus_other_unknown4");
+ }
+ break;
+ default:
+ break;
}
- else {
- display << hbTrId("txt_mus_other_unknown4");
- }
-
+
// Fetch the secondary text, which depends on the current context, if available.
QString secondaryText;
switch ( context ) {
case ECollectionContextAllSongs:
case ECollectionContextAlbums:
case ECollectionContextPlaylistSongs:
+ case ECollectionContextAlbumsTBone:
secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
if ( !secondaryText.isEmpty() ) {
display << secondaryText;
@@ -134,7 +170,16 @@
display << hbTrId("txt_mus_other_unknown3");
}
break;
- case ECollectionContextArtistSongs:
+ case ECollectionContextArtistAlbumsTBone:
+ secondaryText = mCollectionData->collectionTitle();
+ if ( !secondaryText.isEmpty() ) {
+ display << secondaryText;
+ }
+ else {
+ display << hbTrId("txt_mus_other_unknown3");
+ }
+ break;
+ case ECollectionContextArtistAllSongs:
secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Album);
if ( !secondaryText.isEmpty() ) {
display << secondaryText;
@@ -143,6 +188,15 @@
display << hbTrId("txt_mus_other_unknown4");
}
break;
+ case ECollectionContextAlbumsMediaWall:
+ secondaryText = mCollectionData->itemData(row, MpMpxCollectionData::Title);
+ if ( !secondaryText.isEmpty() ) {
+ display << secondaryText;
+ }
+ else {
+ display << hbTrId("txt_mus_other_unknown3");
+ }
+ break;
default:
break;
}
@@ -151,16 +205,41 @@
else if ( role == Qt::DecorationRole ) {
switch ( context ) {
case ECollectionContextAlbums:
+ case ECollectionContextAlbumsMediaWall:
+ case ECollectionContextArtistAlbumsTBone:
+ case ECollectionContextAlbumsTBone:
+ returnValue = mAlbumArtManager->albumArt( row ) ;
+ break;
case ECollectionContextArtistAlbums:
- const QIcon *icon = mAlbumArtManager->albumArt(row);
- QVariant iconVariant(QVariant::Icon, icon);
- returnValue = iconVariant;
+ if ( row == 0 ) {
+ returnValue = HbIcon( "qtg_small_sound" );
+ }
+ else {
+ returnValue = mAlbumArtManager->albumArt( row );
+ }
break;
}
}
else if ( role == Hb::IndexFeedbackRole ) {
QString feedbackIndex;
- feedbackIndex = mCollectionData->itemData(row, MpMpxCollectionData::Title);
+ switch ( context ) {
+ case ECollectionContextAllSongs:
+ case ECollectionContextArtists:
+ case ECollectionContextAlbums:
+ case ECollectionContextArtistAlbums:
+ case ECollectionContextPlaylists:
+ case ECollectionContextPlaylistSongs:
+ case ECollectionContextAlbumsTBone:
+ case ECollectionContextArtistAlbumsTBone:
+ case ECollectionContextArtistAllSongs:
+ feedbackIndex = mCollectionData->itemData(row, MpMpxCollectionData::Title);
+ break;
+ case ECollectionContextAlbumsMediaWall:
+ feedbackIndex = mCollectionData->itemData(row, MpMpxCollectionData::Artist);
+ break;
+ default:
+ break;
+ }
returnValue = feedbackIndex;
}
TX_EXIT
@@ -276,11 +355,49 @@
}
/*!
+ Slot to be called when collection context is changed.
+ */
+void MpCollectionDataModel::setContext( TCollectionContext context )
+{
+ TX_ENTRY_ARGS( "context=" << context );
+ // Reset the album index offset for navigation
+ mAlbumIndexOffset = 0;
+ switch ( context ) {
+ case ECollectionContextArtistAlbums:
+ case ECollectionContextAlbums:
+ mAlbumArtManager->setThumbnailSize( MpCommon::ListThumb );
+ mAlbumArtManager->enableDefaultArt( true );
+ break;
+ case ECollectionContextArtistAlbumsTBone:
+ if ( mCollectionData->count() > 1 ) {
+ // Selected artist has more than 1 album and therefore the
+ // artist's "All songs" exist. Since we don't show artist's
+ // "All songs" in TBone, we need to set an offset.
+ mAlbumIndexOffset = 1;
+ }
+ //intentional fallthrough
+ case ECollectionContextAlbumsTBone:
+ mAlbumArtManager->setThumbnailSize( MpCommon::TBoneThumb );
+ mAlbumArtManager->enableDefaultArt( false );
+ break;
+ case ECollectionContextAlbumsMediaWall:
+ mAlbumArtManager->setThumbnailSize( MpCommon::MediaWallThumb );
+ mAlbumArtManager->enableDefaultArt( false );
+ break;
+ default:
+ break;
+ }
+ TX_EXIT
+}
+
+/*!
Slot to be called when album art for the \a index needs to be updated.
*/
void MpCollectionDataModel::updateAlbumArt( int index )
{
TX_ENTRY_ARGS("index=" << index);
+
+ index -= mAlbumIndexOffset;
if ( index >= 0 && index < mRowCount ) {
QModelIndex modelIndex = QAbstractItemModel::createIndex(index, 0);
emit dataChanged(modelIndex, modelIndex);
@@ -300,7 +417,9 @@
mRowCount = mCollectionData->count();
TCollectionContext context = mCollectionData->context();
- if ( context == ECollectionContextAlbums || ECollectionContextArtistAlbums ) {
+ if ( context == ECollectionContextAlbums ||
+ context == ECollectionContextArtistAlbums ||
+ context == ECollectionContextAlbumsMediaWall ) {
// Before providing the new data to the view (list, grid, etc.), we want
// to make sure that we have enough album arts for the first screen.
mAlbumArtManager->cacheFirstScreen();
@@ -309,3 +428,17 @@
TX_EXIT
}
+/*!
+ Slot to be called when data has changed (same context) and model needs to reload
+ the data.
+ */
+void MpCollectionDataModel::reloadData()
+{
+ TX_ENTRY
+ mAlbumArtManager->cancel();
+ mRowCount = mCollectionData->count();
+ reset();
+ emit dataReloaded();
+ TX_EXIT
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpcollectiontbonelistdatamodel.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/src/mpcollectiontbonelistdatamodel.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,132 @@
+/*
+* 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 secondary collection abstract data model. This is
+* primarily used to support Mediawall in Collection View. This
+* model represents the list containing album songs.
+*
+*/
+
+#include
+
+#include "mpcollectiontbonelistdatamodel.h"
+#include "mpmpxcollectiondata.h"
+#include "mptrace.h"
+
+/*!
+ \class MpCollectionTBoneListDataModel
+ \brief Music Player collection data model.
+
+ Secondary collection data model implements the interface specified by
+ QAbstractListModel, which defines the standard interface that item models
+ must use to be able to interoperate with other components in the model/view
+ architecture.
+
+ Every item of data that can be accessed via a model has an associated model
+ index.
+
+ Each item has a number of data elements associated with it and they can be
+ retrieved by specifying a role (see Qt::ItemDataRole) to the model's data
+ returned by itemData() function.
+
+ MpCollectionTBoneListDataModel is primarily used to support Mediawall in
+ Collection View. This model represents the list containing album songs.
+
+ \sa QAbstractListModel
+*/
+
+/*!
+ \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.
+ */
+
+/*!
+ Constructs the collection data model.
+ */
+MpCollectionTBoneListDataModel::MpCollectionTBoneListDataModel( MpMpxCollectionData *data, QObject *parent )
+ : QAbstractListModel(parent),
+ mCollectionData(data),
+ mRowCount(0)
+{
+ TX_ENTRY
+ connect( mCollectionData, SIGNAL(refreshAlbumSongs()),
+ this, SLOT(refreshModel()) );
+ connect( mCollectionData, SIGNAL(albumDataChanged()),
+ this, SIGNAL(albumDataChanged()) );
+ TX_EXIT
+}
+
+/*!
+ Destructs the collection data model.
+ */
+MpCollectionTBoneListDataModel::~MpCollectionTBoneListDataModel()
+{
+ TX_LOG
+}
+
+/*!
+ Returns the number of rows under the given \a parent.
+
+ \reimp
+ */
+int MpCollectionTBoneListDataModel::rowCount( const QModelIndex &parent ) const
+{
+ TX_LOG
+ Q_UNUSED(parent);
+ return mRowCount;
+}
+
+/*!
+ Returns the data stored for the item referred to by the \a index.
+
+ \reimp
+ */
+QVariant MpCollectionTBoneListDataModel::data(const QModelIndex &index, int role) const
+{
+ TX_ENTRY
+ QVariant returnValue = QVariant();
+ if ( !index.isValid() ) {
+ return returnValue;
+ }
+
+ int row = index.row();
+ TX_LOG_ARGS("index=" << row << ", role=" << role);
+ if ( role == Qt::DisplayRole ) {
+ // Fetch the primary text, which is the title, if available.
+ QString songTitle = mCollectionData->albumSongData(row, MpMpxCollectionData::Title);
+ if ( !songTitle.isEmpty() ) {
+ returnValue = songTitle;
+ }
+ else {
+ returnValue = hbTrId("txt_mus_other_unknown4");
+ }
+ }
+ TX_EXIT
+ return returnValue;
+}
+
+/*!
+ Slot to be called when data has changed and model needs to be refreshed
+ to reflect the new data.
+ */
+void MpCollectionTBoneListDataModel::refreshModel()
+{
+ TX_ENTRY
+ mRowCount = mCollectionData->albumSongsCount();
+ reset();
+ TX_EXIT
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpmpxcollectiondata.cpp
--- a/mpdata/src/mpmpxcollectiondata.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/src/mpmpxcollectiondata.cpp Fri May 14 18:54:37 2010 -0500
@@ -43,6 +43,37 @@
*/
/*!
+ \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 )
@@ -61,6 +92,7 @@
/*!
Returns the current collection context.
+ /sa setContext()
*/
TCollectionContext MpMpxCollectionData::context() const
{
@@ -157,22 +189,62 @@
*/
void MpMpxCollectionData::insertCachedItem(int index)
{
- return d_ptr->insertCachedItem( 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();
}
/*!
- Sets the media \a entries from the MPX framework.
- Internal usage only from MpMpxFrameworkWrapper.
+ Returns the number of songs in the current album.
*/
-void MpMpxCollectionData::setMpxMedia( const CMPXMedia& entries )
+int MpMpxCollectionData::albumSongsCount() const
{
- d_ptr->setMpxMedia(entries);
+ 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 MpMpxFrameworkWrapper.
-
+ Internal usage only from MpEngine.
\sa setMpxMedia()
*/
@@ -181,3 +253,37 @@
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 );
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpmpxcollectiondata_p.cpp
--- a/mpdata/src/mpmpxcollectiondata_p.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/src/mpmpxcollectiondata_p.cpp Fri May 14 18:54:37 2010 -0500
@@ -27,9 +27,6 @@
#include "mpmpxcollectiondata_p.h"
#include "mptrace.h"
-_LIT( KSong, " song" );
-_LIT( KSongs, " songs" );
-
/*!
\class MpMpxCollectionDataPrivate
\brief Music Player collection data - private implementation.
@@ -42,10 +39,12 @@
*/
MpMpxCollectionDataPrivate::MpMpxCollectionDataPrivate( MpMpxCollectionData *wrapper )
: q_ptr( wrapper ),
+ iContext( ECollectionContextUnknown ),
iContainerMedia(0),
iMediaArray(0),
- iContext( ECollectionContextUnknown ),
- iCachedRemovedItem ( 0 )
+ iCachedRemovedItem(0),
+ iCurrentAlbumIndex(-1),
+ iAlbumSongCount(0)
{
TX_LOG
}
@@ -256,13 +255,137 @@
/*!
\internal
*/
-void MpMpxCollectionDataPrivate::setMpxMedia( const CMPXMedia& entries )
+bool MpMpxCollectionDataPrivate::setCurrentAlbum( int index )
+{
+ TX_ENTRY_ARGS( "index=" << index);
+ bool available = false;
+ TRAPD( err, available = DoSetCurrentAlbumL( index ) );
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS("Error: " << err << "; should never get here.");
+ }
+ TX_EXIT
+ return available;
+}
+
+/*!
+ \internal
+ */
+int MpMpxCollectionDataPrivate::currentAlbumIndex() const
+{
+ return iCurrentAlbumIndex;
+}
+
+/*!
+ \internal
+ */
+int MpMpxCollectionDataPrivate::albumSongsCount() const
+{
+ return iAlbumSongCount;
+}
+
+/*!
+ \internal
+ */
+QString MpMpxCollectionDataPrivate::albumSongData( int index, MpMpxCollectionData::DataType type ) const
+{
+ TX_ENTRY_ARGS("index=" << index << ", type=" << type);
+ QString data;
+ TRAPD(err, DoGetAlbumSongDataL(index, type, data));
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS("Error: " << err << "; should never get here.");
+ }
+ TX_EXIT
+ return data;
+}
+
+/*!
+ \internal
+ New data from MPX collection. This could be due to Open operation, in which case
+ context would have changed. This could also be due to Re-open after operations
+ such as delete, playlist renaming, playlist rearraging, etc., in which case the
+ context would remain the same, but the internal data may have changed.
+ */
+void MpMpxCollectionDataPrivate::setMpxMedia( const CMPXMedia& entries, bool reopen )
{
TX_ENTRY
+ TCollectionContext prevContext = iContext;
+ int prevCount = count();
+
TRAPD(err, DoSetMpxMediaL(entries));
if ( err == KErrNone ) {
- TX_LOG_ARGS("Context changed: iContext=" << iContext);
- emit q_ptr->contextChanged(iContext);
+ int newCount = count();
+ if ( (newCount == 0) || (prevCount == 0) ) {
+ TX_LOG_ARGS("Empty container");
+ // Two cases:
+ // 1) newCount is zero: Last item in the model was deleted.
+ // 2) prevCount is zero: Refresh operation found new data.
+ // In these cases, independent of context change, we must emit the
+ // contextChanged() signal so that the container can properly reload
+ // the layout.
+ emit q_ptr->contextChanged(iContext);
+ }
+ else if ( iContext != prevContext ) {
+ TX_LOG_ARGS("Context changed: iContext=" << iContext);
+ if ( prevContext == ECollectionContextArtistAlbumsTBone
+ && iContext == ECollectionContextArtistAlbums
+ && reopen ) {
+ // Special case 1: This occurs when a song was deleted from TBone list
+ // within artist container. And the fact that the new context is ArtistAlbums
+ // indicates that the artist has more than 1 album.
+ // Restore context to ArtistAlbumsTBone.
+ iContext = ECollectionContextArtistAlbumsTBone;
+ if ( newCount != prevCount ) {
+ // Change in count indicates that the deleted song was the last song
+ // in the TBone list. As a result, the album was deleted also, therefore
+ // we must emit dataChanged() indicating changes to the album section
+ // of the TBone.
+ emit q_ptr->dataChanged();
+ }
+ else {
+ // Same count indicates that one of the songs in the TBone's list
+ // section was deleted. We only want to reload the list section of the
+ // TBone in this case.
+ emit q_ptr->albumDataChanged();
+ }
+ }
+ else if ( prevContext == ECollectionContextAlbumsTBone && reopen ) {
+ // Special case 2: This occurs when a song was deleted from TBone list
+ // within album container. Restore context to AlbumsTBone.
+ iContext = ECollectionContextAlbumsTBone;
+ if ( newCount != prevCount ) {
+ // Change in count indicates that the deleted song was the last song
+ // in the TBone list. As a result, the album was deleted also, therefore
+ // we must emit dataChanged() indicating changes to the album section
+ // of the TBone.
+ emit q_ptr->dataChanged();
+ }
+ else {
+ // Same count indicates that one of the songs in the TBone's list
+ // section was deleted. We only want to reload the list section of the
+ // TBone in this case.
+ emit q_ptr->albumDataChanged();
+ }
+ }
+ else {
+ // Simple case where the context has really changed and it didn't
+ // involve TBone.
+ emit q_ptr->contextChanged(iContext);
+ }
+ }
+ else if ( prevContext == ECollectionContextArtistAlbumsTBone
+ && iContext == ECollectionContextArtistAlbumsTBone
+ && reopen ) {
+ // Special case 3: This occurs when a song was deleted from TBone list
+ // within artist container. This is similar to special case 1, however, the
+ // fact that the new context is also ArtistAlbumsTBone indicates that the
+ // artist has only 1 album. We only want to reload the list section of the
+ // TBone in this case.
+ emit q_ptr->albumDataChanged();
+ }
+ else {
+ // Same context, but the data has changed.
+ emit q_ptr->dataChanged();
+ }
}
else {
TX_LOG_ARGS("Error: " << err << "; should never get here.");
@@ -273,13 +396,68 @@
/*!
\internal
*/
+const CMPXMedia& MpMpxCollectionDataPrivate::containerMedia()
+{
+ return *iContainerMedia;
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionDataPrivate::setContext( TCollectionContext context )
+{
+ iContext = context;
+ TX_LOG_ARGS("Context changed: iContext=" << iContext);
+
+ //Clearing all the album ids.
+ albumIdIndexMapping.clear();
+ if ( iContext == ECollectionContextAlbumsMediaWall) {
+ //Adding album ids and indixes to the hash, for itemIndex lookup.
+ //This is disabled for other containers to save resources.
+ for ( int i = count() - 1 ; i >= 0 ; i-- ) {
+ albumIdIndexMapping.insert( itemId( i ) , i );
+ }
+ }
+
+ emit q_ptr->contextChanged(iContext);
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionDataPrivate::setAlbumContent( const CMPXMedia& albumContent )
+{
+ TX_ENTRY
+ TRAPD(err, DoSetAlbumContentL(albumContent));
+ if ( err == KErrNone ) {
+ TX_LOG_ARGS("Album content is available.");
+ emit q_ptr->refreshAlbumSongs();
+ }
+ else {
+ TX_LOG_ARGS("Error: " << err << "; should never get here.");
+ }
+ TX_EXIT
+}
+
+/*!
+ \internal
+ Currently only used to lookup playing song album id to index of albums on
+ media wall.
+ */
+int MpMpxCollectionDataPrivate::itemIndex( int itemUniqueId )
+{
+ return albumIdIndexMapping.value( itemUniqueId );
+}
+
+/*!
+ \internal
+ */
void MpMpxCollectionDataPrivate::DoGetDataL( int index, MpMpxCollectionData::DataType type, QString& data ) const
{
TX_ENTRY
CMPXMedia* currentMedia( iMediaArray->AtL( index ) );
- TBuf<256> countBuf;
- TBuf<20> temp;
+ TBuf<10> countBuf;
TInt count = 0;
switch ( type ) {
case MpMpxCollectionData::Title:
@@ -310,10 +488,7 @@
if ( currentMedia->IsSupported( KMPXMediaGeneralCount ) ) {
count = currentMedia->ValueTObjectL( KMPXMediaGeneralCount );
}
- temp.AppendNum( count );
- //AknTextUtils::LanguageSpecificNumberConversion( temp );
- countBuf.Append( temp );
- countBuf.Append( (count > 1 ) ? KSongs() : KSong() );
+ countBuf.AppendNum( count );
data = QString::fromUtf16( countBuf.Ptr(), countBuf.Length() );
break;
case MpMpxCollectionData::AlbumArtUri:
@@ -432,6 +607,64 @@
return ( itemId == iCachedRemovedItem->ValueTObjectL( KMPXMediaGeneralId ) );
}
+/*!
+ \internal
+ */
+bool MpMpxCollectionDataPrivate::DoSetCurrentAlbumL( int index )
+{
+ TX_ENTRY_ARGS( "index=" << index);
+ iCurrentAlbumIndex = index;
+
+ bool songsAvailable = false;
+ CMPXMedia* album( iMediaArray->AtL( index ) );
+ if ( album->IsSupported(KMPXMediaArrayContents) ) {
+ // We've previously fetched the songs for this album so
+ // all we do now is populate the list with the song titles.
+ const CMPXMediaArray* songs = album->Value(KMPXMediaArrayContents);
+ iAlbumSongCount = songs->Count();
+ songsAvailable = true;
+ TX_LOG_ARGS("Songs available.");
+ emit q_ptr->refreshAlbumSongs();
+ }
+ TX_EXIT
+ return songsAvailable;
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionDataPrivate::DoGetAlbumSongDataL( int index, MpMpxCollectionData::DataType type, QString& data ) const
+{
+ TX_ENTRY
+ CMPXMedia* album( iMediaArray->AtL( iCurrentAlbumIndex ) );
+ if ( album->IsSupported(KMPXMediaArrayContents) ) {
+ const CMPXMediaArray* songs = album->Value(KMPXMediaArrayContents);
+ User::LeaveIfNull(const_cast(songs));
+ CMPXMedia* song = songs->AtL(index);
+
+ switch ( type ) {
+ case MpMpxCollectionData::Title:
+ if ( song->IsSupported( KMPXMediaGeneralTitle ) ) {
+ const TDesC& title = song->ValueText( KMPXMediaGeneralTitle );
+ if ( title.Compare( KNullDesC ) != 0 ) {
+ data = QString::fromUtf16( title.Ptr(), title.Length() );
+ }
+ }
+ break;
+ case MpMpxCollectionData::Uri:
+ if ( song->IsSupported( KMPXMediaGeneralUri ) ) {
+ const TDesC& uri = song->ValueText( KMPXMediaGeneralUri );
+ if ( uri.Compare( KNullDesC ) != 0 ) {
+ data = QString::fromUtf16( uri.Ptr(), uri.Length() );
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ TX_EXIT
+}
/*!
\internal
@@ -465,28 +698,26 @@
case EMPXPlaylist:
iContext = ECollectionContextPlaylists;
break;
- case EMPXGenre:
- iContext = ECollectionContextGenres;
- break;
}
}
else if ( containerType == EMPXItem ) {
switch (containerCategory) {
case EMPXArtist:
- iContext = ECollectionContextArtistAlbums;
- break;
- case EMPXAlbum:
- iContext = ECollectionContextAlbumSongs;
+ if ( iMediaArray->Count() > 1 ) {
+ iContext = ECollectionContextArtistAlbums;
+ }
+ else {
+ // Single album. Go directly to TBone.
+ iContext = ECollectionContextArtistAlbumsTBone;
+ }
break;
case EMPXSong:
- iContext = ECollectionContextArtistSongs;
+ // All songs for an artist
+ iContext = ECollectionContextArtistAllSongs;
break;
case EMPXPlaylist:
iContext = ECollectionContextPlaylistSongs;
break;
- case EMPXGenre:
- iContext = ECollectionContextGenreSongs;
- break;
}
}
TX_EXIT
@@ -511,8 +742,23 @@
/*!
\internal
*/
-const CMPXMedia& MpMpxCollectionDataPrivate::containerMedia()
+void MpMpxCollectionDataPrivate::DoSetAlbumContentL( const CMPXMedia& albumContent )
{
- return *iContainerMedia;
+ TX_ENTRY
+ CMPXMediaArray* songArray(const_cast( albumContent.Value(
+ KMPXMediaArrayContents ) ) );
+ User::LeaveIfNull( songArray );
+
+ // Save the songs to the album so that we don't need to find them again
+ // if the same album is selected again.
+ iAlbumSongCount = songArray->Count();
+
+ if ( iAlbumSongCount ) {
+ CMPXMedia* albumMedia( iMediaArray->AtL( iCurrentAlbumIndex ) );
+ albumMedia->SetCObjectValueL(KMPXMediaArrayContents, songArray);
+ albumMedia->SetTObjectValueL(KMPXMediaArrayCount, iAlbumSongCount);
+ }
+ TX_EXIT
}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpplaybackdata.cpp
--- a/mpdata/src/mpplaybackdata.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/src/mpplaybackdata.cpp Fri May 14 18:54:37 2010 -0500
@@ -15,10 +15,10 @@
*
*/
-#include
-#include
-#include
-#include
+#include
+#include
+#include
+#include
#include
#include
@@ -74,23 +74,25 @@
Constructs a new MpPlaybackData.
*/
MpPlaybackData::MpPlaybackData( QObject *parent )
- : QObject(parent),
- mThumbnailManager(0),
- mReqId(KUndefined),
+ : QObject( parent ),
+ mThumbnailManager( new ThumbnailManager( this ) ),
+ mReqId( KUndefined ),
mDuration(0),
mPosition(0),
- mAlbumArt(),
- mPlaybackState(Stopped)
+ mAlbum( hbTrId ( "txt_mus_other_unknown4" ) ),
+ mArtist( hbTrId ( "txt_mus_other_unknown3") ),
+ mAlbumId(0),
+ mId(0),
+ mAlbumArt( "qtg_large_music_album" ),
+ mDefaultAlbumArt( "qtg_large_music_album" ),
+ mPlaybackState( NotPlaying ),
+ mRealAudio( false )
{
TX_ENTRY
- mThumbnailManager = new ThumbnailManager(this);
- mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
- mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
- connect( mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)),
- this, SLOT(thumbnailReady(QPixmap, void *, int, int)) );
-
- //TODO: Change to final resource when available
- mDefaultAlbumArt = new HbIcon("qtg_large_music");
+ mThumbnailManager->setQualityPreference( ThumbnailManager::OptimizeForQuality );
+ mThumbnailManager->setThumbnailSize( ThumbnailManager::ThumbnailLarge );
+ connect( mThumbnailManager, SIGNAL( thumbnailReady(QPixmap, void *, int, int ) ),
+ this, SLOT(thumbnailReady( QPixmap, void *, int, int ) ) );
TX_EXIT
}
@@ -177,7 +179,12 @@
bool change = false;
if ( artist != mArtist ) {
change = true;
- mArtist = artist;
+ if ( artist.isEmpty() ){
+ mArtist = hbTrId( "txt_mus_other_unknown3" );
+ }
+ else {
+ mArtist = artist;
+ }
}
TX_EXIT
return change;
@@ -201,7 +208,12 @@
bool change = false;
if ( album != mAlbum ) {
change = true;
- mAlbum = album;
+ if ( album.isEmpty() ){
+ mAlbum = hbTrId( "txt_mus_other_unknown4" );
+ }
+ else{
+ mAlbum = album;
+ }
}
TX_EXIT
return change;
@@ -275,16 +287,75 @@
void MpPlaybackData::albumArt( HbIcon& icon ) const
{
TX_ENTRY
- if ( mAlbumArt->isNull() ) {
- icon = HbIcon();
- }
- else {
- icon = *mAlbumArt ;
- }
+ icon = mAlbumArt ;
TX_EXIT
}
/*!
+ Sets the song's album \a id, returns true if the value is new.
+*/
+bool MpPlaybackData::setAlbumId( int id )
+{
+ bool change = false;
+ if (mAlbumId != id) {
+ mAlbumId = id;
+ change = true;
+ }
+ return change;
+}
+
+/*!
+ Returns the id of the album to which the song belongs.
+*/
+int MpPlaybackData::albumId()
+{
+ return mAlbumId;
+}
+
+/*!
+ Sets the song's \a id, returns true if the value is new.
+*/
+bool MpPlaybackData::setId( int id )
+{
+ bool change = false;
+ if (mId != id) {
+ mId = id;
+ change = true;
+ }
+ return change;
+}
+
+/*!
+ Returns the id the song.
+*/
+int MpPlaybackData::id()
+{
+ return mId;
+}
+/*!
+Set Real Audio \a mode.
+*/
+bool MpPlaybackData::setRealAudio( bool mode )
+{
+ TX_ENTRY
+ bool change = false;
+ if (mRealAudio != mode) {
+ mRealAudio = mode;
+ change = true;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Returns the mode of Real Audio.
+*/
+bool MpPlaybackData::realAudio()
+{
+ return mRealAudio;
+}
+
+/*!
Sets the playback \a state.
*/
void MpPlaybackData::setPlaybackState( const SimplifiedState state )
@@ -316,6 +387,7 @@
TX_EXIT
}
+
/*!
Slot to handle the album art thumb.
*/
@@ -345,7 +417,7 @@
}
- mAlbumArt = new HbIcon(qicon);
+ mAlbumArt = HbIcon(qicon);
emit albumArtReady();
}
diff -r 2c5162224003 -r fdb31ab341af mpdata/src/mpsongdata.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/src/mpsongdata.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,747 @@
+/*
+* 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: Playback Data provider for playback view.
+*
+*/
+
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include "mpsongdata.h"
+#include "mptrace.h"
+
+const int KUndefined = -1;
+
+/*!
+ \class MpSongData
+ \brief Music Player song metadata.
+
+ Song data provide acces to current playing song metadata
+*/
+
+/*!
+ \fn void albumArtReady()
+
+ This signal is albuma alrt is ready.
+ */
+
+/*!
+ \fn void playbackInfoChanged()
+
+ This signal is emitted when basic information is available
+ */
+
+/*!
+ \fn void songDetailInfoChanged()
+
+ This signal is emitted when detail information is available
+ */
+
+
+
+/*!
+ Constructs a new MpSongData.
+ */
+MpSongData::MpSongData( QObject *parent )
+ : QObject( parent ),
+ mAlbumArt(),
+ mReqId( KUndefined )
+{
+ TX_ENTRY
+ mThumbnailManager = new ThumbnailManager( this );
+ mThumbnailManager->setQualityPreference( ThumbnailManager::OptimizeForQuality );
+ mThumbnailManager->setThumbnailSize( ThumbnailManager::ThumbnailMedium );
+ QObject::connect( mThumbnailManager, SIGNAL( thumbnailReady( QPixmap , void * , int , int ) ),
+ this, SLOT( thumbnailReady( QPixmap , void * , int , int ) ) );
+
+ mDefaultAlbumArt = new HbIcon( "qtg_large_music_album" );
+ TX_EXIT
+}
+
+/*!
+ Constructs a new MpSongData.
+ */
+MpSongData::~MpSongData()
+{
+ TX_ENTRY
+ if( mThumbnailManager ) {
+ delete mThumbnailManager;
+ }
+ TX_EXIT
+}
+
+/*!
+ Returns the song album art on \a pixmap.
+*/
+void MpSongData::albumArt( HbIcon& icon ) const
+{
+ TX_ENTRY
+ if ( !mAlbumArt || mAlbumArt->isNull() ) {
+ TX_LOG_ARGS( "Album art is NULL." );
+ icon = HbIcon();
+ } else {
+ TX_LOG_ARGS( "Album art is not NULL." );
+ icon = *mAlbumArt ;
+ }
+ TX_EXIT
+}
+
+
+/*!
+ Returns the song title.
+*/
+QString MpSongData::title() const
+{
+ TX_LOG
+ return mTitle;
+}
+
+/*!
+ Returns the song album.
+*/
+QString MpSongData::album() const
+{
+ TX_LOG
+ return mAlbum;
+}
+
+/*!
+ Returns the song artist.
+*/
+QString MpSongData::artist() const
+{
+ TX_LOG
+ return mArtist;
+}
+
+/*!
+ Returns comment
+*/
+QString MpSongData::comment() const
+{
+ TX_LOG
+ return mComment;
+}
+
+/*!
+ Returns the song composer.
+*/
+QString MpSongData::composer() const
+{
+ TX_LOG
+ return mComposer;
+}
+
+
+/*!
+ Returns the song genre.
+*/
+QString MpSongData::genre() const
+{
+ TX_LOG
+ return mGenre;
+}
+
+
+/*!
+ Returns the album track.
+*/
+QString MpSongData::albumTrack() const
+{
+ TX_LOG
+ return mAlbumTrack;
+}
+
+/*!
+ Returns link
+*/
+QString MpSongData::link() const
+{
+ TX_LOG
+ return mLink;
+}
+
+/*!
+ Returns the release date.
+*/
+QString MpSongData::year() const
+{
+ TX_LOG
+ return mYear;
+}
+
+/*!
+ Returns the file name
+*/
+QString MpSongData::fileName() const
+{
+ TX_LOG
+ return mFileName;
+}
+
+/*!
+ Returns the MIME type
+*/
+QString MpSongData::mimeType() const
+{
+ TX_LOG
+ return mMimeType;
+}
+
+/*!
+ Returns the duration
+*/
+QString MpSongData::duration() const
+{
+ TX_LOG
+ return mDuration;
+}
+
+/*!
+ Returns the bit rate
+*/
+QString MpSongData::bitRate() const
+{
+ TX_LOG
+ return mBitRate;
+}
+
+/*!
+ Returns the sampling rate
+*/
+QString MpSongData::sampleRate() const
+{
+ TX_LOG
+ return mSampleRate;
+}
+
+/*!
+ Returns the size
+*/
+QString MpSongData::size() const
+{
+ TX_LOG
+ return mSize;
+}
+
+/*!
+ Returns the size
+*/
+QString MpSongData::modified() const
+{
+ TX_LOG
+ return mModified;
+}
+
+/*!
+ Returns the copy right
+*/
+QString MpSongData::copyright() const
+{
+ TX_LOG
+ return mCopyright;
+}
+
+/*!
+ Returns the music URL
+*/
+QString MpSongData::musicURL() const
+{
+ TX_LOG
+ return mMusicURL;
+}
+
+/*!
+ Returns whether the song is protected
+*/
+bool MpSongData::isDrmProtected() const
+{
+ TX_LOG
+ return mDrmProtected;
+}
+
+/*!
+ Sets the song \a title, returns true if the value is new.
+*/
+bool MpSongData::setTitle( const QString &title )
+{
+ TX_ENTRY_ARGS( "title =" << title )
+ bool change = false;
+ if ( title != mTitle ) {
+ change = true;
+ mTitle = title;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the song \a album, returns true if the value is new.
+*/
+bool MpSongData::setAlbum( const QString &album )
+{
+ TX_ENTRY_ARGS( "album =" << album )
+ bool change = false;
+ if ( album != mAlbum ) {
+ change = true;
+ mAlbum = album;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the song \a artist, returns true if the value is new.
+*/
+bool MpSongData::setArtist( const QString &artist )
+{
+ TX_ENTRY_ARGS( "artist =" << artist )
+ bool change = false;
+ if ( artist != mArtist ) {
+ change = true;
+ mArtist = artist;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the song \a comment, returns true if the value is new.
+*/
+bool MpSongData::setComment( const QString &comment)
+{
+ TX_ENTRY_ARGS( "comment =" << comment )
+ bool change = false;
+ if ( comment != mComment ) {
+ change = true;
+ mComment = comment;
+ }
+ TX_EXIT
+ return change;
+}
+
+
+/*!
+ Sets the song \a composer, returns true if the value is new.
+*/
+bool MpSongData::setComposer( const QString &composer )
+{
+ TX_ENTRY_ARGS( "composer =" << composer )
+ bool change = false;
+ if ( composer != mComposer ) {
+ change = true;
+ mComposer = composer;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the song \a genre, returns true if the value is new.
+*/
+bool MpSongData::setGenre( const QString &genre )
+{
+ TX_ENTRY_ARGS( "genre =" << genre )
+ bool change = false;
+ if ( genre != mGenre ) {
+ change = true;
+ mGenre = genre;
+ }
+ TX_EXIT
+ return change;
+}
+
+
+/*!
+ Sets the song \a date, returns true if the value is new.
+*/
+bool MpSongData::setYear( int year )
+{
+ TX_ENTRY_ARGS( "year =" << year )
+ bool change = false;
+ if ( QString::number(year) != mYear ) {
+ change = true;
+ if ( year >= 0 && year < 9999 ) {
+ mYear = QString::number(year);
+ } else {
+ mYear = QString();
+ }
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a album track, returns true if the value is new.
+*/
+bool MpSongData::setAlbumTrack( const QString &track )
+{
+ TX_ENTRY_ARGS( "track =" << track )
+ bool change = false;
+ if ( track != mAlbumTrack ) {
+ change = true;
+ mAlbumTrack = track;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a link
+*/
+void MpSongData::setLink( const QString &link )
+{
+ TX_ENTRY_ARGS( "Link =" << link )
+ mLink = link;
+ TX_EXIT
+}
+
+/*!
+ Sets the song \a albumArtUri.
+*/
+void MpSongData::setAlbumArtUri( const QString &albumArtUri)
+{
+ TX_ENTRY_ARGS( "albumArtUri = " << albumArtUri )
+ if ( !albumArtUri.isEmpty() ) {
+ TX_LOG_ARGS( "There is album art" );
+ bool ok = true;
+ if ( mReqId != KUndefined ) {
+ // There is already an outstanding request. Cancel it first.
+ bool ok = mThumbnailManager->cancelRequest( mReqId );
+ }
+ if ( ok ) {
+ mReqId = mThumbnailManager->getThumbnail( albumArtUri );
+ if ( mReqId == KUndefined ) {
+ // Request failed. Set default album art.
+ mAlbumArt = mDefaultAlbumArt;
+ emit albumArtReady();
+ }
+ }
+ }
+ else {
+ // No album art uri. Set default album art.
+ TX_LOG_ARGS( "There is No album art" );
+ mAlbumArt = mDefaultAlbumArt;
+ emit albumArtReady();
+ }
+ TX_EXIT
+}
+
+/*!
+ Sets the \a file name
+*/
+bool MpSongData::setFileName( const QString &fileName )
+{
+ TX_ENTRY_ARGS( "File name =" << fileName )
+ bool change = false;
+ if ( fileName != mFileName ) {
+ change = true;
+ mFileName = fileName;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a MIME type
+*/
+bool MpSongData::setMimeType( const QString &mimeType )
+{
+ TX_ENTRY_ARGS( "Mime =" << mimeType )
+ bool change = false;
+ if ( mimeType != mMimeType ) {
+ change = true;
+ mMimeType = mimeType;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a duration
+*/
+bool MpSongData::setDuration( int duration )
+{
+ TX_ENTRY_ARGS( "Duration =" << duration )
+ bool change = false;
+ QString timeFormatOne("%1:%2:%3");
+ QString timeFormatTwo("%1:%2");
+ if ( QString::number( duration ) != mDuration ) {
+ change = true;
+ if ( duration >= 3600 ) {
+ // more than one hours
+ QString hourStr, minStr, secStr;
+ int hour = duration / 3600;
+ int min = duration % 3600 / 60;
+ int sec = duration % 3600 % 60;
+
+ hourStr = hour >= 10 ? QString::number( hour ) : QString::number( hour ).prepend( "0" );
+ minStr = min >= 10 ? QString::number( min ) : QString::number( min ).prepend( "0" );
+ secStr = sec >= 10 ? QString::number( sec ) : QString::number( sec ).prepend( "0" );
+ mDuration = timeFormatOne.arg( hourStr ).arg( minStr ).arg( secStr );
+ } else if ( duration >= 60 && duration < 3600 ) {
+ // more than one min && less than one hour
+ QString minStr, secStr;
+ int min = duration / 60;
+ int sec = duration % 60;
+
+ minStr = min >= 10 ? QString::number( min ) : QString::number( min ).prepend( "0" );
+ secStr = sec >= 10 ? QString::number( sec ) : QString::number( sec ).prepend( "0" );
+ mDuration = timeFormatTwo.arg( minStr ).arg( secStr );
+ } else if ( duration > 0 && duration < 60 ) {
+ QString secStr;
+ secStr = duration >= 10 ? QString::number( duration ) : QString::number( duration ).prepend( "0" );
+ mDuration = secStr;
+ } else {
+ mDuration = QString();
+ }
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets bit rate
+*/
+bool MpSongData::setBitRate( int bitRate)
+{
+ TX_ENTRY_ARGS( "Bit rate =" << bitRate )
+ bool change = false;
+ if ( QString::number( bitRate ) != mBitRate ) {
+ change = true;
+ if ( bitRate > 0 ) {
+ mBitRate = QString::number( bitRate / 1000 );
+ } else {
+ mBitRate = QString();
+ }
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets sample rate
+*/
+bool MpSongData::setSampleRate( int sampleRate )
+{
+ TX_ENTRY_ARGS( "Sample rate =" << sampleRate )
+ bool change = false;
+ if ( QString::number( sampleRate ) != mSampleRate ) {
+ change = true;
+ if ( sampleRate > 0 ) {
+ mSampleRate = QString::number( sampleRate );
+ } else {
+ mSampleRate = QString();
+ }
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a size
+*/
+bool MpSongData::setSize( int size )
+{
+ TX_ENTRY_ARGS( "Size =" << size )
+ bool change = false;
+ if ( QString::number( size ) != mSize ) {
+ change = true;
+ mSize = QString::number( size / 1000 );
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a modification information
+*/
+bool MpSongData::setModified( const QString &modified )
+{
+ TX_ENTRY_ARGS( "Modified =" << modified )
+ bool change = false;
+ if ( modified != mModified ) {
+ change = true;
+ mModified = modified;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a copyright information
+*/
+bool MpSongData::setCopyright( const QString ©right )
+{
+ TX_ENTRY_ARGS( "Copyright =" << copyright )
+ bool change = false;
+ if ( copyright != mCopyright ) {
+ change = true;
+ mCopyright = copyright;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Sets the \a music URL
+*/
+bool MpSongData::setMusicURL( const QString &musicURL )
+{
+ TX_ENTRY_ARGS( "Music URL =" << musicURL )
+ bool change = false;
+ if ( musicURL != mMusicURL ) {
+ change = true;
+ mMusicURL = musicURL;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Set whether the song is DRM protected
+*/
+bool MpSongData::setDrmProtected( bool drmProtected )
+{
+ TX_ENTRY_ARGS( "DRM protected =" << drmProtected )
+ bool change = false;
+ if ( drmProtected != mDrmProtected ) {
+ change = true;
+ mDrmProtected = drmProtected;
+ }
+ TX_EXIT
+ return change;
+}
+
+/*!
+ Slot to handle the album art thumb.
+*/
+void MpSongData::thumbnailReady(
+ const QPixmap& pixmap,
+ void *data,
+ int id,
+ int error )
+{
+ TX_ENTRY
+ Q_UNUSED( data );
+ if ( error == 0 && mReqId == id ) {
+ QIcon qicon;
+ QPixmap mCompositePixmap;
+ mReqId = KUndefined;
+
+ mCompositePixmap = QPixmap( 360, 360 );
+ mCompositePixmap.fill( Qt::transparent );
+ QPainter painter(&mCompositePixmap);
+ painter.setCompositionMode(QPainter::CompositionMode_Clear);
+ painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ painter.fillRect(mCompositePixmap.rect(), Qt::transparent);
+ painter.drawPixmap(QRect(0, 0,360,360), pixmap);
+
+ if ( !mCompositePixmap.isNull() ) {
+ qicon = QIcon( mCompositePixmap );
+ }
+ else {
+ qicon = QIcon( pixmap );
+ }
+
+ if ( mAlbumArt == mDefaultAlbumArt ) {
+ TX_LOG_ARGS( "Album art is default album art." )
+ delete mAlbumArt;
+ mAlbumArt = new HbIcon(qicon);
+ mDefaultAlbumArt = new HbIcon( "qtg_large_music_album" );
+ } else {
+ TX_LOG_ARGS( "Album art is NOT default album art." )
+ delete mAlbumArt;
+ mAlbumArt = new HbIcon(qicon);
+ }
+
+ emit albumArtReady();
+ }
+ else {
+ mReqId = KUndefined;
+ mAlbumArt = mDefaultAlbumArt;
+ emit albumArtReady();
+ }
+
+ TX_EXIT
+}
+
+/*!
+ Emit signal when playback information changed, such as artist, track name
+*/
+void MpSongData::commitPlaybackInfo()
+{
+ TX_ENTRY
+ emit playbackInfoChanged();
+ TX_EXIT
+}
+
+/*!
+ Emit signal when song detail information changed
+*/
+void MpSongData::commitSongDetailInfo()
+{
+ TX_ENTRY
+ emit songDetailInfoChanged();
+ TX_EXIT
+}
+
+/*!
+ Retrieve the album art in base64 encoding suitable for inline HTML display for sharing player.
+ */
+QString MpSongData::albumArtBase64() const
+{
+ /*
+ // Converts the current album art icon to a base64 string, and return the string.
+ TX_LOG
+ if ( mAlbumArt->isNull() ) {
+ TX_ENTRY_ARGS( "MpSongData: album art isNull" )
+ return "nullimgcraptoberemoved";
+ }
+ TX_ENTRY_ARGS("MpSongData: album art exists");
+ QByteArray array;
+ QBuffer buffer( &array );
+ buffer.open( QIODevice::WriteOnly );
+ mAlbumArt->pixmap().save( &buffer, "PNG" ); // writes pixmap into bytes in PNG format
+ buffer.close();
+ QString result = array.toBase64().constData();
+ TX_ENTRY_ARGS("MpSongData: album art base64 length: " << result.length());
+ return result;
+ */
+ // TODO: this is temporary solution until base64 defect in QT is fixed.
+ TX_LOG
+ QByteArray array;
+ QFile file( "e:\\album_art.png" );
+ file.open( QIODevice::WriteOnly );
+ if ( mAlbumArt && !mAlbumArt->isNull() && !mAlbumArt->qicon().isNull() )
+ {
+ QPixmap p = mAlbumArt->qicon().pixmap( QSize( 74, 74 ), QIcon::Normal, QIcon::Off );
+ p.save( &file, "PNG" );
+ //mAlbumArt->pixmap().save( &file, "PNG" ); // writes pixmap into bytes in PNG format
+ }
+ file.close();
+ return "e:\\album_art.png";
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/inc/unittest_mpcollectionalbumartmanager.h
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/inc/unittest_mpcollectionalbumartmanager.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectionalbumartmanager/inc/unittest_mpcollectionalbumartmanager.h Fri May 14 18:54:37 2010 -0500
@@ -56,6 +56,7 @@
void testCacheFirstScreen();
void testCacheFirstScreenAllCached();
void testCancel();
+ void testSetThumbnailSize();
void testThumbnailReadyCache();
void testThumbnailReadyCacheError();
void testThumbnailReadyAlbumArt();
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/src/unittest_mpcollectionalbumartmanager.cpp
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/src/unittest_mpcollectionalbumartmanager.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectionalbumartmanager/src/unittest_mpcollectionalbumartmanager.cpp Fri May 14 18:54:37 2010 -0500
@@ -16,8 +16,6 @@
*/
#include
-#include
-#include
#include
#include "unittest_mpcollectionalbumartmanager.h"
@@ -34,19 +32,21 @@
*/
int main(int argc, char *argv[])
{
- HbApplication app(argc, argv);
- HbMainWindow window;
+ QApplication app(argc, argv);
TestMpCollectionAlbumArtManager tv;
- char *pass[3];
- pass[0] = argv[0];
- pass[1] = "-o";
- pass[2] = "c:\\data\\unittest_mpcollectionalbumartmanager.txt";
+ if ( argc > 1 ) {
+ return QTest::qExec( &tv, argc, argv);
+ }
+ else {
+ char *pass[3];
+ pass[0] = argv[0];
+ pass[1] = "-o";
+ pass[2] = "c:\\data\\unittest_mpcollectionalbumartmanager.txt";
- int res = QTest::qExec(&tv, 3, pass);
-
- return res;
+ return QTest::qExec(&tv, 3, pass);
+ }
}
TestMpCollectionAlbumArtManager::TestMpCollectionAlbumArtManager()
@@ -254,6 +254,24 @@
}
/*!
+ Tests setThumbnailSize().
+ */
+void TestMpCollectionAlbumArtManager::testSetThumbnailSize()
+{
+ mTest->mThumbnailManager->mThumbSize = ThumbnailManager::ThumbnailUndefined;
+
+ mTest->setThumbnailSize(MpCommon::ListThumb);
+ QCOMPARE(mTest->mThumbnailManager->mThumbSize, ThumbnailManager::ThumbnailSmall);
+
+ mTest->setThumbnailSize(MpCommon::TBoneThumb);
+ QCOMPARE(mTest->mThumbnailManager->mThumbSize, ThumbnailManager::ThumbnailMedium);
+
+ mTest->setThumbnailSize(MpCommon::MediaWallThumb);
+ QCOMPARE(mTest->mThumbnailManager->mThumbSize, ThumbnailManager::ThumbnailLarge);
+
+}
+
+/*!
Tests thumbnailReady() slot.
Tests completion of cacheFirstScreen() request.
*/
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/inc/thumbnailmanager_qt.h
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/inc/thumbnailmanager_qt.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/inc/thumbnailmanager_qt.h Fri May 14 18:54:37 2010 -0500
@@ -18,8 +18,8 @@
#ifndef THUMBNAILMANAGER_QT_H
#define THUMBNAILMANAGER_QT_H
-#include
-#include
+#include
+#include
/** default priority value */
@@ -36,9 +36,13 @@
enum ThumbnailSize
{
/**
+ * Undefined, only for test verification
+ */
+ ThumbnailUndefined = 0,
+ /**
* Small thumbnail
*/
- ThumbnailSmall = 0,
+ ThumbnailSmall,
/**
* Medium thumbnail
*/
@@ -120,9 +124,10 @@
public:
- bool mGetThumbFails;
- int mThumbnailReqCounter;
- int mCancelCounter;
+ bool mGetThumbFails;
+ int mThumbnailReqCounter;
+ int mCancelCounter;
+ ThumbnailSize mThumbSize;
};
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/src/thumbnailmanager_qt.cpp
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/src/thumbnailmanager_qt.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectionalbumartmanager/stub/src/thumbnailmanager_qt.cpp Fri May 14 18:54:37 2010 -0500
@@ -15,7 +15,7 @@
*
*/
-#include
+#include
#include "stub/inc/thumbnailmanager_qt.h"
int gInitCounter = 0;
@@ -44,7 +44,8 @@
QObject( parentPtr ),
mGetThumbFails(false),
mThumbnailReqCounter(0),
-mCancelCounter(0)
+mCancelCounter(0),
+mThumbSize(ThumbnailManager::ThumbnailUndefined)
{
gInitCounter++;
}
@@ -81,7 +82,7 @@
*/
bool ThumbnailManager::setThumbnailSize( ThumbnailSize thumbnailSize )
{
- Q_UNUSED(thumbnailSize);
+ mThumbSize = thumbnailSize;
return true;
}
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/unittest_mpcollectionalbumartmanager.pro
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/unittest_mpcollectionalbumartmanager.pro Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectionalbumartmanager/unittest_mpcollectionalbumartmanager.pro Fri May 14 18:54:37 2010 -0500
@@ -14,10 +14,11 @@
# Description: Unit test for mpcollectionalbumartmanager
#
-
TEMPLATE = app
CONFIG += qtestlib hb
-TARGET =
+CONFIG += symbian_test
+TARGET = unittest_mpcollectionalbumartmanager
+TARGET.CAPABILITY = CAP_APPLICATION
DEPENDPATH += .
INCLUDEPATH += . \
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectionalbumartmanager/unittest_mpcollectionalbumartmanager_template.pkg
--- a/mpdata/tsrc/unittest_mpcollectionalbumartmanager/unittest_mpcollectionalbumartmanager_template.pkg Fri Apr 30 19:33:32 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-; unittest_mpcollectionalbumartmanager_template.pkg generated by qmake at 2010-04-05T18:18:57
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"unittest_mpcollectionalbumartmanager"},(0xE48c0263),1,0,0
-
-; Localised Vendor name
-%{"Vendor"}
-
-; Unique Vendor name
-:"Vendor"
-
-; Manual PKG pre-rules from PRO files
-; Default HW/platform dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-
-; Default dependency to Qt libraries
-(0x2001E61C), , , , {"Qt"}
-
-; Executable and default resource files
-"/epoc32/release/$(PLATFORM)/$(TARGET)/unittest_mpcollectionalbumartmanager.exe" - "!:\sys\bin\unittest_mpcollectionalbumartmanager.exe"
-"/epoc32/data/z/resource/apps/unittest_mpcollectionalbumartmanager.rsc" - "!:\resource\apps\unittest_mpcollectionalbumartmanager.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpcollectionalbumartmanager_reg.rsc" - "!:\private\10003a3f\import\apps\unittest_mpcollectionalbumartmanager_reg.rsc"
-
-; Manual PKG post-rules from PRO files
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h Fri May 14 18:54:37 2010 -0500
@@ -37,7 +37,6 @@
signals:
void updateAlbumArt( int index );
- void albumCacheReady();
public slots:
@@ -50,7 +49,6 @@
void testMemberCleanup();
void testRefreshModel();
- void testRefreshModelZeroCount();
void testCollectionData();
void testDataAllSongs();
void testDataAllSongsNoData();
@@ -58,12 +56,14 @@
void testDataArtistsNoData();
void testDataArtistAlbums();
void testDataArtistAlbumsNoData();
- void testDataArtistSongs();
- void testDataArtistSongsNoData();
+ void testDataArtistAlbumsTBone();
+ void testDataArtistAlbumsTBoneNoData();
+ void testDataArtistAllSongs();
+ void testDataArtistAllSongsNoData();
void testDataAlbums();
void testDataAlbumsNoData();
- void testDataAlbumSongs();
- void testDataAlbumSongsNoData();
+ void testDataAlbumsTBone();
+ void testDataAlbumsTBoneNoData();
void testDataPlaylists();
void testDataPlaylistsNoData();
void testDataPlaylistSongs();
@@ -75,6 +75,7 @@
void testMimeTypes();
void testMimeData();
void testDropMimeData();
+ void testSetContext();
private:
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp Fri May 14 18:54:37 2010 -0500
@@ -36,17 +36,12 @@
#include "mpcollectiondatamodel.h"
#undef private
-// Init cache size defined in mpcollectiondatamodel.cpp
-const int KInitCacheSize = 11;
-
/*!
Make our test case a stand-alone executable that runs all the test functions.
*/
int main(int argc, char *argv[])
{
HbApplication app(argc, argv);
- HbMainWindow window;
-
TestMpCollectionDataModel tv;
char *pass[3];
@@ -113,6 +108,7 @@
mTest = new MpCollectionDataModel(mStubData);
MpMpxCollectionData::resetItemDataCounter();
mTest->mCollectionData->mItemDataReturn = true;
+ mTest->mCollectionData->mCollectionTitleReturn = true;
}
/*!
@@ -150,26 +146,32 @@
// - It sets correct row count
QCOMPARE(mTest->mRowCount, 100);
QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 1);
- // Stub QAbstractListModel to verify call to reset()
- mTest->mCollectionData->mCount = 100;
+
+ mTest->mCollectionData->mCount = 50;
mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
mTest->refreshModel();
// Verify that:
// - It sets correct row count
- QCOMPARE(mTest->mRowCount, 100);
+ QCOMPARE(mTest->mRowCount, 50);
QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 2);
-}
-
-/*!
- Tests refreshModel() request with empty data model.
- */
-void TestMpCollectionDataModel::testRefreshModelZeroCount()
-{
- mTest->mCollectionData->mCount = 0;
+
+ mTest->mCollectionData->mCount = 150;
+ mTest->mCollectionData->mContext = ECollectionContextAlbumsMediaWall;
mTest->refreshModel();
// Verify that:
// - It sets correct row count
- QCOMPARE(mTest->mRowCount, 0);
+ QCOMPARE(mTest->mRowCount, 150);
+ QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 3);
+
+
+ mTest->mCollectionData->mCount = 200;
+ mTest->mCollectionData->mContext = ECollectionContextAllSongs;
+ mTest->refreshModel();
+ // Verify that:
+ // - It sets correct row count
+ // - It shouldn't trigger first screen cache
+ QCOMPARE(mTest->mRowCount, 200);
+ QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 3);
}
/*!
@@ -196,18 +198,16 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 2);
- QCOMPARE(dataList.at(0), QString("Title"));
- QCOMPARE(dataList.at(1), QString("Artist"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("Artist1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
-
-
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
@@ -217,8 +217,8 @@
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
+ mTest->mCollectionData->mItemDataReturn = false;
mTest->mCollectionData->mContext = ECollectionContextAllSongs;
- mTest->mCollectionData->mItemDataReturn = false;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -233,7 +233,7 @@
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
@@ -255,15 +255,15 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
- QCOMPARE(dataList.at(0), QString("Title"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
@@ -273,8 +273,8 @@
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
+ mTest->mCollectionData->mItemDataReturn = false;
mTest->mCollectionData->mContext = ECollectionContextArtists;
- mTest->mCollectionData->mItemDataReturn = false;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -284,19 +284,19 @@
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
-
+
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
}
/*!
- Tests data() request for Artist Albums context.
+ Tests data() request for ArtistAlbums context.
*/
void TestMpCollectionDataModel::testDataArtistAlbums()
{
@@ -311,26 +311,26 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
- QCOMPARE(dataList.at(0), QString("Title"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.userType(), QMetaType::type("QIcon"));
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
- Tests data() request for Artist Albums context with no data available.
+ Tests data() request for ArtistAlbums context with no data available.
*/
void TestMpCollectionDataModel::testDataArtistAlbumsNoData()
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
+ mTest->mCollectionData->mItemDataReturn = false;
mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
- mTest->mCollectionData->mItemDataReturn = false;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -340,25 +340,25 @@
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
-
+
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.userType(), QMetaType::type("QIcon"));
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
}
/*!
- Tests data() request for Artist Songs context.
+ Tests data() request for ArtistAlbumsTBone context.
*/
-void TestMpCollectionDataModel::testDataArtistSongs()
+void TestMpCollectionDataModel::testDataArtistAlbumsTBone()
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
- mTest->mCollectionData->mContext = ECollectionContextArtistSongs;
+ mTest->mCollectionData->mContext = ECollectionContextArtistAlbumsTBone;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -367,26 +367,76 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 2);
- QCOMPARE(dataList.at(0), QString("Title"));
- QCOMPARE(dataList.at(1), QString("Album"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("CollectionTitle"));
+
+ // Qt::DecorationRole
+ data = mTest->data(modelIndex, Qt::DecorationRole);
+ QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+}
+
+/*!
+ Tests data() request for ArtistAlbumsTBone context with no data available.
+ */
+void TestMpCollectionDataModel::testDataArtistAlbumsTBoneNoData()
+{
+ mTest->mCollectionData->mCount = 100;
+ mTest->mRowCount = 100;
+ mTest->mCollectionData->mItemDataReturn = false;
+ mTest->mCollectionData->mCollectionTitleReturn = false;
+ mTest->mCollectionData->mContext = ECollectionContextArtistAlbumsTBone;
+
+ QModelIndex modelIndex = mHelper->indexFor(1);
+
+ // Qt::DisplayRole
+ QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
+ QCOMPARE(data.canConvert(QVariant::StringList), true);
+ QStringList dataList = data.toStringList();
+ QCOMPARE(dataList.count(), 2);
+ QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
+ QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
+
+ // Qt::DecorationRole
+ data = mTest->data(modelIndex, Qt::DecorationRole);
+ QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+}
+
+/*!
+ Tests data() request for ArtistAllSongs context.
+ */
+void TestMpCollectionDataModel::testDataArtistAllSongs()
+{
+ mTest->mCollectionData->mCount = 100;
+ mTest->mRowCount = 100;
+ mTest->mCollectionData->mContext = ECollectionContextArtistAllSongs;
+
+ QModelIndex modelIndex = mHelper->indexFor(1);
+
+ // Qt::DisplayRole
+ QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
+ QCOMPARE(data.canConvert(QVariant::StringList), true);
+ QStringList dataList = data.toStringList();
+ QCOMPARE(dataList.count(), 2);
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("Album1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
- Tests data() request for Artists context with no data available.
+ Tests data() request for ArtistAllSongs context with no data available.
*/
-void TestMpCollectionDataModel::testDataArtistSongsNoData()
+void TestMpCollectionDataModel::testDataArtistAllSongsNoData()
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
- mTest->mCollectionData->mContext = ECollectionContextArtistSongs;
+ mTest->mCollectionData->mContext = ECollectionContextArtistAllSongs;
mTest->mCollectionData->mItemDataReturn = false;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -397,19 +447,18 @@
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 2);
QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
- QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
-
+ QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown3"));
+
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
}
-
/*!
Tests data() request for Albums context.
*/
@@ -426,16 +475,16 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 2);
- QCOMPARE(dataList.at(0), QString("Title"));
- QCOMPARE(dataList.at(1), QString("Artist"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("Artist1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.userType(), QMetaType::type("QIcon"));
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
@@ -461,20 +510,20 @@
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.userType(), QMetaType::type("QIcon"));
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
}
/*!
- Tests data() request for AlbumSongs context.
+ Tests data() request for AlbumsTBone context.
*/
-void TestMpCollectionDataModel::testDataAlbumSongs()
+void TestMpCollectionDataModel::testDataAlbumsTBone()
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
- mTest->mCollectionData->mContext = ECollectionContextAlbumSongs;
+ mTest->mCollectionData->mContext = ECollectionContextAlbumsTBone;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -482,26 +531,27 @@
QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
- QCOMPARE(dataList.count(), 1);
- QCOMPARE(dataList.at(0), QString("Title"));
+ QCOMPARE(dataList.count(), 2);
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("Artist1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
- QCOMPARE(data.isNull(), true);
-
+ QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
- Tests data() request for AlbumSongs context with no data available.
+ Tests data() request for AlbumsTBone context with no data available.
*/
-void TestMpCollectionDataModel::testDataAlbumSongsNoData()
+void TestMpCollectionDataModel::testDataAlbumsTBoneNoData()
{
mTest->mCollectionData->mCount = 100;
mTest->mRowCount = 100;
- mTest->mCollectionData->mContext = ECollectionContextAlbumSongs;
+ mTest->mCollectionData->mContext = ECollectionContextAlbumsTBone;
mTest->mCollectionData->mItemDataReturn = false;
QModelIndex modelIndex = mHelper->indexFor(1);
@@ -510,8 +560,13 @@
QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
- QCOMPARE(dataList.count(), 1);
+ QCOMPARE(dataList.count(), 2);
QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
+ QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
+
+ // Qt::DecorationRole
+ data = mTest->data(modelIndex, Qt::DecorationRole);
+ QCOMPARE(data.userType(), QMetaType::type("QIcon"));
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -534,15 +589,15 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
- QCOMPARE(dataList.at(0), QString("Title"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
@@ -563,7 +618,7 @@
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 1);
QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
@@ -585,16 +640,16 @@
QCOMPARE(data.canConvert(QVariant::StringList), true);
QStringList dataList = data.toStringList();
QCOMPARE(dataList.count(), 2);
- QCOMPARE(dataList.at(0), QString("Title"));
- QCOMPARE(dataList.at(1), QString("Artist"));
+ QCOMPARE(dataList.at(0), QString("Title1"));
+ QCOMPARE(dataList.at(1), QString("Artist1"));
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
- QCOMPARE(data.toString(), QString("Title"));
+ QCOMPARE(data.toString(), QString("Title1"));
}
/*!
@@ -620,7 +675,7 @@
// Qt::DecorationRole
data = mTest->data(modelIndex, Qt::DecorationRole);
QCOMPARE(data.isNull(), true);
-
+
// Hb::IndexFeedbackRole
data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
QCOMPARE(data.toString(), QString(""));
@@ -679,18 +734,18 @@
MpMpxCollectionData::resetItemDataCounter();
mTest->mCollectionData->mCount = 2;
mTest->mRowCount = 2;
-
+
QVERIFY(!mTest->removeRows(0,0,QModelIndex())); //no rows to remove.
QVERIFY(!mTest->removeRows(0,2,QModelIndex())); //more than one row.
QVERIFY(!mTest->removeRows(2,1,QModelIndex())); //row out of bounds.
-
+
//a valid row to be removed.
QVERIFY(mTest->removeRows(0,1,QModelIndex()));
QCOMPARE(spy.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(MpMpxCollectionData::getremoveItemCounter(), 1);
QCOMPARE(mTest->mRowCount, 1);
-
+
}
/*!
@@ -715,7 +770,7 @@
QMimeData *data;
data = mTest->mimeData(indexList);
QVERIFY(data); //one item row 2
-
+
QByteArray encoded = data->data(QLatin1String("application/x-mpcollectiondatamodelrowandids"));
QDataStream stream(&encoded, QIODevice::ReadOnly);
int rowFrom;
@@ -737,7 +792,7 @@
int indexFrom = 5;
int containerId = 123;
int itemId = 20;
-
+
QSignalSpy spy(mTest, SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)));
QSignalSpy spy2(mTest, SIGNAL(rowsInserted(QModelIndex, int, int)));
QSignalSpy spy3(mTest, SIGNAL(orderChanged(int, int, int, int)));
@@ -762,8 +817,8 @@
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
delete data;
- }
-
+ }
+
{//drop row out of bounds
QMimeData *data = new QMimeData();
QByteArray encoded;
@@ -777,8 +832,8 @@
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,15,0,QModelIndex()));
delete data;
- }
-
+ }
+
{//incorrect action
QMimeData *data = new QMimeData();
QByteArray encoded;
@@ -792,8 +847,8 @@
QVERIFY(!mTest->dropMimeData(data,Qt::IgnoreAction,0,0,QModelIndex()));
delete data;
- }
-
+ }
+
{//bad item ids
QMimeData *data = new QMimeData();
QByteArray encoded;
@@ -804,8 +859,8 @@
mTest->mRowCount = 2;
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
delete data;
- }
-
+ }
+
{//bad item ids 2
QMimeData *data = new QMimeData();
QByteArray encoded;
@@ -818,8 +873,8 @@
mTest->mRowCount = 2;
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
delete data;
- }
-
+ }
+
{//data with bad format
QMimeData *data = new QMimeData();
QByteArray encoded;
@@ -829,11 +884,11 @@
stream << itemId;
data->setData(QLatin1String("application/x-blabla"), encoded);
MpMpxCollectionData::setCachedItemId(itemId);
- mTest->mRowCount = 10;
+ mTest->mRowCount = 10;
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
delete data;
- }
-
+ }
+
QMimeData *data = new QMimeData();
QByteArray encoded;
QDataStream stream(&encoded, QIODevice::WriteOnly);
@@ -843,16 +898,16 @@
data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
MpMpxCollectionData::setCachedItemId(0);
mTest->mRowCount = 10;
-
+
// not matching item id
QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
-
+
//matching item id
MpMpxCollectionData::setCachedItemId(itemId);
-
+
QVERIFY(mTest->dropMimeData(data,Qt::MoveAction,5,0,QModelIndex()));
- delete data;
+ delete data;
QCOMPARE(spy.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
@@ -864,5 +919,51 @@
QCOMPARE(MpMpxCollectionData::getInsertCachedItemCounter(),1);
}
+/*!
+ Tests setContext()
+ */
+void TestMpCollectionDataModel::testSetContext()
+{
+ mTest->mCollectionData->setContext(ECollectionContextArtistAlbums);
+ QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextArtistAlbums);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::ListThumb);
+
+ mTest->mCollectionData->mCount = 3;
+ mTest->mCollectionData->setContext(ECollectionContextArtistAlbumsTBone);
+ QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextArtistAlbumsTBone);
+ QCOMPARE(mTest->mAlbumIndexOffset, 1);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
+
+ mTest->mCollectionData->mCount = 1;
+ mTest->mCollectionData->setContext(ECollectionContextArtistAlbumsTBone);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
+
+ mTest->mCollectionData->setContext(ECollectionContextAlbums);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::ListThumb);
+
+ mTest->mCollectionData->setContext(ECollectionContextAlbumsTBone);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
+
+ mTest->mCollectionData->setContext(ECollectionContextAlbumsMediaWall);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::MediaWallThumb);
+
+ // All other context should have index set to zero.
+ mTest->mCollectionData->setContext(ECollectionContextAllSongs);
+ QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextAllSongs);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ mTest->mCollectionData->setContext(ECollectionContextArtists);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ mTest->mCollectionData->setContext(ECollectionContextArtistAllSongs);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ mTest->mCollectionData->setContext(ECollectionContextPlaylists);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+ mTest->mCollectionData->setContext(ECollectionContextPlaylistSongs);
+ QCOMPARE(mTest->mAlbumIndexOffset, 0);
+}
// End of file
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpcollectionalbumartmanager.h
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpcollectionalbumartmanager.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpcollectionalbumartmanager.h Fri May 14 18:54:37 2010 -0500
@@ -22,6 +22,8 @@
#include
#include
+#include "mpcommondefs.h"
+
class MpMpxCollectionData;
class MpCollectionAlbumArtManager : public QObject
@@ -41,6 +43,7 @@
const QIcon* albumArt( int index );
void cacheFirstScreen();
void cancel();
+ void setThumbnailSize( MpCommon::MpThumbType type );
signals:
@@ -48,9 +51,10 @@
public:
- QIcon *mIcon;
- int mAlbumArtCount;
- int mCacheAlbumArtCount;
+ QIcon *mIcon;
+ int mAlbumArtCount;
+ int mCacheAlbumArtCount;
+ MpCommon::MpThumbType mThumbType;
};
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h Fri May 14 18:54:37 2010 -0500
@@ -47,20 +47,25 @@
static void setCachedItemId (int id);
static int getInsertCachedItemCounter();
static void resetInsertCachedItemCounter();
-
+
// Stub functions
explicit MpMpxCollectionData( QObject *parent=0 );
virtual ~MpMpxCollectionData();
TCollectionContext context() const;
+
int count() const;
+ QString collectionTitle() const;
QString itemData( int index, MpMpxCollectionData::DataType type ) const;
+
int containerId();
int itemId(int index);
void removeItem(int index);
bool testCachedItem( int itemId );
void insertCachedItem(int index);
+ void setContext( TCollectionContext context );
+
signals:
void contextChanged( TCollectionContext context );
@@ -70,6 +75,7 @@
TCollectionContext mContext;
int mCount;
bool mItemDataReturn;
+ bool mCollectionTitleReturn;
};
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpcollectionalbumartmanager.cpp
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpcollectionalbumartmanager.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpcollectionalbumartmanager.cpp Fri May 14 18:54:37 2010 -0500
@@ -86,3 +86,12 @@
void MpCollectionAlbumArtManager::cancel()
{
}
+
+/*!
+ Stub function.
+ */
+void MpCollectionAlbumArtManager::setThumbnailSize( MpCommon::MpThumbType type )
+{
+ mThumbType = type;
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp Fri May 14 18:54:37 2010 -0500
@@ -107,7 +107,8 @@
: QObject(parent),
mContext(ECollectionContextUnknown),
mCount(0),
- mItemDataReturn(true)
+ mItemDataReturn(true),
+ mCollectionTitleReturn(true)
{
gInitCounter++;
}
@@ -139,6 +140,19 @@
/*!
Stub function.
*/
+QString MpMpxCollectionData::collectionTitle() const
+{
+ if ( mCollectionTitleReturn ) {
+ return QString("CollectionTitle");
+ }
+ else {
+ return QString();
+ }
+}
+
+/*!
+ Stub function.
+ */
QString MpMpxCollectionData::itemData( int index, MpMpxCollectionData::DataType type ) const
{
if ( index < 0 || index > mCount ) {
@@ -153,18 +167,23 @@
switch ( type ) {
case MpMpxCollectionData::Title:
data = QString("Title");
+ data.append( QString().setNum(index) );
break;
case MpMpxCollectionData::Artist:
data = QString("Artist");
+ data.append( QString().setNum(index) );
break;
case MpMpxCollectionData::Album:
data = QString("Album");
+ data.append( QString().setNum(index) );
break;
case MpMpxCollectionData::Count:
data = QString("Count");
+ data.append( QString().setNum(index) );
break;
case MpMpxCollectionData::AlbumArtUri:
data = QString("AlbumArtUri");
+ data.append( QString().setNum(index) );
break;
default:
qFatal("MpMpxCollectionData::itemData called with unknown type");
@@ -184,7 +203,7 @@
/*!
Stub function.
*/
-int MpMpxCollectionData::itemId(int index)
+int MpMpxCollectionData::itemId( int index )
{
return 2000+index;
}
@@ -192,7 +211,7 @@
/*!
Stub function.
*/
-void MpMpxCollectionData::removeItem(int index)
+void MpMpxCollectionData::removeItem( int index )
{
Q_UNUSED(index);
gRemoveItemCount++;
@@ -210,10 +229,20 @@
/*!
Stub function.
*/
-void MpMpxCollectionData::insertCachedItem(int index)
+void MpMpxCollectionData::insertCachedItem( int index )
{
Q_UNUSED(index);
gInsertCachedItemCount++;
return ;
}
+/*!
+ Stub function.
+ */
+void MpMpxCollectionData::setContext( TCollectionContext context )
+{
+ mContext = context;
+ emit contextChanged(mContext);
+ return ;
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiondatamodel/unittest_mpcollectiondatamodel_template.pkg
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/unittest_mpcollectiondatamodel_template.pkg Fri Apr 30 19:33:32 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-; unittest_mpcollectiondatamodel_template.pkg generated by qmake at 2010-04-05T18:50:04
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"unittest_mpcollectiondatamodel"},(0xE05e4948),1,0,0
-
-; Localised Vendor name
-%{"Vendor"}
-
-; Unique Vendor name
-:"Vendor"
-
-; Manual PKG pre-rules from PRO files
-; Default HW/platform dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-
-; Default dependency to Qt libraries
-(0x2001E61C), , , , {"Qt"}
-
-; Executable and default resource files
-"/epoc32/release/$(PLATFORM)/$(TARGET)/unittest_mpcollectiondatamodel.exe" - "!:\sys\bin\unittest_mpcollectiondatamodel.exe"
-"/epoc32/data/z/resource/apps/unittest_mpcollectiondatamodel.rsc" - "!:\resource\apps\unittest_mpcollectiondatamodel.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpcollectiondatamodel_reg.rsc" - "!:\private\10003a3f\import\apps\unittest_mpcollectiondatamodel_reg.rsc"
-
-; Manual PKG post-rules from PRO files
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_helper.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_helper.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,44 @@
+/*
+* 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: Unit test helper for mpcollectiondatamodel
+*
+*/
+
+#ifndef TESTHELPER_H
+#define TESTHELPER_H
+
+#include
+
+class TestHelper : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+
+ TestHelper(QObject *parent=0);
+ virtual ~TestHelper();
+
+ // These are dummy; We have to inherit from QAbstractListModel so that
+ // we can invoke the protected member QAbstractItemModel::createIndex()
+ int rowCount(const QModelIndex &parent=QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const;
+
+ QModelIndex indexFor(int index);
+};
+
+#endif // TESTHELPER_H
+
+
+
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_mpcollectiontbonelistdatamodel.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_mpcollectiontbonelistdatamodel.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,69 @@
+/*
+* 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: Unit test for mpcollectiontbonelistdatamodel
+*
+*/
+
+#ifndef TESTMPCOLLECTIONTBONELISTDATAMODEL_H
+#define TESTMPCOLLECTIONTBONELISTDATAMODEL_H
+
+#include
+
+class QTranslator;
+class MpCollectionTBoneListDataModel;
+class MpMpxCollectionData;
+class TestHelper;
+
+class TestMpCollectionTBoneListDataModel : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ TestMpCollectionTBoneListDataModel();
+ virtual ~TestMpCollectionTBoneListDataModel();
+
+signals:
+
+ void updateAlbumArt( int index );
+
+public slots:
+
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+
+ void testMemberCleanup();
+ void testRefreshModel();
+ void testData();
+ void testDataNoData();
+ void testDataAnyOtherRole();
+
+private:
+
+ MpCollectionTBoneListDataModel *mTest;
+ TestHelper *mHelper;
+ MpMpxCollectionData *mStubData;
+ QTranslator *mMpTranslator; // Own
+
+};
+
+#endif // TESTMPCOLLECTIONTBONELISTDATAMODEL_H
+
+
+
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_helper.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_helper.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,57 @@
+/*
+* 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: Unit test helper for TestHelper
+*
+*/
+
+#include "unittest_helper.h"
+
+
+TestHelper::TestHelper(QObject *parent)
+ : QAbstractListModel(parent)
+{
+}
+
+TestHelper::~TestHelper()
+{
+}
+
+/*!
+ Dummy function to satisfy QAbstractListModel inheritance.
+ */
+int TestHelper::rowCount( const QModelIndex &parent ) const
+{
+ Q_UNUSED(parent);
+ return 0;
+}
+
+/*!
+ Dummy function to satisfy QAbstractListModel inheritance.
+ */
+QVariant TestHelper::data(const QModelIndex &index, int role) const
+{
+ Q_UNUSED(index);
+ Q_UNUSED(role);
+ return QVariant();
+}
+
+/*!
+ Slot to be called when album art for the \a index needs to be updated.
+ */
+QModelIndex TestHelper::indexFor(int index)
+{
+ return QAbstractItemModel::createIndex(index, 0);
+}
+
+// End of file
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_mpcollectiontbonelistdatamodel.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_mpcollectiontbonelistdatamodel.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,190 @@
+/*
+* 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: Unit test for mpcollectiontbonelistdatamodel
+*
+*/
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include "unittest_mpcollectiontbonelistdatamodel.h"
+#include "unittest_helper.h"
+#include "stub/inc/mpmpxcollectiondata.h"
+
+// Do this so we can access all member variables.
+#define private public
+#include "mpcollectiontbonelistdatamodel.h"
+#undef private
+
+/*!
+ Make our test case a stand-alone executable that runs all the test functions.
+ */
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ TestMpCollectionTBoneListDataModel tv;
+
+ if ( argc > 1 ) {
+ return QTest::qExec( &tv, argc, argv);
+ }
+ else {
+ char *pass[3];
+ pass[0] = argv[0];
+ pass[1] = "-o";
+ pass[2] = "c:\\data\\unittest_mpcollectiontbonelistdatamodel.txt";
+
+ return QTest::qExec(&tv, 3, pass);
+ }
+}
+
+TestMpCollectionTBoneListDataModel::TestMpCollectionTBoneListDataModel()
+ : mTest(0),
+ mHelper(0),
+ mStubData(0),
+ mMpTranslator(0)
+{
+}
+
+TestMpCollectionTBoneListDataModel::~TestMpCollectionTBoneListDataModel()
+{
+ delete mTest;
+ delete mHelper;
+ delete mStubData;
+ delete mMpTranslator;
+}
+
+/*!
+ Called before the first testfunction is executed.
+ */
+void TestMpCollectionTBoneListDataModel::initTestCase()
+{
+ QString lang = QLocale::system().name();
+ QString path = QString("z:/resource/qt/translations/");
+ bool translatorLoaded = false;
+
+ mMpTranslator = new QTranslator(this);
+ translatorLoaded = mMpTranslator->load(path + "musicplayer_" + lang);
+ if ( translatorLoaded ) {
+ qApp->installTranslator(mMpTranslator);
+ }
+
+ mStubData = new MpMpxCollectionData();
+ mHelper = new TestHelper();
+}
+
+/*!
+ Called after the last testfunction was executed.
+ */
+void TestMpCollectionTBoneListDataModel::cleanupTestCase()
+{
+ delete mStubData;
+ mStubData = 0;
+ delete mHelper;
+ mHelper = 0;
+}
+
+/*!
+ Called before each testfunction is executed.
+ */
+void TestMpCollectionTBoneListDataModel::init()
+{
+ mTest = new MpCollectionTBoneListDataModel(mStubData);
+ mTest->mCollectionData->mItemDataReturn = true;
+}
+
+/*!
+ Called after every testfunction.
+ */
+void TestMpCollectionTBoneListDataModel::cleanup()
+{
+ delete mTest;
+ mTest = 0;
+}
+
+/*!
+ Tests correct cleanup of member variables.
+ */
+void TestMpCollectionTBoneListDataModel::testMemberCleanup()
+{
+ cleanup();
+ int count = MpMpxCollectionData::getInitCounter();
+ init();
+ cleanup();
+ QCOMPARE(MpMpxCollectionData::getInitCounter(), count);
+}
+
+/*!
+ Tests refreshModel() request.
+ */
+void TestMpCollectionTBoneListDataModel::testRefreshModel()
+{
+ mTest->mCollectionData->mAlbumSongCount = 10;
+ mTest->refreshModel();
+ QModelIndex modelIndex = mHelper->indexFor(1);
+ // Verify that:
+ // - It sets correct row count
+ QCOMPARE(mTest->rowCount(modelIndex), 10);
+}
+
+/*!
+ Tests data() request.
+ */
+void TestMpCollectionTBoneListDataModel::testData()
+{
+ QModelIndex modelIndex = mHelper->indexFor(1);
+
+ // Qt::DisplayRole
+ QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
+ QCOMPARE(data.canConvert(QVariant::StringList), true);
+ QStringList dataList = data.toStringList();
+ QCOMPARE(dataList.count(), 1);
+ QCOMPARE(dataList.at(0), QString("Title1"));
+}
+
+/*!
+ Tests data() request with no data available.
+ */
+void TestMpCollectionTBoneListDataModel::testDataNoData()
+{
+ mTest->mCollectionData->mItemDataReturn = false;
+
+ QModelIndex modelIndex = mHelper->indexFor(1);
+
+ // Qt::DisplayRole
+ QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
+ QCOMPARE(data.canConvert(QVariant::StringList), true);
+ QStringList dataList = data.toStringList();
+ QCOMPARE(dataList.count(), 1);
+ QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
+}
+
+/*!
+ Tests data() request for a role it doesn't support.
+ Make sure it doesn't crash.
+ */
+void TestMpCollectionTBoneListDataModel::testDataAnyOtherRole()
+{
+ QModelIndex modelIndex = mHelper->indexFor(1);
+
+ // Qt::DecorationRole
+ QVariant data = mTest->data(modelIndex, Qt::DecorationRole);
+ QCOMPARE(data.isValid(), false);
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/inc/mpmpxcollectiondata.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/inc/mpmpxcollectiondata.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,68 @@
+/*
+* 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: MpMpxCollectionData stub for testing MpCollectionDataModel
+*
+*/
+
+#ifndef MPMPXCOLLECTIONDATA_H
+#define MPMPXCOLLECTIONDATA_H
+
+#include
+
+#include "mpmpxcollectionviewdefs.h"
+
+
+class MpMpxCollectionData : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ enum DataType {
+ Title,
+ Uri,
+ Duration,
+ Count,
+ Artist,
+ Album,
+ Genre,
+ Rating,
+ AlbumArtUri
+ };
+
+ // Test utility functions
+ static int getInitCounter();
+ static void resetInitCounter();
+
+ // Stub functions
+ explicit MpMpxCollectionData( QObject *parent=0 );
+ virtual ~MpMpxCollectionData();
+
+ int albumSongsCount() const;
+ QString albumSongData( int index, MpMpxCollectionData::DataType type ) const;
+
+signals:
+
+ void contextChanged( TCollectionContext context );
+ void refreshAlbumSongs();
+
+public:
+
+ int mAlbumSongCount;
+ bool mItemDataReturn;
+
+};
+
+#endif // MPMPXCOLLECTIONDATA_H
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/src/mpmpxcollectiondata.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/src/mpmpxcollectiondata.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,89 @@
+/*
+* 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: MpMpxCollectionData stub for testing MpCollectionDataModel
+*
+*/
+
+#include "mptrace.h"
+#include "stub/inc/mpmpxcollectiondata.h"
+
+
+int gInitCounter = 0;
+
+/*!
+ Returns gInitCounter.
+ gInitCounter counts the number of constructor/destructor calls.
+ */
+int MpMpxCollectionData::getInitCounter()
+{
+ return gInitCounter;
+}
+
+/*!
+ Resets gInitCounter to zero.
+ */
+void MpMpxCollectionData::resetInitCounter()
+{
+ gInitCounter = 0;
+}
+
+
+/*!
+ Stub function.
+ */
+MpMpxCollectionData::MpMpxCollectionData( QObject *parent )
+ : QObject(parent),
+ mAlbumSongCount(0),
+ mItemDataReturn(true)
+{
+ gInitCounter++;
+}
+
+/*!
+ Stub function.
+ */
+MpMpxCollectionData::~MpMpxCollectionData()
+{
+ gInitCounter--;
+}
+
+/*!
+ Stub function.
+ */
+int MpMpxCollectionData::albumSongsCount() const
+{
+ return mAlbumSongCount;
+}
+
+/*!
+ Stub function.
+ */
+QString MpMpxCollectionData::albumSongData( int index, MpMpxCollectionData::DataType type ) const
+{
+ QString data;
+ if ( !mItemDataReturn ) {
+ return data;
+ }
+ switch ( type ) {
+ case MpMpxCollectionData::Title:
+ data = QString("Title");
+ data.append( QString().setNum(index) );
+ break;
+ default:
+ qFatal("MpMpxCollectionData::itemData called with unknown type");
+ break;
+ }
+ return data;
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/unittest_mpcollectiontbonelistdatamodel.pro
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/unittest_mpcollectiontbonelistdatamodel.pro Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,45 @@
+#
+# 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: Unit test for mpcollectiontbonelistdatamodel
+#
+
+
+TEMPLATE = app
+CONFIG += qtestlib hb
+CONFIG += symbian_test
+TARGET = unittest_mpcollectiontbonelistdatamodel
+TARGET.CAPABILITY = CAP_APPLICATION
+
+DEPENDPATH += .
+INCLUDEPATH += . \
+ stub/inc \
+ ../../inc \
+ ../../../inc
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+LIBS += -lestor.dll \
+ -lfbscli.dll
+
+HEADERS += inc/unittest_mpcollectiontbonelistdatamodel.h \
+ inc/unittest_helper.h \
+ stub/inc/mpmpxcollectiondata.h \
+ ../../../inc/mpcollectiontbonelistdatamodel.h \
+
+SOURCES += src/unittest_mpcollectiontbonelistdatamodel.cpp \
+ src/unittest_helper.cpp \
+ stub/src/mpmpxcollectiondata.cpp \
+ ../../src/mpcollectiontbonelistdatamodel.cpp
+
+DEFINES += BUILD_MPDATA_LIB
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h Fri May 14 18:54:37 2010 -0500
@@ -19,6 +19,7 @@
#define TESTMPMPXCOLLECTIONDATA_H
#include
+#include "mpmpxcollectionviewdefs.h"
class MpMpxCollectionData;
class MpMpxCollectionDataPrivate;
@@ -28,17 +29,19 @@
Q_OBJECT
public:
+
TestMpMpxCollectionData();
virtual ~TestMpMpxCollectionData();
+public slots:
-public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
+
void testConstructor();
void testContextRetrieval();
void testCount();
@@ -54,8 +57,14 @@
void testRemoveItem();
void testTestCachedItem();
void testInsertCachedItemItem();
-
+ void testSetContext();
+ void testSetContextMediaWall();
+ void testSetAlbumContent();
+ void testSetCurrentAlbum();
+ void testAlbumSongData();
+
private:
+
MpMpxCollectionData *mTest;
MpMpxCollectionDataPrivate *mTestPrivate;
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp Fri May 14 18:54:37 2010 -0500
@@ -17,8 +17,6 @@
#include
#include
-#include
-#include
#include
#include
@@ -46,45 +44,46 @@
struct TTestAttrs
{
+ const TInt GeneralId;
const wchar_t* GeneralTitle;
const wchar_t* MusicArtist;
const TInt GeneralCount;
const wchar_t* MusicAlbumArtFileName;
};
-
+
const TTestAttrs KAllSongsTestData[] =
{
- { L"Title 1", L"Artist 1", 1, L"e:\\data\\images\\art1.jpg" }
- ,{ L"Title 2", L"Artist 2", 1, L"e:\\data\\images\\art2.jpg" }
- ,{ L"Title 3", L"Artist 3", 1, L"e:\\data\\images\\art3.jpg" }
- ,{ L"Title 4", L"Artist 4", 1, L"e:\\data\\images\\art4.jpg" }
- ,{ L"Title 5", L"Artist 5", 1, L"e:\\data\\images\\art5.jpg" }
- ,{ L"Title 6", L"Artist 6", 1, L"e:\\data\\images\\art6.jpg" }
- ,{ L"Title 7", L"Artist 7", 1, L"e:\\data\\images\\art7.jpg" }
- ,{ L"Title 8", L"Artist 8", 1, L"e:\\data\\images\\art8.jpg" }
- ,{ L"Title 9", L"Artist 9", 1, L"e:\\data\\images\\art9.jpg" }
- ,{ L"Title 10", L"Artist 10", 1, L"e:\\data\\images\\art10.jpg" }
+ { 1001, L"Title 1", L"Artist 1", 1, L"e:\\data\\images\\art1.jpg" }
+ ,{ 1002, L"Title 2", L"Artist 2", 1, L"e:\\data\\images\\art2.jpg" }
+ ,{ 1003, L"Title 3", L"Artist 3", 1, L"e:\\data\\images\\art3.jpg" }
+ ,{ 1004, L"Title 4", L"Artist 4", 1, L"e:\\data\\images\\art4.jpg" }
+ ,{ 1005, L"Title 5", L"Artist 5", 1, L"e:\\data\\images\\art5.jpg" }
+ ,{ 1006, L"Title 6", L"Artist 6", 1, L"e:\\data\\images\\art6.jpg" }
+ ,{ 1007, L"Title 7", L"Artist 7", 1, L"e:\\data\\images\\art7.jpg" }
+ ,{ 1008, L"Title 8", L"Artist 8", 1, L"e:\\data\\images\\art8.jpg" }
+ ,{ 1009, L"Title 9", L"Artist 9", 1, L"e:\\data\\images\\art9.jpg" }
+ ,{ 1010, L"Title 10", L"Artist 10", 1, L"e:\\data\\images\\art10.jpg" }
};
-
-
+
+
/*!
Make our test case a stand-alone executable that runs all the test functions.
*/
int main(int argc, char *argv[])
{
- HbApplication app(argc, argv);
- HbMainWindow window;
-
TestMpMpxCollectionData tv;
- char *pass[3];
- pass[0] = argv[0];
- pass[1] = "-o";
- pass[2] = "c:\\data\\unittest_mpmpxcollectiondata.txt";
+ if ( argc > 1 ) {
+ return QTest::qExec( &tv, argc, argv);
+ }
+ else {
+ char *pass[3];
+ pass[0] = argv[0];
+ pass[1] = "-o";
+ pass[2] = "c:\\data\\unittest_mpmpxcollectiondata.txt";
- int res = QTest::qExec(&tv, 3, pass);
-
- return res;
+ return QTest::qExec(&tv, 3, pass);
+ }
}
TestMpMpxCollectionData::TestMpMpxCollectionData()
@@ -147,7 +146,6 @@
QCOMPARE(mTest->context(), ECollectionContextPlaylistSongs);
}
-
/*!
Tests count().
*/
@@ -155,9 +153,9 @@
{
mTestPrivate->iMediaArray = NULL;
QCOMPARE(mTest->count(), 0);
-
+
CMPXMediaArray* array = CMPXMediaArray::NewL();
- CleanupStack::PushL(array);
+ CleanupStack::PushL(array);
TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
for (TInt i =0; i < count; i++) {
mTestPrivate->iMediaArray = array;
@@ -182,7 +180,7 @@
void TestMpMpxCollectionData::testCollectionTitle()
{
mTestPrivate->iContainerMedia = NULL;
- QCOMPARE(mTest->collectionTitle(), QString());
+ QCOMPARE(mTest->collectionTitle(), QString());
RArray supportedIds;
CleanupClosePushL( supportedIds );
supportedIds.AppendL( KMPXMediaIdMusic );
@@ -190,10 +188,10 @@
CMPXMedia* entries = CMPXMedia::NewL(supportedIds.Array());
CleanupStack::PopAndDestroy(&supportedIds);
CleanupStack::PushL(entries);
-
+
mTestPrivate->iContainerMedia = entries;
QCOMPARE(mTest->collectionTitle(), QString());
-
+
entries->SetTextValueL(KMPXMediaGeneralTitle, _L("All songs"));
mTestPrivate->iContainerMedia = entries;
@@ -208,9 +206,9 @@
void TestMpMpxCollectionData::testItemData()
{
CMPXMediaArray* array = CMPXMediaArray::NewL();
- CleanupStack::PushL(array);
+ CleanupStack::PushL(array);
mTestPrivate->iMediaArray = array;
-
+
TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
for (TInt i =0; i < count; i++) {
@@ -230,8 +228,7 @@
const TDesC& artist = TPtrC(reinterpret_cast(KAllSongsTestData[i].MusicArtist));
QCOMPARE(mTest->itemData( i, MpMpxCollectionData::Artist), QString::fromUtf16( artist.Ptr(), artist.Length()));
- //verification depends on language, just exercising the item.
- QVERIFY(!mTest->itemData( i, MpMpxCollectionData::Count).isNull());
+ QCOMPARE(mTest->itemData( i, MpMpxCollectionData::Count), QString().setNum(1));
const TDesC& albumArtUri = TPtrC(reinterpret_cast(KAllSongsTestData[i].MusicAlbumArtFileName));
QCOMPARE(mTest->itemData( i, MpMpxCollectionData::AlbumArtUri), QString::fromUtf16( albumArtUri.Ptr(), albumArtUri.Length()));
@@ -250,28 +247,21 @@
array->AppendL(*media);
CleanupStack::PopAndDestroy(media);
mTestPrivate->iMediaArray = array;
-
+
//Media without attributes.
QVERIFY(mTest->itemData( count, MpMpxCollectionData::Title).isNull());
QVERIFY(mTest->itemData( count, MpMpxCollectionData::Artist).isNull());
- //verification depends on language, just exercising the item.
- QVERIFY(!mTest->itemData( count, MpMpxCollectionData::Count).isNull());
+ QCOMPARE(mTest->itemData( count, MpMpxCollectionData::Count), QString().setNum(0));
QVERIFY(mTest->itemData( count, MpMpxCollectionData::AlbumArtUri).isNull());
-
+
//Media with empty attributes.
QVERIFY(mTest->itemData( count + 1, MpMpxCollectionData::Title).isNull());
QVERIFY(mTest->itemData( count + 1, MpMpxCollectionData::Artist).isNull());
- //verification depends on language, just exercising the item.
- QVERIFY(!mTest->itemData( count + 1, MpMpxCollectionData::Count).isNull());
+ QCOMPARE(mTest->itemData( count + 1, MpMpxCollectionData::Count), QString().setNum(0));
QVERIFY(mTest->itemData( count + 1, MpMpxCollectionData::AlbumArtUri).isNull());
- /*Test Attributes that are not implemented yet.
- Uri,
- Duration,
- Album,
- Genre,
- Rating,
- */
+ // Test Attributes that are not implemented yet:
+ // Uri, Duration, Album, Genre, Rating
QVERIFY(mTest->itemData( 0, MpMpxCollectionData::Uri).isNull());
QVERIFY(mTest->itemData( 0, MpMpxCollectionData::Duration).isNull());
QVERIFY(mTest->itemData( 0, MpMpxCollectionData::Album).isNull());
@@ -283,11 +273,11 @@
}
/*!
- Tests isAutoPlaylis().
+ Tests isAutoPlaylist().
*/
void TestMpMpxCollectionData::testIsAutoPlaylist()
{
- //if cotext is different than playlistsongs value returned should be false
+ //if context is different than playlistsongs value returned should be false
QVERIFY(!mTest->isAutoPlaylist());
RArray supportedIds;
CleanupClosePushL( supportedIds );
@@ -298,7 +288,7 @@
CleanupStack::PushL(entries);
CMPXMediaArray* array = CMPXMediaArray::NewL();
CleanupStack::PushL(array);
-
+
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXPlaylist);
entries->SetTextValueL(KMPXMediaGeneralTitle, _L("My Test Playlist Songs"));
@@ -311,17 +301,16 @@
QCOMPARE(spy.count(), 1);
TCollectionContext context = qvariant_cast(spy.at(0).at(0));
QCOMPARE(context, ECollectionContextPlaylistSongs);
- QVERIFY(!mTest->isAutoPlaylist());
-
+ QVERIFY(!mTest->isAutoPlaylist());
+
entries->SetTObjectValueL(
KMPXMediaGeneralNonPermissibleActions, EMPXWrite);
mTest->setMpxMedia(*entries);
QCOMPARE(spy.count(), 2);
context = qvariant_cast(spy.at(1).at(0));
QCOMPARE(context, ECollectionContextPlaylistSongs);
- QVERIFY(mTest->isAutoPlaylist());
+ QVERIFY(mTest->isAutoPlaylist());
CleanupStack::PopAndDestroy(entries);
-
}
/*!
@@ -329,9 +318,9 @@
*/
void TestMpMpxCollectionData::testIsAutoPlaylistWithIndex()
{
- //if cotext is different than playlists value returned should be false
+ // If context is different than playlists value returned should be false
QVERIFY(!mTest->isAutoPlaylist(0));
-
+
RArray supportedIds;
CleanupClosePushL( supportedIds );
supportedIds.AppendL( KMPXMediaIdMusic );
@@ -363,7 +352,7 @@
entries->SetCObjectValueL(KMPXMediaArrayContents, array);
entries->SetTObjectValueL(KMPXMediaArrayCount, array->Count());
CleanupStack::PopAndDestroy(array);
-
+
qRegisterMetaType();
QSignalSpy spy(mTest, SIGNAL(contextChanged(TCollectionContext)));
mTest->setMpxMedia(*entries);
@@ -372,6 +361,7 @@
QCOMPARE(context, ECollectionContextPlaylists);
QVERIFY(!mTest->isAutoPlaylist( 0 ));
QVERIFY(mTest->isAutoPlaylist( 1 ));
+ CleanupStack::PopAndDestroy(entries);
}
/*!
@@ -379,11 +369,9 @@
*/
void TestMpMpxCollectionData::TestItemCountWithIndex()
{
-
-
CMPXMediaArray* array = CMPXMediaArray::NewL();
CleanupStack::PushL(array);
-
+
CMPXMedia* media = CMPXMedia::NewL();
CleanupStack::PushL(media);
//no attributes
@@ -401,8 +389,7 @@
media3->SetTObjectValueL(KMPXMediaGeneralCount,20);
array->AppendL(*media3);
CleanupStack::PopAndDestroy(media3);
-
-
+
mTestPrivate->iMediaArray=array;
QCOMPARE(mTest->itemCount(0),0);
QCOMPARE(mTest->itemCount(1),0);
@@ -417,7 +404,6 @@
*/
void TestMpMpxCollectionData::testSetCollectionContextL()
{
-
RArray supportedIds;
CleanupClosePushL( supportedIds );
supportedIds.AppendL( KMPXMediaIdMusic );
@@ -426,141 +412,84 @@
CleanupStack::PopAndDestroy(&supportedIds);
CleanupStack::PushL(entries);
-
-
- /* FROM MPXDBPLUGIN.CPP
- // All Songs
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXSong ...
- ...
- // All artists
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXArtist ...
- ...
- // All albums of an artist
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXArtist ...
- ...
- // all songs for an artist
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXSong ...
- ...
- // all songs of an album for an artist
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXAlbum ...
- ...
- // All Albums
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXAlbum ...
- ...
- // All songs in one or multiple albums
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXAlbum ...
- ...
- // All playlists
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXPlaylist ...
- ...
- // All songs in a playlist
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXPlaylist ...
- ...
- // All genres
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXGenre ...
- ...
- // All songs of a genre
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXGenre ...
- ...
- // All composers
- SetMediaGeneralAttributesL(aEntries, EMPXGroup, EMPXComposer ...
- ...
- // All songs of a composer
- SetMediaGeneralAttributesL(aEntries, EMPXItem, EMPXComposer ...
- */
-
// All Songs
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXSong);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextAllSongs);
-
- // All artists
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextAllSongs);
+
+ // All artists
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXArtist);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextUnknown);//not implemented because is not in use.
-
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextArtists);
+
// All albums of an artist
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXArtist);
mTestPrivate->iContainerMedia = entries;
+ CMPXMediaArray* array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ array->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+ CMPXMedia* media2 = CMPXMedia::NewL();
+ CleanupStack::PushL(media2);
+ array->AppendL(*media2);
+ CleanupStack::PopAndDestroy(media2);
+ mTestPrivate->iMediaArray = array;
mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextUnknown);//not implemented because is not in use.
-
- // all songs for an artist
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextArtistAlbums);
+ mTestPrivate->iMediaArray = NULL;
+ CleanupStack::PopAndDestroy(array);
+
+ // All albums of an artist - Artist has only 1 album
+ entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
+ entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXArtist);
+ mTestPrivate->iContainerMedia = entries;
+ array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ CMPXMedia* media3 = CMPXMedia::NewL();
+ CleanupStack::PushL(media3);
+ array->AppendL(*media3);
+ CleanupStack::PopAndDestroy(media3);
+ mTestPrivate->iMediaArray = array;
+ mTestPrivate->SetCollectionContextL();
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextArtistAlbumsTBone);
+ mTestPrivate->iMediaArray=NULL;
+ CleanupStack::PopAndDestroy(array);
+
+ // All songs for an artist
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXSong);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextUnknown);//not implemented because is not in use.
-
- // all songs of an album for an artist
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXAlbum);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextAlbumSongs);
-
- // All Albums
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextArtistAllSongs);
+
+ // All albums
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXAlbum);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
QCOMPARE(mTestPrivate->iContext,ECollectionContextAlbums);
- // All songs in one or multiple albums
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXAlbum);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextAlbumSongs);
-
// All playlists
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXPlaylist);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
QCOMPARE(mTestPrivate->iContext,ECollectionContextPlaylists);
-
+
// All songs in a playlist
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXPlaylist);
mTestPrivate->iContainerMedia = entries;
mTestPrivate->SetCollectionContextL();
QCOMPARE(mTestPrivate->iContext,ECollectionContextPlaylistSongs);
-
- // All genres
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXGenre);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextGenres);//not in use and implementation could go away.
-
- // All songs of a genre
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXGenre);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextGenreSongs);///not in use and implementation could go away.
-
- // All composers
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXComposer);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextUnknown);//not implemented because is not in use.
-
- // All songs of a composer
- entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
- entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXComposer);
- mTestPrivate->iContainerMedia = entries;
- mTestPrivate->SetCollectionContextL();
- QCOMPARE(mTestPrivate->iContext,ECollectionContextUnknown);//not implemented because is not in use.
-
-
+
mTestPrivate->iContainerMedia = NULL;
CleanupStack::PopAndDestroy(entries);
}
@@ -570,8 +499,6 @@
*/
void TestMpMpxCollectionData::testSetMpxMediaAllSongs()
{
-
-
RArray supportedIds;
CleanupClosePushL( supportedIds );
supportedIds.AppendL( KMPXMediaIdMusic );
@@ -592,15 +519,15 @@
array->AppendL(*media);
CleanupStack::PopAndDestroy(media);
}
-
+
entries->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
entries->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXSong);
entries->SetTextValueL(KMPXMediaGeneralTitle, _L("All songs"));
-
+
entries->SetCObjectValueL(KMPXMediaArrayContents, array);
entries->SetTObjectValueL(KMPXMediaArrayCount, array->Count());
CleanupStack::PopAndDestroy(array);
-
+
qRegisterMetaType();
QSignalSpy spy(mTest, SIGNAL(contextChanged(TCollectionContext)));
mTest->setMpxMedia(*entries);
@@ -624,7 +551,7 @@
QCOMPARE( mTest->containerId(), containerId);
delete container;
mTestPrivate->iContainerMedia = 0;
-
+
}
/*!
@@ -642,10 +569,10 @@
item->SetTObjectValueL( KMPXMediaGeneralId, itemId );
QCOMPARE( mTest->itemId(0), itemId);
-
+
delete array;
mTestPrivate->iMediaArray = 0;
-
+
}
/*!
@@ -659,12 +586,12 @@
CMPXMediaArray* array = CMPXMediaArray::NewL();
array->AppendL(item);
mTestPrivate->iMediaArray = array;
-
+
mTest->removeItem(0);
QVERIFY( mTestPrivate->iCachedRemovedItem );
QCOMPARE( int(mTestPrivate->iCachedRemovedItem->ValueTObjectL( KMPXMediaGeneralId )), itemId );
QCOMPARE( mTestPrivate->iMediaArray->Count(), 0 );
-
+
delete array;
mTestPrivate->iMediaArray = 0;
}
@@ -680,12 +607,12 @@
mTestPrivate->iCachedRemovedItem = item;
CMPXMediaArray* array = CMPXMediaArray::NewL();
mTestPrivate->iMediaArray = array;
-
+
mTest->insertCachedItem(0);
QCOMPARE( mTestPrivate->iMediaArray->Count(), 1 );
QCOMPARE( int(mTestPrivate->iMediaArray->AtL( 0 )->ValueTObjectL( KMPXMediaGeneralId )), itemId );
QVERIFY( !mTestPrivate->iCachedRemovedItem );
-
+
delete array;
mTestPrivate->iMediaArray = 0;
}
@@ -697,15 +624,234 @@
{
int itemId = 147;
CMPXMedia* item = CMPXMedia::NewL();
-
+
mTestPrivate->iCachedRemovedItem = item;
QVERIFY( !mTest->testCachedItem( itemId ) );
-
+
item->SetTObjectValueL( KMPXMediaGeneralId, itemId );
QVERIFY( mTest->testCachedItem( itemId ) );
-
+
delete mTestPrivate->iCachedRemovedItem;
mTestPrivate->iCachedRemovedItem = 0;
}
-//EOF
+/*!
+ Tests setContext().
+ */
+void TestMpMpxCollectionData::testSetContext()
+{
+ qRegisterMetaType();
+ QSignalSpy spy(mTest, SIGNAL(contextChanged(TCollectionContext)));
+ mTest->setContext(ECollectionContextPlaylistSongs);
+ // Verify that:
+ // - contextChanged() signal is emitted
+ // - Context is changed
+ // - album index mapping is not cashed.
+ QCOMPARE(spy.count(), 1);
+ TCollectionContext context = qvariant_cast(spy.at(0).at(0));
+ QCOMPARE(context, ECollectionContextPlaylistSongs);
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextPlaylistSongs);
+ QVERIFY(mTestPrivate->albumIdIndexMapping.isEmpty());
+}
+
+/*!
+ Tests setContext() for media wall use case.
+ Tests setContext() for media wall use case.
+*/
+void TestMpMpxCollectionData::testSetContextMediaWall()
+{
+ CMPXMediaArray* array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
+ for (TInt i =0; i < count; i++) {
+ mTestPrivate->iMediaArray = array;
+ QCOMPARE(mTest->count(), i);
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ media->SetTObjectValueL(KMPXMediaGeneralId, KAllSongsTestData[i].GeneralId);
+ array->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+ }
+ mTestPrivate->iMediaArray = array;
+
+ qRegisterMetaType();
+ QSignalSpy spy(mTest, SIGNAL(contextChanged(TCollectionContext)));
+
+ mTest->setContext(ECollectionContextAlbumsMediaWall);
+ // Verify that:
+ // - contextChanged() signal is emitted
+ // - Context is changed
+ // - album index mapping is cashed.
+ // - album index mapping is cleared when changing context again.
+ QCOMPARE(spy.count(), 1);
+ TCollectionContext context = qvariant_cast(spy.at(0).at(0));
+ QCOMPARE(context, ECollectionContextAlbumsMediaWall);
+ QCOMPARE(mTestPrivate->iContext, ECollectionContextAlbumsMediaWall);
+ QVERIFY(!mTestPrivate->albumIdIndexMapping.isEmpty());
+ for (TInt i =0; i < count; i++) {
+ QCOMPARE(mTest->itemIndex(KAllSongsTestData[i].GeneralId),i);
+ }
+ mTest->setContext(ECollectionContextPlaylistSongs);
+ QVERIFY(mTestPrivate->albumIdIndexMapping.isEmpty());
+ CleanupStack::PopAndDestroy(array);
+}
+
+
+/*!
+ Tests setAlbumContent().
+ */
+void TestMpMpxCollectionData::testSetAlbumContent()
+{
+ CMPXMediaArray* array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ array->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+
+ mTestPrivate->iMediaArray = array;
+ mTestPrivate->iCurrentAlbumIndex = 0;
+
+ CMPXMedia* albumContent = CMPXMedia::NewL();
+ CleanupStack::PushL(albumContent);
+ CMPXMediaArray* songArray = CMPXMediaArray::NewL();
+ CleanupStack::PushL(songArray);
+ TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
+ for (TInt i =0; i < count; i++) {
+ CMPXMedia* song = CMPXMedia::NewL();
+ CleanupStack::PushL(song);
+ songArray->AppendL(*song);
+ CleanupStack::PopAndDestroy(song);
+ }
+ albumContent->SetCObjectValueL(KMPXMediaArrayContents, songArray);
+ CleanupStack::PopAndDestroy(songArray);
+
+ // Verify that:
+ // - refreshAlbumSongs() signal is emitted
+ // - Album song count is updated correctly
+ QSignalSpy spy(mTest, SIGNAL(refreshAlbumSongs()));
+ mTest->setAlbumContent(*albumContent);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(mTest->albumSongsCount(), count);
+ QCOMPARE(mTestPrivate->iMediaArray->AtL(0)->ValueTObjectL(KMPXMediaArrayCount), count);
+
+ CleanupStack::PopAndDestroy(albumContent);
+ mTestPrivate->iMediaArray = NULL;
+ CleanupStack::PopAndDestroy(array);
+}
+
+/*!
+ Tests setCurrentAlbum().
+ */
+void TestMpMpxCollectionData::testSetCurrentAlbum()
+{
+ QSignalSpy spy(mTest, SIGNAL(refreshAlbumSongs()));
+
+ // Create media array that doesn't have the album songs yet.
+ CMPXMediaArray* array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ array->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+ mTestPrivate->iMediaArray = array;
+ mTestPrivate->iCurrentAlbumIndex = -1;
+
+ // Verify that:
+ // - refreshAlbumSongs() signal is NOT emitted
+ // - album index is set
+ // - availability is returned as false (this means that client
+ // should initiate a find)
+ bool available = mTest->setCurrentAlbum(0);
+ QCOMPARE(available, false);
+ QCOMPARE(mTest->currentAlbumIndex(), 0);
+ QCOMPARE(spy.count(), 0);
+
+ // Now populate the media (album) with songs. This is basically
+ // simulating setAlbumContent().
+ CMPXMediaArray* songArray = CMPXMediaArray::NewL();
+ CleanupStack::PushL(songArray);
+ TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
+ for (TInt i =0; i < count; i++) {
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ songArray->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+ }
+ media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ media->SetCObjectValueL(KMPXMediaArrayContents, songArray);
+ array->AppendL(*media);
+ CleanupStack::PopAndDestroy(media);
+ CleanupStack::PopAndDestroy(songArray);
+ mTestPrivate->iAlbumSongCount = 0;
+
+ // Verify that:
+ // - refreshAlbumSongs() signal is emitted
+ // - album index is set
+ // - availability is returned as true
+ // - album song count is set
+ available = mTest->setCurrentAlbum(1);
+ QCOMPARE(available, true);
+ QCOMPARE(mTest->currentAlbumIndex(), 1);
+ QCOMPARE(mTest->albumSongsCount(), count);
+ QCOMPARE(spy.count(), 1);
+
+ mTestPrivate->iMediaArray = NULL;
+ CleanupStack::PopAndDestroy(array);
+}
+
+/*!
+ Tests albumSongData().
+ */
+void TestMpMpxCollectionData::testAlbumSongData()
+{
+ // Populate the media (album) with songs. This is basically
+ // simulating setAlbumContent().
+ CMPXMediaArray* array = CMPXMediaArray::NewL();
+ CleanupStack::PushL(array);
+ CMPXMedia* media = CMPXMedia::NewL();
+ CleanupStack::PushL(media);
+ CMPXMediaArray* songArray = CMPXMediaArray::NewL();
+ CleanupStack::PushL(songArray);
+ TInt count = sizeof(KAllSongsTestData)/sizeof(TTestAttrs);
+ for (TInt i = 0; i < count; i++) {
+ CMPXMedia* song = CMPXMedia::NewL();
+ CleanupStack::PushL(song);
+ song->SetTextValueL(KMPXMediaGeneralTitle, TPtrC(reinterpret_cast(KAllSongsTestData[i].GeneralTitle)));
+ song->SetTextValueL(KMPXMediaGeneralUri, TPtrC(reinterpret_cast(KAllSongsTestData[i].MusicAlbumArtFileName)));
+ songArray->AppendL(*song);
+ CleanupStack::PopAndDestroy(song);
+ }
+ media->SetCObjectValueL(KMPXMediaArrayContents, songArray);
+ array->AppendL(*media);
+
+ mTestPrivate->iMediaArray = array;
+ mTestPrivate->iCurrentAlbumIndex = 0;
+
+ // Loop through all items to verify the album song data
+ for (TInt i =0; i < count; i++) {
+ const TDesC& title = TPtrC(reinterpret_cast(KAllSongsTestData[i].GeneralTitle));
+ QCOMPARE(mTest->albumSongData( i, MpMpxCollectionData::Title), QString::fromUtf16( title.Ptr(), title.Length()));
+
+ const TDesC& uri = TPtrC(reinterpret_cast(KAllSongsTestData[i].MusicAlbumArtFileName));
+ QCOMPARE(mTest->albumSongData( i, MpMpxCollectionData::Uri), QString::fromUtf16( uri.Ptr(), uri.Length()));
+ }
+
+ // Create a song entry that doesn't have Title or Uri.
+ CMPXMedia* song = CMPXMedia::NewL();
+ CleanupStack::PushL(song);
+ song->SetTextValueL(KMPXMediaGeneralTitle, KNullDesC );
+ song->SetTextValueL(KMPXMediaMusicArtist, KNullDesC);
+ songArray->AppendL(*song);
+ CleanupStack::PopAndDestroy(song);
+
+ // Verify that it returned empty string.
+ QVERIFY(mTest->albumSongData( count, MpMpxCollectionData::Title).isNull());
+ QVERIFY(mTest->albumSongData( count, MpMpxCollectionData::Uri).isNull());
+
+ CleanupStack::PopAndDestroy(songArray);
+ CleanupStack::PopAndDestroy(media);
+ mTestPrivate->iMediaArray = NULL;
+ CleanupStack::PopAndDestroy(array);
+}
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro Fri May 14 18:54:37 2010 -0500
@@ -14,10 +14,11 @@
# Description:
#
-
TEMPLATE = app
-CONFIG += qtestlib hb
-TARGET =
+CONFIG += qtestlib
+CONFIG += symbian_test
+TARGET = unittest_mpmpxcollectiondata
+TARGET.CAPABILITY = CAP_APPLICATION
DEPENDPATH += .
INCLUDEPATH += . \
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h
--- a/mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h Fri May 14 18:54:37 2010 -0500
@@ -50,6 +50,7 @@
void testSetUri();
void testSetAlbumArtUri();
void testThumbnailReady();
+ void testSeAlbumId();
void testSetPlaybackState();
void testCommitPlaybackInfo();
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp
--- a/mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp Fri May 14 18:54:37 2010 -0500
@@ -20,6 +20,7 @@
#include
#include
#include
+#include
#include "unittest_mpplaybackdata.h"
#include "stub/inc/thumbnailmanager_qt.h"
@@ -101,7 +102,7 @@
QCOMPARE(mTest->mThumbnailManager->getInitCounter(), 1);
QVERIFY(mTest->mDuration == 0);
QVERIFY(mTest->mPosition == 0);
- QVERIFY(!mTest->mDefaultAlbumArt);
+ QVERIFY(mTest->mDefaultAlbumArt != 0);
}
@@ -267,7 +268,7 @@
temp=0;
QSignalSpy spy(mTest, SIGNAL(albumArtReady()));
QPixmap albumArt(100,100);
- QPixmap albumArt2;
+ HbIcon albumArtIcon;
//Error
mTest->thumbnailReady(albumArt,temp,KUndefined,KUndefined);
@@ -289,8 +290,18 @@
mTest->thumbnailReady(albumArt,temp,1,0);
QCOMPARE(mTest->mReqId, KUndefined);
QCOMPARE(spy.count(),1);
- mTest->albumArt(albumArt2);
- QCOMPARE(albumArt,albumArt2);
+ mTest->albumArt(albumArtIcon);
+ QVERIFY(!albumArtIcon.isNull());
+}
+
+/*!
+ test SeAlbumId and albumId
+ */
+void TestMpPlaybackData::testSeAlbumId()
+{
+ mTest->setAlbumId(65535);
+ QCOMPARE(mTest->mAlbumId, 65535);
+ QCOMPARE(mTest->albumId(), 65535);
}
/*!
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpplaybackdata/stub/inc/thumbnailmanager_qt.h
--- a/mpdata/tsrc/unittest_mpplaybackdata/stub/inc/thumbnailmanager_qt.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpplaybackdata/stub/inc/thumbnailmanager_qt.h Fri May 14 18:54:37 2010 -0500
@@ -18,7 +18,7 @@
#ifndef THUMBNAILMANAGER_QT_H
#define THUMBNAILMANAGER_QT_H
-#include
+#include
#include
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpplaybackdata/stub/src/thumbnailmanager_qt.cpp
--- a/mpdata/tsrc/unittest_mpplaybackdata/stub/src/thumbnailmanager_qt.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpdata/tsrc/unittest_mpplaybackdata/stub/src/thumbnailmanager_qt.cpp Fri May 14 18:54:37 2010 -0500
@@ -15,7 +15,7 @@
*
*/
-#include
+#include
#include "stub/inc/thumbnailmanager_qt.h"
int gInitCounter = 0;
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpplaybackdata/unittest_mpplaybackdata_template.pkg
--- a/mpdata/tsrc/unittest_mpplaybackdata/unittest_mpplaybackdata_template.pkg Fri Apr 30 19:33:32 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-; unittest_mpplaybackdata_template.pkg generated by qmake at 2010-04-05T19:32:11
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"unittest_mpplaybackdata"},(0xE0350e5d),1,0,0
-
-; Localised Vendor name
-%{"Vendor"}
-
-; Unique Vendor name
-:"Vendor"
-
-; Manual PKG pre-rules from PRO files
-; Default HW/platform dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-
-; Default dependency to Qt libraries
-(0x2001E61C), , , , {"Qt"}
-
-; Executable and default resource files
-"/epoc32/release/$(PLATFORM)/$(TARGET)/unittest_mpplaybackdata.exe" - "!:\sys\bin\unittest_mpplaybackdata.exe"
-"/epoc32/data/z/resource/apps/unittest_mpplaybackdata.rsc" - "!:\resource\apps\unittest_mpplaybackdata.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpplaybackdata_reg.rsc" - "!:\private\10003a3f\import\apps\unittest_mpplaybackdata_reg.rsc"
-
-; Manual PKG post-rules from PRO files
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/UT_mpsongdata.pkg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/UT_mpsongdata.pkg Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,31 @@
+;
+; 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:
+;
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"unittest_mpsongdata"},(0xE003e880),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Executable and default resource files
+"/epoc32/release/armv5/udeb/unittest_mpsongdata.exe" - "!:\sys\bin\unittest_mpsongdata.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpsongdata_reg.rsc" - "!:\private\10003a3f\import\apps\unittest_mpsongdata_reg.rsc"
+
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/inc/unittest_mpsongdata.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/inc/unittest_mpsongdata.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2010 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: Unit test for mpsongdata
+*
+*/
+
+#ifndef UNITTEST_MPSONGDATA_H_
+#define UNITTEST_MPSONGDATA_H_
+
+#include
+
+class MpSongData;
+
+class TestMpSongData : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ TestMpSongData();
+ virtual ~TestMpSongData();
+
+signals:
+
+ void thumbnailReady( const QPixmap& pixmap, void *data, int id, int error );
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void testMemberCleanup();
+ void testTitle();
+ void testAlbum();
+ void testArtist();
+ void testComment();
+ void testAlbumArt();
+ void testYear();
+ void testGenre();
+ void testComposer();
+ void testAlbumtrack();
+ void testLink();
+
+ void testFileName();
+ void testMimeType();
+ void testDuration();
+ void testBitRate();
+ void testSampleRate();
+ void testSize();
+ void testModified();
+ void testCopyright();
+ void testMusicURL();
+ void testIsDrmProtected();
+
+ void testSetTitle();
+ void testSetAlbum();
+ void testSetArtist();
+ void testSetComment();
+ void testSetYear();
+ void testSetGenre();
+ void testSetComposer();
+ void testSetAlbumTrack();
+ void testSetLink();
+
+ void testSetFileName();
+ void testSetMimeType();
+ void testSetDuration();
+ void testSetBitRate();
+ void testSetSampleRate();
+ void testSetSize();
+ void testSetModified();
+ void testSetCopyright();
+ void testSetMusicURL();
+ void testSetDrmProtected();
+
+ void testSetAlbumArtUri();
+ void testThumbnailReady();
+ void testCommitPlaybackInfo();
+ void testCommitSongDetailInfo();
+private:
+ MpSongData *mTest;
+
+};
+
+
+#endif /* UNITTEST_MPSONGDATA_H_ */
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/sis.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/sis.bat Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+del *.sisx
+makesis UT_mpsongdata.pkg
+signsis UT_mpsongdata.sis UT_mpsongdata.sisx RNDCERTS_PATH\Nokia_RnDCert_02.der RNDCERTS_PATH\Nokia_RnDCert_02.key
+del UT_mpsongdata.sis
\ No newline at end of file
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/src/unittest_mpsongdata.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/src/unittest_mpsongdata.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,1100 @@
+/*
+* Copyright (c) 2010 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: Unit test for mpsongdata
+*
+*/
+#include
+#include
+#include
+#include
+
+#include"unittest_mpsongdata.h"
+#include "stub/inc/thumbnailmanager_qt.h"
+
+// Do this so we can access all member variables.
+#define private public
+#include "mpsongdata.h"
+#undef private
+
+
+/*!
+ Make our test case a stand-alone executable that runs all the test functions.
+ */
+int main(int argc, char *argv[])
+{
+ HbApplication app(argc, argv);
+ HbMainWindow window;
+
+ TestMpSongData tv;
+
+if ( argc > 1 ) {
+ return QTest::qExec( &tv, argc, argv);
+ }
+ else {
+ char *pass[3];
+ pass[0] = argv[0];
+ pass[1] = "-o";
+ pass[2] = "c:\\data\\unittest_mpsongdata.txt";
+
+ return QTest::qExec(&tv, 3, pass);
+ }
+}
+
+//Constructor
+TestMpSongData::TestMpSongData()
+ : mTest(0)
+{
+
+}
+
+//Destructor
+TestMpSongData::~TestMpSongData()
+{
+ delete mTest;
+}
+
+/*!
+ Called before the first testfunction is executed.
+ */
+void TestMpSongData::initTestCase()
+{
+
+}
+
+/*!
+ Called after the last testfunction was executed.
+ */
+void TestMpSongData::cleanupTestCase()
+{
+
+}
+
+/*!
+ Called before each testfunction is executed.
+ */
+void TestMpSongData::init()
+{
+ mTest = new MpSongData();
+}
+
+/*!
+ Called after every testfunction.
+ */
+void TestMpSongData::cleanup()
+{
+ delete mTest;
+ mTest = 0;
+}
+
+/*!
+ Test correct cleanup of member variables.
+ */
+void TestMpSongData::testMemberCleanup()
+{
+ cleanup();
+ ThumbnailManager::resetInitCounter();
+ init();
+ cleanup();
+ QCOMPARE( ThumbnailManager::getInitCounter(), 0 );
+}
+
+
+/*!
+ Test title()
+ */
+void TestMpSongData::testTitle()
+{
+ mTest->mTitle = QString();
+ QVERIFY( mTest->title().isNull() == true );
+
+ QString title( "title" );
+ mTest->mTitle = title;
+ QVERIFY( mTest->title().isNull() == false );
+ QCOMPARE( mTest->title(), title );
+}
+
+/*!
+ Test album()
+ */
+void TestMpSongData::testAlbum()
+{
+ mTest->mAlbum = QString();
+ QVERIFY( mTest->album().isNull() == true );
+
+ QString album( "album" );
+ mTest->mAlbum = album;
+ QVERIFY( mTest->album().isNull() == false );
+ QCOMPARE( mTest->album(), album );
+}
+
+/*!
+ Test artist()
+ */
+void TestMpSongData::testArtist()
+{
+ mTest->mArtist = QString();
+ QVERIFY( mTest->artist().isNull() == true );
+
+ QString artist( "artist");
+ mTest->mArtist = artist;
+ QVERIFY( mTest->artist().isNull() == false );
+ QCOMPARE( mTest->artist(), artist );
+}
+
+/*!
+ Test comment()
+ */
+void TestMpSongData::testComment()
+{
+ mTest->mComment = QString();
+ QVERIFY( mTest->comment().isNull() == true );
+
+ QString comment( "This is a nice song" );
+ mTest->mComment = comment;
+ QVERIFY( mTest->comment().isNull() == false );
+ QCOMPARE( mTest->comment(), comment );
+}
+
+/*!
+ Test albumArt()
+ */
+void TestMpSongData::testAlbumArt()
+{
+ HbIcon dummyAlbumArt;
+ mTest->albumArt( dummyAlbumArt );
+ QVERIFY( dummyAlbumArt.isNull() == true );
+
+ HbIcon dummyAlbumArtTwo;
+ mTest->mAlbumArt = new HbIcon( ":/playbackviewicons/someAlbumArt.png" );
+ mTest->albumArt( dummyAlbumArtTwo );
+ QVERIFY( dummyAlbumArtTwo.isNull() == false );
+}
+
+/*!
+ Test year()
+ */
+void TestMpSongData::testYear()
+{
+ mTest->mYear = QString();
+ QVERIFY( mTest->year().isNull() == true );
+
+ QString year("2000");
+ mTest->mYear = year;
+ QVERIFY( mTest->year().isNull() == false );
+ QCOMPARE( mTest->year(), year );
+}
+
+/*!
+ Test genre()
+ */
+void TestMpSongData::testGenre()
+{
+ mTest->mGenre = QString();
+ QVERIFY( mTest->genre().isNull() == true );
+
+ QString genre( "pop" );
+ mTest->mGenre = genre;
+ QVERIFY( mTest->genre().isNull() == false );
+ QCOMPARE( mTest->genre(), genre );
+}
+
+/*!
+ Test composer()
+ */
+void TestMpSongData::testComposer()
+{
+ mTest->mComposer = QString();
+ QVERIFY( mTest->composer().isNull() == true );
+
+ QString composer( "composer ");
+ mTest->mComposer = composer;
+ QVERIFY( mTest->composer().isNull() == false );
+ QCOMPARE( mTest->composer(), composer );
+}
+
+
+/*!
+ Test albumTrack()
+ */
+void TestMpSongData::testAlbumtrack()
+{
+ mTest->mAlbumTrack = QString();
+ QVERIFY( mTest->albumTrack().isNull() == true );
+
+ QString albumTrack("2");
+ mTest->mAlbumTrack = albumTrack;
+ QVERIFY( mTest->albumTrack().isNull() == false );
+ QCOMPARE( mTest->albumTrack(), albumTrack );
+}
+
+/*!
+ Test link()
+ */
+void TestMpSongData::testLink()
+{
+ mTest->mLink = QString();
+ QVERIFY( mTest->link().isNull() == true );
+
+ QString link( "www.nokia.com" );
+ mTest->mLink = link;
+ QVERIFY( mTest->link().isNull() == false );
+ QCOMPARE( mTest->link(), link );
+}
+
+/*!
+ Test fileName()
+ */
+void TestMpSongData::testFileName()
+{
+ mTest->mFileName = QString();
+ QVERIFY( mTest->fileName().isNull() == true );
+
+ QString fileName( "test.mp3" );
+ mTest->mFileName = fileName;
+ QVERIFY( mTest->fileName().isNull() == false );
+ QCOMPARE( mTest->fileName(), fileName );
+}
+
+/*!
+ Test fileName()
+ */
+void TestMpSongData::testMimeType()
+{
+ mTest->mMimeType = QString();
+ QVERIFY( mTest->mimeType().isNull() == true );
+
+ QString mimeType( "mp3" );
+ mTest->mMimeType = mimeType;
+ QVERIFY( mTest->mimeType().isNull() == false );
+ QCOMPARE( mTest->mimeType(), mimeType );
+}
+
+/*!
+ Test fileName()
+ */
+void TestMpSongData::testDuration()
+{
+ mTest->mDuration = QString();
+ QVERIFY( mTest->duration().isNull() == true );
+
+ QString duration( "04:16" );
+ mTest->mDuration = duration;
+ QVERIFY( mTest->duration().isNull() == false );
+ QCOMPARE( mTest->duration(), duration );
+}
+
+/*!
+ Test bitRate()
+ */
+void TestMpSongData::testBitRate()
+{
+ mTest->mBitRate = QString();
+ QVERIFY( mTest->bitRate().isNull() == true );
+
+ QString bitRate( "320 Kbps" );
+ mTest->mBitRate = bitRate;
+ QVERIFY( mTest->bitRate().isNull() == false );
+ QCOMPARE( mTest->bitRate(), bitRate );
+}
+
+/*!
+ Test sampleRate()
+ */
+void TestMpSongData::testSampleRate()
+{
+ mTest->mSampleRate = QString();
+ QVERIFY( mTest->sampleRate().isNull() == true );
+
+ QString sampleRate( "44100 hz" );
+ mTest->mSampleRate = sampleRate;
+ QVERIFY( mTest->sampleRate().isNull() == false );
+ QCOMPARE( mTest->sampleRate(), sampleRate );
+}
+
+/*!
+ Test size()
+ */
+void TestMpSongData::testSize()
+{
+ mTest->mSize = QString();
+ QVERIFY( mTest->size().isNull() == true );
+
+ QString size( "4.3MB" );
+ mTest->mSize = size;
+ QVERIFY( mTest->size().isNull() == false );
+ QCOMPARE( mTest->size(), size );
+}
+
+/*!
+ Test modified()
+ */
+void TestMpSongData::testModified()
+{
+ mTest->mModified = QString();
+ QVERIFY( mTest->modified().isNull() == true );
+
+ QString modified( "5.7.2010 14:35:08" );
+ mTest->mModified = modified;
+ QVERIFY( mTest->modified().isNull() == false );
+ QCOMPARE( mTest->modified(), modified );
+}
+
+/*!
+ Test copyright()
+ */
+void TestMpSongData::testCopyright()
+{
+ mTest->mCopyright = QString();
+ QVERIFY( mTest->copyright().isNull() == true );
+
+ QString copyright( "Copyright holder" );
+ mTest->mCopyright = copyright;
+ QVERIFY( mTest->copyright().isNull() == false );
+ QCOMPARE( mTest->copyright(), copyright );
+}
+
+/*!
+ Test musicURL()
+ */
+void TestMpSongData::testMusicURL()
+{
+ mTest->mMusicURL = QString();
+ QVERIFY( mTest->musicURL().isNull() == true );
+
+ QString musicURL( "www.nokia.com" );
+ mTest->mMusicURL = musicURL;
+ QVERIFY( mTest->musicURL().isNull() == false );
+ QCOMPARE( mTest->musicURL(), musicURL );
+}
+
+/*!
+ Test isDrmProtected()
+ */
+void TestMpSongData::testIsDrmProtected()
+{
+ mTest->mDrmProtected = true;
+ QVERIFY( mTest->isDrmProtected() == true );
+
+ mTest->mDrmProtected = false;
+ QVERIFY( mTest->isDrmProtected() == false );
+}
+
+/*!
+ Test setTitle()
+ */
+void TestMpSongData::testSetTitle()
+{
+ bool result;
+ QString title( "title" );
+ mTest->mTitle = QString();
+ result = mTest->setTitle( title );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->title(), title );
+
+ result = false;
+ title = QString( "title" );
+ mTest->mTitle = QString( "titleTwo" );
+ result = mTest->setTitle( title );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->title(), title );
+
+ result = false;
+ title = QString();
+ mTest->mTitle = QString();
+ result = mTest->setTitle( title );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->title().isNull(), true );
+
+ result = false;
+ title = QString();
+ mTest->mTitle = QString( "titleTwo" );
+ result = mTest->setTitle( title );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->title().isNull(), true );
+}
+
+/*!
+ Test SetAlbum()
+ */
+void TestMpSongData::TestMpSongData::testSetAlbum()
+{
+ bool result;
+ QString album( "album" );
+ mTest->mAlbum = QString();
+ result = mTest->setAlbum( album );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->album(), album );
+
+ result = false;
+ album = QString( "album" );
+ mTest->mAlbum = QString( "albumTwo" );
+ result = mTest->setAlbum( album );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->album(), album );
+
+ result = false;
+ album = QString();
+ mTest->mAlbum = QString();
+ result = mTest->setAlbum( album );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->album().isNull(), true );
+
+ result = false;
+ album = QString();
+ mTest->mAlbum = QString( "albumTwo" );
+ result = mTest->setAlbum( album );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->album().isNull(), true );
+}
+
+/*!
+ Test SetArtist()
+ */
+void TestMpSongData::testSetArtist()
+{
+ bool result;
+ QString artist( "artist" );
+ mTest->mArtist = QString();
+ result = mTest->setArtist( artist );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->artist(), artist );
+
+ result = false;
+ artist = QString( "artist" );
+ mTest->mArtist = QString( "artistTwo" );
+ result = mTest->setArtist( artist );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->artist(), artist );
+
+ result = false;
+ artist = QString();
+ mTest->mArtist = QString();
+ result = mTest->setArtist( artist );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->artist().isNull(), true );
+
+ result = false;
+ artist = QString();
+ mTest->mArtist = QString( "artistTwo" );
+ result = mTest->setArtist( artist );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->artist().isNull(), true );
+}
+
+/*!
+ Test SetComment()
+ */
+void TestMpSongData::testSetComment()
+{
+ bool result;
+ QString comment( "comment" );
+ mTest->mComment = QString();
+ result = mTest->setComment( comment );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->comment(), comment );
+
+ result = false;
+ comment = QString( "comment" );
+ mTest->mComment = QString( "commentTwo" );
+ result = mTest->setComment( comment );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->comment(), comment );
+
+ result = false;
+ comment = QString();
+ mTest->mComment = QString();
+ result = mTest->setComment( comment );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->comment().isNull(), true );
+
+ result = false;
+ comment = QString();
+ mTest->mComment = QString( "commentTwo" );
+ result = mTest->setComment( comment );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->comment().isNull(), true );
+}
+
+/*!
+ Test SetYear()
+ */
+void TestMpSongData::testSetYear()
+{
+ bool result;
+ int year = 2010;
+ mTest->mYear = QString();
+ result = mTest->setYear( year );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->year(), QString::number( year ) );
+
+ result = false;
+ year = 2010;
+ mTest->mYear = QString::number( 2011 );
+ result = mTest->setYear( year );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->year(), QString::number( year ) );
+
+ result = false;
+ year = -1;
+ mTest->mYear = QString();
+ result = mTest->setYear( year );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->year().isNull(), true );
+
+ result = false;
+ year = -1;
+ mTest->mYear = QString::number( 2011 );
+ result = mTest->setYear( year );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->year().isNull(), true );
+}
+
+/*!
+ Test setGenre()
+ */
+void TestMpSongData::testSetGenre()
+{
+ bool result;
+ QString genre( "genre" );
+ mTest->mGenre = QString();
+ result = mTest->setGenre( genre );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->genre(), genre );
+
+ result = false;
+ genre = QString( "genre" );
+ mTest->mGenre = QString( "genreTwo" );
+ result = mTest->setGenre( genre );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->genre(), genre );
+
+ result = false;
+ genre = QString();
+ mTest->mGenre = QString();
+ result = mTest->setGenre( genre );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->genre().isNull(), true );
+
+ result = false;
+ genre = QString();
+ mTest->mGenre = QString( "genreTwo" );
+ result = mTest->setGenre( genre );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->genre().isNull(), true );
+}
+
+/*!
+ Test setComposer()
+ */
+void TestMpSongData::testSetComposer()
+{
+ bool result;
+ QString composer( "composer" );
+ mTest->mComposer = QString();
+ result = mTest->setComposer( composer );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->composer(), composer );
+
+ result = false;
+ composer = QString( "composer" );
+ mTest->mComposer = QString( "composerTwo" );
+ result = mTest->setComposer( composer );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->composer(), composer );
+
+ result = false;
+ composer = QString();
+ mTest->mComposer = QString();
+ result = mTest->setComposer( composer );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->composer().isNull(), true );
+
+ result = false;
+ composer = QString();
+ mTest->mComposer = QString( "composerTwo" );
+ result = mTest->setComposer( composer );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->composer().isNull(), true );
+}
+
+/*!
+ Test setAlbumTrack()
+ */
+void TestMpSongData::testSetAlbumTrack()
+{
+ bool result;
+ QString albumTrack( "2" );
+ mTest->mAlbumTrack = QString();
+ result = mTest->setAlbumTrack( albumTrack );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->albumTrack(), albumTrack );
+
+ result = false;
+ albumTrack = QString( "2" );
+ mTest->mAlbumTrack = QString( "3" );
+ result = mTest->setAlbumTrack( albumTrack );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->albumTrack(), albumTrack );
+
+ result = false;
+ albumTrack = QString();
+ mTest->mAlbumTrack = QString();
+ result = mTest->setAlbumTrack( albumTrack );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->albumTrack().isNull(), true );
+
+ result = false;
+ albumTrack = QString();
+ mTest->mAlbumTrack = QString( "3" );
+ result = mTest->setAlbumTrack( albumTrack );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->albumTrack().isNull(), true );
+}
+
+/*!
+ Test setLink()
+ */
+void TestMpSongData::testSetLink()
+{
+ QString link( "www.nokia.com" );
+ mTest->mLink = QString();
+ mTest->setLink( link );
+ QCOMPARE( mTest->link(), link );
+
+ link = QString( "www.nokia.com" );
+ mTest->mLink = QString( "www.nokia.fi" );
+ mTest->setLink( link );
+ QCOMPARE( mTest->link(), link );
+
+ link = QString();
+ mTest->mLink = QString();
+ mTest->setLink( link );
+ QCOMPARE( mTest->link().isNull(), true );
+
+ link = QString();
+ mTest->mLink = QString( "www.nokia.fi" );
+ mTest->setLink( link );
+ QCOMPARE( mTest->link().isNull(), true );
+}
+
+/*!
+ Test setFileName()
+ */
+void TestMpSongData::testSetFileName()
+{
+ bool result;
+ QString fileName( "fileName" );
+ mTest->mFileName = QString();
+ result = mTest->setFileName( fileName );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->fileName(), fileName );
+
+ result = false;
+ fileName = QString( "fileName" );
+ mTest->mFileName = QString( "fileNameTwo" );
+ result = mTest->setFileName( fileName );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->fileName(), fileName );
+
+ result = false;
+ fileName = QString();
+ mTest->mFileName = QString();
+ result = mTest->setFileName( fileName );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->fileName().isNull(), true );
+
+ result = false;
+ fileName = QString();
+ mTest->mFileName = QString( "fileNameTwo" );
+ result = mTest->setFileName( fileName );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->fileName().isNull(), true );
+}
+
+/*!
+ Test setMimeType()
+ */
+void TestMpSongData::testSetMimeType()
+{
+ bool result;
+ QString mimeType( "mimeType" );
+ mTest->mMimeType = QString();
+ result = mTest->setMimeType( mimeType );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->mimeType(), mimeType );
+
+ result = false;
+ mimeType = QString( "mimeType" );
+ mTest->mMimeType = QString( "mimeTypeTwo" );
+ result = mTest->setMimeType( mimeType );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->mimeType(), mimeType );
+
+ result = false;
+ mimeType = QString();
+ mTest->mMimeType = QString();
+ result = mTest->setMimeType( mimeType );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->mimeType().isNull(), true );
+
+ result = false;
+ mimeType = QString();
+ mTest->mMimeType = QString( "mimeTypeTwo" );
+ result = mTest->setMimeType( mimeType );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->mimeType().isNull(), true );
+}
+
+/*!
+ Test setDuration() // TODO: more cases to add here for different time interval
+ */
+void TestMpSongData::testSetDuration()
+{
+ bool result;
+ int duration = 100;
+ mTest->mDuration = QString();
+ result = mTest->setDuration( duration );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->duration(), QString("01:40") );
+
+ result = false;
+ duration = 100;
+ mTest->mDuration = QString( "02:00" );
+ result = mTest->setDuration( duration );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->duration(), QString("01:40") );
+
+ result = false;
+ duration = -1;
+ mTest->mDuration = QString();
+ result = mTest->setDuration( duration );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->duration().isNull(), true );
+
+ result = false;
+ duration = -1;
+ mTest->mDuration = QString( "02:00" );
+ result = mTest->setDuration( duration );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->duration().isNull(), true );
+}
+
+/*!
+ Test setBitRate()
+ */
+void TestMpSongData::testSetBitRate()
+{
+ bool result;
+ int bitRate = 302000;
+ mTest->mBitRate = QString();
+ result = mTest->setBitRate( bitRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->bitRate(), QString::number( bitRate / 1000 ) );
+
+ result = false;
+ bitRate = 302000;
+ mTest->mBitRate = QString::number( 412 );
+ result = mTest->setBitRate( bitRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->bitRate(), QString::number( bitRate / 1000 ) );
+
+ result = false;
+ bitRate = -1;
+ mTest->mBitRate = QString();
+ result = mTest->setBitRate( bitRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->bitRate().isNull(), true );
+
+ result = false;
+ bitRate = -1;
+ mTest->mBitRate = QString::number( 412 );
+ result = mTest->setBitRate( bitRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->bitRate().isNull(), true );
+}
+
+/*!
+ Test setSampleRate
+ */
+void TestMpSongData::testSetSampleRate()
+{
+ bool result;
+ int sampleRate = 44100;
+ mTest->mSampleRate = QString();
+ result = mTest->setSampleRate( sampleRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->sampleRate(), QString::number( sampleRate ) );
+
+ result = false;
+ sampleRate = 44100;
+ mTest->mSampleRate = QString::number( 55000 );
+ result = mTest->setSampleRate( sampleRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->sampleRate(), QString::number( sampleRate ) );
+
+ result = false;
+ sampleRate = -1;
+ mTest->mSampleRate = QString();
+ result = mTest->setSampleRate( sampleRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->sampleRate().isNull(), true );
+
+ result = false;
+ sampleRate = -1;
+ mTest->mSampleRate = QString::number( 55000 );
+ result = mTest->setSampleRate( sampleRate );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->sampleRate().isNull(), true );
+}
+
+/*!
+ Test setSize
+ */
+void TestMpSongData::testSetSize()
+{
+ bool result;
+ int size = 4300;
+ mTest->mSize = QString();
+ result = mTest->setSize( size );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->size(), QString::number( size / 1000 ) );
+
+ result = false;
+ size = 4300;
+ mTest->mSize = QString( "5" );
+ result = mTest->setSize( size );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->size(), QString::number( size / 1000 ) );
+}
+
+/*!
+ Test setModified
+ */
+void TestMpSongData::testSetModified()
+{
+ bool result;
+ QString modified( "5.7.2010 14:35:08" );
+ mTest->mModified = QString();
+ result = mTest->setModified( modified );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->modified(), modified );
+
+ result = false;
+ modified = QString( "5.7.2010 14:35:08" );
+ mTest->mModified = QString( "9.7.2010 16:35:08" );
+ result = mTest->setModified( modified );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->modified(), modified );
+
+ result = false;
+ modified = QString();
+ mTest->mModified = QString();
+ result = mTest->setModified( modified );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->modified().isNull(), true );
+
+ result = false;
+ modified = QString();
+ mTest->mModified = QString( "9.7.2010 16:35:08" );
+ result = mTest->setModified( modified );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->modified().isNull(), true );
+}
+
+/*!
+ Test setCopyright
+ */
+void TestMpSongData::testSetCopyright()
+{
+ bool result;
+ QString copyright( "copyright" );
+ mTest->mCopyright = QString();
+ result = mTest->setCopyright( copyright );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->copyright(), copyright );
+
+ result = false;
+ copyright = QString( "copyright" );
+ mTest->mCopyright = QString( "copyrightTwo" );
+ result = mTest->setCopyright( copyright );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->copyright(), copyright );
+
+ result = false;
+ copyright = QString();
+ mTest->mCopyright = QString();
+ result = mTest->setCopyright( copyright );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->copyright().isNull(), true );
+
+ result = false;
+ copyright = QString();
+ mTest->mCopyright = QString( "copyrightTwo" );
+ result = mTest->setCopyright( copyright );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->copyright().isNull(), true );
+}
+
+/*!
+ Test setMusicURL
+ */
+void TestMpSongData::testSetMusicURL()
+{
+ bool result;
+ QString musicURL( "musicURL" );
+ mTest->mMusicURL = QString();
+ result = mTest->setMusicURL( musicURL );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->musicURL(), musicURL );
+
+ result = false;
+ musicURL = QString( "musicURL" );
+ mTest->mMusicURL = QString( "musicURLTwo" );
+ result = mTest->setMusicURL( musicURL );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->musicURL(), musicURL );
+
+ result = false;
+ musicURL = QString();
+ mTest->mMusicURL = QString();
+ result = mTest->setMusicURL( musicURL );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->musicURL().isNull(), true );
+
+ result = false;
+ musicURL = QString();
+ mTest->mMusicURL = QString( "musicURLTwo" );
+ result = mTest->setMusicURL( musicURL );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->musicURL().isNull(), true );
+}
+
+/*!
+ Test setDrmProtected
+ */
+void TestMpSongData::testSetDrmProtected()
+{
+ bool result;
+ bool drmProtected = false;
+ mTest->mDrmProtected = true;
+ result = mTest->setDrmProtected( drmProtected );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->isDrmProtected(), false );
+
+ result = false;
+ drmProtected = false;
+ mTest->mDrmProtected = false;
+ result = mTest->setDrmProtected( drmProtected );
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->isDrmProtected(), false );
+
+ result = false;
+ drmProtected = true;
+ mTest->mDrmProtected = true;
+ result = mTest->setDrmProtected( drmProtected);
+ QCOMPARE( result, false );
+ QCOMPARE( mTest->isDrmProtected(), true );
+
+ result = false;
+ drmProtected = true;
+ mTest->mDrmProtected = false;
+ result = mTest->setDrmProtected( drmProtected );
+ QCOMPARE( result, true );
+ QCOMPARE( mTest->isDrmProtected(), true );
+}
+
+
+/*!
+ Test setAlbumArtUri()
+ */
+void TestMpSongData::testSetAlbumArtUri()
+{
+ const QString albumArtUri( "AlbumArt" );
+ const QString albumArtUriEmpty( "" );
+
+ QSignalSpy spy( mTest, SIGNAL( albumArtReady() ) );
+
+ QVERIFY( spy.isValid() );
+ QCOMPARE( spy.count(), 0 );
+
+ mTest->setAlbumArtUri( albumArtUri );
+ QCOMPARE( spy.count(), 0 );
+
+ mTest->mThumbnailManager->mGetThumbFails = true;
+ mTest->setAlbumArtUri( albumArtUri );
+ QCOMPARE( spy.count(), 1 );
+ QCOMPARE( mTest->mAlbumArt, mTest->mDefaultAlbumArt );
+
+ mTest->setAlbumArtUri( albumArtUriEmpty );
+ QCOMPARE( spy.count(), 2 );
+ QCOMPARE( mTest->mAlbumArt, mTest->mDefaultAlbumArt );
+}
+
+/*!
+ Test thumbnailReady()()
+ */
+void TestMpSongData::testThumbnailReady()
+{
+ connect( this, SIGNAL(thumbnailReady(QPixmap, void *, int, int)),
+ mTest->mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)) );
+
+ QSignalSpy spy(mTest, SIGNAL(albumArtReady()));
+ QVERIFY( spy.isValid() );
+ QCOMPARE( spy.count(), 0 );
+
+ QPixmap dummyAlbumArt(":/playbackviewicons/someAlbumArt.png" );
+
+ emit thumbnailReady(dummyAlbumArt, 0, -1, 0);
+ QCOMPARE( spy.count(), 1 );
+ HbIcon dummyAlbumArtCompare;
+ mTest->albumArt(dummyAlbumArtCompare);
+ QCOMPARE( dummyAlbumArtCompare.isNull(), false );
+
+ emit thumbnailReady(dummyAlbumArt, 0, -1 , 1);
+ QCOMPARE( spy.count(), 2 );
+ mTest->albumArt(dummyAlbumArtCompare);
+ QCOMPARE( dummyAlbumArtCompare.isNull(), false );
+
+}
+
+
+/*!
+ Test commitPlaybackInfo()
+ */
+void TestMpSongData::testCommitPlaybackInfo()
+ {
+ QSignalSpy spy( mTest, SIGNAL( playbackInfoChanged() ) );
+
+ QVERIFY( spy.isValid() );
+ QCOMPARE( spy.count(), 0 );
+
+ mTest->commitPlaybackInfo();
+ QCOMPARE( spy.count(), 1 );
+
+ }
+
+/*!
+ Test commitSongDetailInfo()
+ */
+void TestMpSongData::testCommitSongDetailInfo()
+ {
+ QSignalSpy spy( mTest, SIGNAL( songDetailInfoChanged() ) );
+
+ QVERIFY( spy.isValid() );
+ QCOMPARE( spy.count(), 0 );
+
+ mTest->commitSongDetailInfo();
+ QCOMPARE( spy.count(), 1 );
+
+ }
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/stub/inc/thumbnailmanager_qt.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/stub/inc/thumbnailmanager_qt.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,128 @@
+/*
+* 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: ThumbnailManager stub for testing MpSongData
+*
+*/
+
+#ifndef THUMBNAILMANAGER_QT_H_
+#define THUMBNAILMANAGER_QT_H_
+#include
+#include
+
+
+/** default priority value */
+const int tnmWrapperPriorityIdle = -100;
+
+class ThumbnailManager : public QObject
+ {
+ Q_OBJECT
+
+public:
+
+
+ /** Thumbnail size. */
+ enum ThumbnailSize
+ {
+ /**
+ * Small thumbnail
+ */
+ ThumbnailSmall = 0,
+ /**
+ * Medium thumbnail
+ */
+ ThumbnailMedium,
+ /**
+ * Large thumbnail
+ */
+ ThumbnailLarge
+ };
+
+ /** Mode of thumbnail creation. */
+ enum ThumbnailMode
+ {
+ /**
+ * Default mode. This means that:
+ * - Thumbnail must be as large as requested (unless the actual object is smaller).
+ * - Smaller thumbnails may be up scaled to desired resolution.
+ * - Aspect ratio is maintained and thumbnails are not cropped. The
+ * resulting thumbnail may smaller in either width or height if
+ * the aspect ratio of the object does not match the aspect ratio
+ * of the requested size.
+ */
+ Default = 0,
+
+ /**
+ * Allow thumbnails which are smaller than requested are. Thumbnail
+ * bitmaps are never up scaled if this flag is set.
+ */
+ AllowAnySize = 1,
+
+ /**
+ * New thumbnail images are not created if this flag is set. Only
+ * existing thumbnails may be returned. If a requested thumbnail does
+ * not exist null pixmap will be returned.
+ */
+ DoNotCreate = 2,
+
+ /**
+ * Thumbnail images are cropped to match requested aspect ratio. If
+ * this mode is set, the size of the resulting thumbnail always
+ * matches the requested size.
+ */
+ CropToAspectRatio = 4
+ };
+
+ /** Quality versus speed preference setting */
+ enum QualityPreference
+ {
+ /**
+ * Prefer thumbnails in the highest quality possible disregarding
+ * any negative impact on performance.
+ */
+ OptimizeForQuality,
+
+ /**
+ * Get thumbnails as fast as possible, even if
+ * it means lower quality.
+ */
+ OptimizeForPerformance
+ };
+
+ // Test utility functions
+ static int getInitCounter();
+ static void resetInitCounter();
+
+ // Stub functions
+ ThumbnailManager( QObject* parentPtr = NULL );
+ virtual ~ThumbnailManager();
+ bool setMode( ThumbnailMode mode );
+ bool setQualityPreference( QualityPreference qualityPreference );
+ bool setThumbnailSize( ThumbnailSize thumbnailSize );
+ int getThumbnail( const QString& fileName, void * clientData = NULL,
+ int priority = tnmWrapperPriorityIdle );
+ bool cancelRequest( int id );
+
+signals:
+
+ void thumbnailReady( QPixmap , void * , int , int );
+
+public:
+
+ bool mGetThumbFails;
+ int mThumbnailReqCounter;
+ int mCancelCounter;
+
+};
+
+#endif /* THUMBNAILMANAGER_QT_H_ */
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/stub/src/thumbnailmanager_qt.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/stub/src/thumbnailmanager_qt.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,120 @@
+/*
+* 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: ThumbnailManager stub for testing MpSongData
+*
+*/
+#include
+#include "stub/inc/thumbnailmanager_qt.h"
+
+int gInitCounter = 0;
+
+/*!
+ Returns gInitCounter.
+ gInitCounter counts the number of constructor/destructor calls.
+ */
+int ThumbnailManager::getInitCounter()
+{
+ return gInitCounter;
+}
+
+/*!
+ Resets gInitCounter to zero.
+ */
+void ThumbnailManager::resetInitCounter()
+{
+ gInitCounter = 0;
+}
+
+/*!
+ Stub function.
+ */
+ThumbnailManager::ThumbnailManager( QObject* parentPtr ) :
+QObject( parentPtr ),
+mGetThumbFails(false),
+mThumbnailReqCounter(0),
+mCancelCounter(0)
+{
+ gInitCounter++;
+}
+
+/*!
+ Stub function.
+ */
+ThumbnailManager::~ThumbnailManager()
+{
+ gInitCounter--;
+}
+
+/*!
+ Stub function.
+ */
+bool ThumbnailManager::setMode( ThumbnailMode mode )
+{
+ Q_UNUSED(mode);
+ return true;
+}
+
+/*!
+ Stub function.
+ */
+bool ThumbnailManager::setQualityPreference( QualityPreference
+ qualityPreference )
+{
+ Q_UNUSED(qualityPreference);
+ return true;
+}
+
+/*!
+ Stub function.
+ */
+bool ThumbnailManager::setThumbnailSize( ThumbnailSize thumbnailSize )
+{
+ Q_UNUSED(thumbnailSize);
+ return true;
+}
+
+/*!
+ Stub function.
+ */
+int ThumbnailManager::getThumbnail( const QString& fileName, void *clientData,
+ int priority )
+{
+ Q_UNUSED(fileName);
+ Q_UNUSED(priority);
+
+ if (clientData) {
+ // Delete this to prevent memory leak
+ int *data = (int *)clientData;
+ delete data;
+
+ data = 0;
+ }
+
+ if ( mGetThumbFails ) {
+ return -1;
+ }
+
+ mThumbnailReqCounter++;
+ return mThumbnailReqCounter;
+}
+
+/*!
+ Stub function.
+ */
+bool ThumbnailManager::cancelRequest( int id )
+{
+ Q_UNUSED(id);
+ mCancelCounter++;
+ return true;
+}
diff -r 2c5162224003 -r fdb31ab341af mpdata/tsrc/unittest_mpsongdata/unittest_mpsongdata.pro
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpsongdata/unittest_mpsongdata.pro Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,40 @@
+#
+# 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: Unit test for mpsongdata
+#
+
+TEMPLATE = app
+CONFIG += qtestlib \
+ symbian_test \
+ hb
+
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += ./stub/inc \
+ ../../../inc
+
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+DEFINES += BUILD_MPDATA_LIB
+LIBS += -lmpxviewframeworkqt.dll
+
+# Input
+HEADERS += inc/unittest_mpsongdata.h \
+ ../../../inc/mpsongdata.h \
+ stub/inc/thumbnailmanager_qt.h
+
+SOURCES += src/unittest_mpsongdata.cpp \
+ ../../src/mpsongdata.cpp \
+ stub/src/thumbnailmanager_qt.cpp
+
+
diff -r 2c5162224003 -r fdb31ab341af mpengine/bwins/mpengineu.def
--- a/mpengine/bwins/mpengineu.def Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/bwins/mpengineu.def Fri May 14 18:54:37 2010 -0500
@@ -1,67 +1,102 @@
EXPORTS
- ?releaseIsolatedCollection@MpEngine@@QAEXXZ @ 1 NONAME ; void MpEngine::releaseIsolatedCollection(void)
- ?metaObject@MpEngine@@UBEPBUQMetaObject@@XZ @ 2 NONAME ; struct QMetaObject const * MpEngine::metaObject(void) const
- ?refreshLibrary@MpEngine@@QAEXXZ @ 3 NONAME ; void MpEngine::refreshLibrary(void)
- ?launchBlockingNote@MpEngine@@AAEXXZ @ 4 NONAME ; void MpEngine::launchBlockingNote(void)
- ?playEmbedded@MpEngine@@QAEXVQString@@@Z @ 5 NONAME ; void MpEngine::playEmbedded(class QString)
- ?tr@MpEngine@@SA?AVQString@@PBD0@Z @ 6 NONAME ; class QString MpEngine::tr(char const *, char const *)
+ ?metaObject@MpEngine@@UBEPBUQMetaObject@@XZ @ 1 NONAME ; struct QMetaObject const * MpEngine::metaObject(void) const
+ ?refreshLibrary@MpEngine@@QAEXXZ @ 2 NONAME ; void MpEngine::refreshLibrary(void)
+ ?instance@MpEngineFactory@@SAPAV1@XZ @ 3 NONAME ; class MpEngineFactory * MpEngineFactory::instance(void)
+ ?createIsolatedEngine@MpEngineFactory@@SAPAVMpEngine@@W4EngineMode@2@@Z @ 4 NONAME ; class MpEngine * MpEngineFactory::createIsolatedEngine(enum MpEngine::EngineMode)
+ ?findAlbumSongs@MpEngine@@QAEXH@Z @ 5 NONAME ; void MpEngine::findAlbumSongs(int)
+ ?equalizerReady@MpEngine@@IAEXXZ @ 6 NONAME ; void MpEngine::equalizerReady(void)
?setPosition@MpEngine@@QAEXH@Z @ 7 NONAME ; void MpEngine::setPosition(int)
?saveToCurrentPlaylist@MpEngine@@QAEXAAV?$QList@H@@PAVMpMpxCollectionData@@@Z @ 8 NONAME ; void MpEngine::saveToCurrentPlaylist(class QList &, class MpMpxCollectionData *)
- ?getStaticMetaObject@MpEngine@@SAABUQMetaObject@@XZ @ 9 NONAME ; struct QMetaObject const & MpEngine::getStaticMetaObject(void)
- ?renamePlaylist@MpEngine@@QAEXAAVQString@@@Z @ 10 NONAME ; void MpEngine::renamePlaylist(class QString &)
- ?libraryUpdated@MpEngine@@IAEXXZ @ 11 NONAME ; void MpEngine::libraryUpdated(void)
- ?setRepeat@MpEngine@@QAEX_N@Z @ 12 NONAME ; void MpEngine::setRepeat(bool)
- ?collectionData@MpEngine@@QAEPAVMpMpxCollectionData@@XZ @ 13 NONAME ; class MpMpxCollectionData * MpEngine::collectionData(void)
- ?createPlaylist@MpEngine@@QAEXAAVQString@@AAV?$QList@H@@PAVMpMpxCollectionData@@@Z @ 14 NONAME ; void MpEngine::createPlaylist(class QString &, class QList &, class MpMpxCollectionData *)
- ?collectionPlaylistOpened@MpEngine@@IAEXXZ @ 15 NONAME ; void MpEngine::collectionPlaylistOpened(void)
- ?playlistsRenamed@MpEngine@@IAEX_N@Z @ 16 NONAME ; void MpEngine::playlistsRenamed(bool)
- ?playPause@MpEngine@@QAEXXZ @ 17 NONAME ; void MpEngine::playPause(void)
- ?checkForSystemEvents@MpEngine@@QAEXXZ @ 18 NONAME ; void MpEngine::checkForSystemEvents(void)
- ?renamePlaylist@MpEngine@@QAEXAAVQString@@H@Z @ 19 NONAME ; void MpEngine::renamePlaylist(class QString &, int)
- ?handleUsbMtpEndEvent@MpEngine@@AAEXXZ @ 20 NONAME ; void MpEngine::handleUsbMtpEndEvent(void)
- ?playEmbedded@MpEngine@@QAEXABVXQSharableFile@@@Z @ 21 NONAME ; void MpEngine::playEmbedded(class XQSharableFile const &)
- ?skipForward@MpEngine@@QAEXXZ @ 22 NONAME ; void MpEngine::skipForward(void)
- ?staticMetaObject@MpEngine@@2UQMetaObject@@B @ 23 NONAME ; struct QMetaObject const MpEngine::staticMetaObject
- ?setShuffle@MpEngine@@QAEX_N@Z @ 24 NONAME ; void MpEngine::setShuffle(bool)
- ?openIsolatedCollection@MpEngine@@QAEXW4TCollectionContext@@@Z @ 25 NONAME ; void MpEngine::openIsolatedCollection(enum TCollectionContext)
- ?handleUsbMtpStartEvent@MpEngine@@AAEXXZ @ 26 NONAME ; void MpEngine::handleUsbMtpStartEvent(void)
- ?instance@MpEngine@@SAPAV1@XZ @ 27 NONAME ; class MpEngine * MpEngine::instance(void)
- ?openCollectionItem@MpEngine@@QAEXH@Z @ 28 NONAME ; void MpEngine::openCollectionItem(int)
- ?qt_metacall@MpEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 29 NONAME ; int MpEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?playlistSaved@MpEngine@@IAEX_N@Z @ 30 NONAME ; void MpEngine::playlistSaved(bool)
- ?handleScanStarted@MpEngine@@QAEXXZ @ 31 NONAME ; void MpEngine::handleScanStarted(void)
- ?initialize@MpEngine@@QAEXW4MpViewMode@MpCommon@@VTUid@@@Z @ 32 NONAME ; void MpEngine::initialize(enum MpCommon::MpViewMode, class TUid)
- ?playbackData@MpEngine@@QAEPAVMpPlaybackData@@XZ @ 33 NONAME ; class MpPlaybackData * MpEngine::playbackData(void)
- ?handleOutstandingNoteClosing@MpEngine@@QAEXXZ @ 34 NONAME ; void MpEngine::handleOutstandingNoteClosing(void)
- ?stop@MpEngine@@QAEXXZ @ 35 NONAME ; void MpEngine::stop(void)
- ?setOutstandingPopup@MpEngine@@AAEXPAVHbPopup@@@Z @ 36 NONAME ; void MpEngine::setOutstandingPopup(class HbPopup *)
- ?back@MpEngine@@QAEXXZ @ 37 NONAME ; void MpEngine::back(void)
- ?libraryAboutToUpdate@MpEngine@@IAEXXZ @ 38 NONAME ; void MpEngine::libraryAboutToUpdate(void)
- ?openCollection@MpEngine@@QAEXW4TCollectionContext@@@Z @ 39 NONAME ; void MpEngine::openCollection(enum TCollectionContext)
- ?trUtf8@MpEngine@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString MpEngine::trUtf8(char const *, char const *, int)
- ?reopenCollection@MpEngine@@QAEXXZ @ 41 NONAME ; void MpEngine::reopenCollection(void)
- ?handleUsbEvent@MpEngine@@QAEXW4MpxUsbEvents@@@Z @ 42 NONAME ; void MpEngine::handleUsbEvent(enum MpxUsbEvents)
- ?songsDeleted@MpEngine@@IAEX_N@Z @ 43 NONAME ; void MpEngine::songsDeleted(bool)
- ?handleUsbMassStorageStartEvent@MpEngine@@AAEXXZ @ 44 NONAME ; void MpEngine::handleUsbMassStorageStartEvent(void)
- ?qt_metacast@MpEngine@@UAEPAXPBD@Z @ 45 NONAME ; void * MpEngine::qt_metacast(char const *)
- ?handleDiskEvent@MpEngine@@QAEXW4MpxDiskEvents@@@Z @ 46 NONAME ; void MpEngine::handleDiskEvent(enum MpxDiskEvents)
- ?verifyUsbBlocking@MpEngine@@QAE_N_N@Z @ 47 NONAME ; bool MpEngine::verifyUsbBlocking(bool)
- ?saveToPlaylist@MpEngine@@QAEXHAAV?$QList@H@@@Z @ 48 NONAME ; void MpEngine::saveToPlaylist(int, class QList &)
- ?handleUsbMassStorageEndEvent@MpEngine@@AAEXXZ @ 49 NONAME ; void MpEngine::handleUsbMassStorageEndEvent(void)
- ?usbBlocked@MpEngine@@IAEX_N@Z @ 50 NONAME ; void MpEngine::usbBlocked(bool)
- ??0MpEngine@@AAE@XZ @ 51 NONAME ; MpEngine::MpEngine(void)
- ?handleUsbMtpNotActive@MpEngine@@AAEXXZ @ 52 NONAME ; void MpEngine::handleUsbMtpNotActive(void)
- ?tr@MpEngine@@SA?AVQString@@PBD0H@Z @ 53 NONAME ; class QString MpEngine::tr(char const *, char const *, int)
- ?trUtf8@MpEngine@@SA?AVQString@@PBD0@Z @ 54 NONAME ; class QString MpEngine::trUtf8(char const *, char const *)
- ?findPlaylists@MpEngine@@QAEXAAVQStringList@@@Z @ 55 NONAME ; void MpEngine::findPlaylists(class QStringList &)
- ?close@MpEngine@@QAEXXZ @ 56 NONAME ; void MpEngine::close(void)
- ?isolatedCollectionOpened@MpEngine@@IAEXPAVMpMpxCollectionData@@@Z @ 57 NONAME ; void MpEngine::isolatedCollectionOpened(class MpMpxCollectionData *)
- ?handleScanEnded@MpEngine@@QAEXHH@Z @ 58 NONAME ; void MpEngine::handleScanEnded(int, int)
- ?previewItem@MpEngine@@QAEXH@Z @ 59 NONAME ; void MpEngine::previewItem(int)
- ?skipBackward@MpEngine@@QAEXXZ @ 60 NONAME ; void MpEngine::skipBackward(void)
- ??1MpEngine@@UAE@XZ @ 61 NONAME ; MpEngine::~MpEngine(void)
- ??_EMpEngine@@UAE@I@Z @ 62 NONAME ; MpEngine::~MpEngine(unsigned int)
- ?changeUsbBlockingState@MpEngine@@AAEXW4UsbBlockingState@1@@Z @ 63 NONAME ; void MpEngine::changeUsbBlockingState(enum MpEngine::UsbBlockingState)
- ?deleteSongs@MpEngine@@QAEXAAV?$QList@H@@@Z @ 64 NONAME ; void MpEngine::deleteSongs(class QList &)
- ?reorderPlaylist@MpEngine@@QAEXHHHH@Z @ 65 NONAME ; void MpEngine::reorderPlaylist(int, int, int, int)
+ ?metaObject@MpEngineFactory@@UBEPBUQMetaObject@@XZ @ 9 NONAME ; struct QMetaObject const * MpEngineFactory::metaObject(void) const
+ ?handleEqualizerReady@MpEngine@@QAEXXZ @ 10 NONAME ; void MpEngine::handleEqualizerReady(void)
+ ?collectionData@MpEngine@@QAEPAVMpMpxCollectionData@@XZ @ 11 NONAME ; class MpMpxCollectionData * MpEngine::collectionData(void)
+ ?createPlaylist@MpEngine@@QAEXAAVQString@@AAV?$QList@H@@PAVMpMpxCollectionData@@@Z @ 12 NONAME ; void MpEngine::createPlaylist(class QString &, class QList &, class MpMpxCollectionData *)
+ ?collectionPlaylistOpened@MpEngine@@IAEXXZ @ 13 NONAME ; void MpEngine::collectionPlaylistOpened(void)
+ ?renamePlaylist@MpEngine@@QAEXAAVQString@@H@Z @ 14 NONAME ; void MpEngine::renamePlaylist(class QString &, int)
+ ?handleUsbMtpEndEvent@MpEngine@@AAEXXZ @ 15 NONAME ; void MpEngine::handleUsbMtpEndEvent(void)
+ ?setBalance@MpEngine@@QAEXH@Z @ 16 NONAME ; void MpEngine::setBalance(int)
+ ?songData@MpEngine@@QAEPAVMpSongData@@XZ @ 17 NONAME ; class MpSongData * MpEngine::songData(void)
+ ?skipForward@MpEngine@@QAEXXZ @ 18 NONAME ; void MpEngine::skipForward(void)
+ ??_EMpEngineFactory@@UAE@I@Z @ 19 NONAME ; MpEngineFactory::~MpEngineFactory(unsigned int)
+ ?playAlbumSongs@MpEngine@@QAEXHHPAVMpMpxCollectionData@@@Z @ 20 NONAME ; void MpEngine::playAlbumSongs(int, int, class MpMpxCollectionData *)
+ ?setShuffle@MpEngine@@QAEX_N@Z @ 21 NONAME ; void MpEngine::setShuffle(bool)
+ ?openIsolatedCollection@MpEngine@@QAEXW4TCollectionContext@@@Z @ 22 NONAME ; void MpEngine::openIsolatedCollection(enum TCollectionContext)
+ ?close@MpEngineFactory@@SAXXZ @ 23 NONAME ; void MpEngineFactory::close(void)
+ ?qt_metacall@MpEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int MpEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?playlistSaved@MpEngine@@IAEX_N@Z @ 25 NONAME ; void MpEngine::playlistSaved(bool)
+ ?playbackData@MpEngine@@QAEPAVMpPlaybackData@@XZ @ 26 NONAME ; class MpPlaybackData * MpEngine::playbackData(void)
+ ?stop@MpEngine@@QAEXXZ @ 27 NONAME ; void MpEngine::stop(void)
+ ?setOutstandingPopup@MpEngine@@AAEXPAVHbPopup@@@Z @ 28 NONAME ; void MpEngine::setOutstandingPopup(class HbPopup *)
+ ?retrieveSong@MpEngine@@QAEXXZ @ 29 NONAME ; void MpEngine::retrieveSong(void)
+ ?libraryAboutToUpdate@MpEngine@@IAEXXZ @ 30 NONAME ; void MpEngine::libraryAboutToUpdate(void)
+ ?openCollection@MpEngine@@QAEXW4TCollectionContext@@@Z @ 31 NONAME ; void MpEngine::openCollection(enum TCollectionContext)
+ ?trUtf8@MpEngine@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString MpEngine::trUtf8(char const *, char const *, int)
+ ?reopenCollection@MpEngine@@QAEXXZ @ 33 NONAME ; void MpEngine::reopenCollection(void)
+ ?songsDeleted@MpEngine@@IAEX_N@Z @ 34 NONAME ; void MpEngine::songsDeleted(bool)
+ ??0MpEngineFactory@@AAE@XZ @ 35 NONAME ; MpEngineFactory::MpEngineFactory(void)
+ ?qt_metacast@MpEngine@@UAEPAXPBD@Z @ 36 NONAME ; void * MpEngine::qt_metacast(char const *)
+ ?startSeekForward@MpEngine@@QAEXXZ @ 37 NONAME ; void MpEngine::startSeekForward(void)
+ ?saveToPlaylist@MpEngine@@QAEXHAAV?$QList@H@@@Z @ 38 NONAME ; void MpEngine::saveToPlaylist(int, class QList &)
+ ?qt_metacall@MpEngineFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 39 NONAME ; int MpEngineFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?tr@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString MpEngineFactory::tr(char const *, char const *, int)
+ ?tr@MpEngine@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString MpEngine::tr(char const *, char const *, int)
+ ?trUtf8@MpEngine@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString MpEngine::trUtf8(char const *, char const *)
+ ?findPlaylists@MpEngine@@QAEXAAVQStringList@@@Z @ 43 NONAME ; void MpEngine::findPlaylists(class QStringList &)
+ ?presetNames@MpEngine@@QAE?AVQStringList@@XZ @ 44 NONAME ; class QStringList MpEngine::presetNames(void)
+ ??1MpEngineFactory@@UAE@XZ @ 45 NONAME ; MpEngineFactory::~MpEngineFactory(void)
+ ?previewItem@MpEngine@@QAEXH@Z @ 46 NONAME ; void MpEngine::previewItem(int)
+ ?loudness@MpEngine@@QAE_NXZ @ 47 NONAME ; bool MpEngine::loudness(void)
+ ?staticMetaObject@MpEngineFactory@@2UQMetaObject@@B @ 48 NONAME ; struct QMetaObject const MpEngineFactory::staticMetaObject
+ ?deleteSongs@MpEngine@@QAEXAAV?$QList@H@@@Z @ 49 NONAME ; void MpEngine::deleteSongs(class QList &)
+ ?releaseIsolatedCollection@MpEngine@@QAEXXZ @ 50 NONAME ; void MpEngine::releaseIsolatedCollection(void)
+ ?stopSeeking@MpEngine@@QAEXXZ @ 51 NONAME ; void MpEngine::stopSeeking(void)
+ ?launchBlockingNote@MpEngine@@AAEXXZ @ 52 NONAME ; void MpEngine::launchBlockingNote(void)
+ ?initialize@MpEngine@@AAEXVTUid@@W4EngineMode@1@@Z @ 53 NONAME ; void MpEngine::initialize(class TUid, enum MpEngine::EngineMode)
+ ?playEmbedded@MpEngine@@QAEXVQString@@@Z @ 54 NONAME ; void MpEngine::playEmbedded(class QString)
+ ?tr@MpEngine@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString MpEngine::tr(char const *, char const *)
+ ?disableEqualizer@MpEngine@@QAEXXZ @ 56 NONAME ; void MpEngine::disableEqualizer(void)
+ ?getStaticMetaObject@MpEngine@@SAABUQMetaObject@@XZ @ 57 NONAME ; struct QMetaObject const & MpEngine::getStaticMetaObject(void)
+ ?qt_metacast@MpEngineFactory@@UAEPAXPBD@Z @ 58 NONAME ; void * MpEngineFactory::qt_metacast(char const *)
+ ?renamePlaylist@MpEngine@@QAEXAAVQString@@@Z @ 59 NONAME ; void MpEngine::renamePlaylist(class QString &)
+ ?libraryUpdated@MpEngine@@IAEXXZ @ 60 NONAME ; void MpEngine::libraryUpdated(void)
+ ?setRepeat@MpEngine@@QAEX_N@Z @ 61 NONAME ; void MpEngine::setRepeat(bool)
+ ?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 62 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *)
+ ?containerContentsChanged@MpEngine@@IAEXXZ @ 63 NONAME ; void MpEngine::containerContentsChanged(void)
+ ?startSeekBackward@MpEngine@@QAEXXZ @ 64 NONAME ; void MpEngine::startSeekBackward(void)
+ ?checkForSystemEvents@MpEngine@@QAEXXZ @ 65 NONAME ; void MpEngine::checkForSystemEvents(void)
+ ?playPause@MpEngine@@QAEXXZ @ 66 NONAME ; void MpEngine::playPause(void)
+ ?playlistsRenamed@MpEngine@@IAEX_N@Z @ 67 NONAME ; void MpEngine::playlistsRenamed(bool)
+ ?tr@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 68 NONAME ; class QString MpEngineFactory::tr(char const *, char const *)
+ ?applyPreset@MpEngine@@QAEXH@Z @ 69 NONAME ; void MpEngine::applyPreset(int)
+ ?playEmbedded@MpEngine@@QAEXABVXQSharableFile@@@Z @ 70 NONAME ; void MpEngine::playEmbedded(class XQSharableFile const &)
+ ?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 71 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *, int)
+ ?staticMetaObject@MpEngine@@2UQMetaObject@@B @ 72 NONAME ; struct QMetaObject const MpEngine::staticMetaObject
+ ?handleUsbMtpStartEvent@MpEngine@@AAEXXZ @ 73 NONAME ; void MpEngine::handleUsbMtpStartEvent(void)
+ ?openCollectionItem@MpEngine@@QAEXH@Z @ 74 NONAME ; void MpEngine::openCollectionItem(int)
+ ?handleScanStarted@MpEngine@@QAEXXZ @ 75 NONAME ; void MpEngine::handleScanStarted(void)
+ ?handleOutstandingNoteClosing@MpEngine@@QAEXXZ @ 76 NONAME ; void MpEngine::handleOutstandingNoteClosing(void)
+ ?back@MpEngine@@QAEXXZ @ 77 NONAME ; void MpEngine::back(void)
+ ?handleDeleteStarted@MpEngine@@QAEXXZ @ 78 NONAME ; void MpEngine::handleDeleteStarted(void)
+ ?activePreset@MpEngine@@QAEHXZ @ 79 NONAME ; int MpEngine::activePreset(void)
+ ?handleUsbEvent@MpEngine@@QAEXW4MpxUsbEvents@@@Z @ 80 NONAME ; void MpEngine::handleUsbEvent(enum MpxUsbEvents)
+ ?sharedEngine@MpEngineFactory@@SAPAVMpEngine@@XZ @ 81 NONAME ; class MpEngine * MpEngineFactory::sharedEngine(void)
+ ?handleUsbMassStorageStartEvent@MpEngine@@AAEXXZ @ 82 NONAME ; void MpEngine::handleUsbMassStorageStartEvent(void)
+ ?balance@MpEngine@@QAEHXZ @ 83 NONAME ; int MpEngine::balance(void)
+ ?handleDiskEvent@MpEngine@@QAEXW4MpxDiskEvents@@@Z @ 84 NONAME ; void MpEngine::handleDiskEvent(enum MpxDiskEvents)
+ ?verifyUsbBlocking@MpEngine@@QAE_N_N@Z @ 85 NONAME ; bool MpEngine::verifyUsbBlocking(bool)
+ ?handleUsbMassStorageEndEvent@MpEngine@@AAEXXZ @ 86 NONAME ; void MpEngine::handleUsbMassStorageEndEvent(void)
+ ?handleDeleteEnded@MpEngine@@QAEXXZ @ 87 NONAME ; void MpEngine::handleDeleteEnded(void)
+ ?createSharedEngine@MpEngineFactory@@SAPAVMpEngine@@VTUid@@W4EngineMode@2@@Z @ 88 NONAME ; class MpEngine * MpEngineFactory::createSharedEngine(class TUid, enum MpEngine::EngineMode)
+ ?usbBlocked@MpEngine@@IAEX_N@Z @ 89 NONAME ; void MpEngine::usbBlocked(bool)
+ ?getStaticMetaObject@MpEngineFactory@@SAABUQMetaObject@@XZ @ 90 NONAME ; struct QMetaObject const & MpEngineFactory::getStaticMetaObject(void)
+ ??0MpEngine@@AAE@XZ @ 91 NONAME ; MpEngine::MpEngine(void)
+ ?handleUsbMtpNotActive@MpEngine@@AAEXXZ @ 92 NONAME ; void MpEngine::handleUsbMtpNotActive(void)
+ ?isolatedCollectionOpened@MpEngine@@IAEXPAVMpMpxCollectionData@@@Z @ 93 NONAME ; void MpEngine::isolatedCollectionOpened(class MpMpxCollectionData *)
+ ?handleScanEnded@MpEngine@@QAEXHH@Z @ 94 NONAME ; void MpEngine::handleScanEnded(int, int)
+ ?skipBackward@MpEngine@@QAEXXZ @ 95 NONAME ; void MpEngine::skipBackward(void)
+ ??_EMpEngine@@UAE@I@Z @ 96 NONAME ; MpEngine::~MpEngine(unsigned int)
+ ??1MpEngine@@UAE@XZ @ 97 NONAME ; MpEngine::~MpEngine(void)
+ ?changeUsbBlockingState@MpEngine@@AAEXW4UsbBlockingState@1@@Z @ 98 NONAME ; void MpEngine::changeUsbBlockingState(enum MpEngine::UsbBlockingState)
+ ?setLoudness@MpEngine@@QAEX_N@Z @ 99 NONAME ; void MpEngine::setLoudness(bool)
+ ?reorderPlaylist@MpEngine@@QAEXHHHH@Z @ 100 NONAME ; void MpEngine::reorderPlaylist(int, int, int, int)
diff -r 2c5162224003 -r fdb31ab341af mpengine/eabi/mpengineu.def
--- a/mpengine/eabi/mpengineu.def Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/eabi/mpengineu.def Fri May 14 18:54:37 2010 -0500
@@ -1,67 +1,102 @@
EXPORTS
- _ZN8MpEngine10initializeEN8MpCommon10MpViewModeE4TUid @ 1 NONAME
- _ZN8MpEngine10setShuffleEb @ 2 NONAME
- _ZN8MpEngine10usbBlockedEb @ 3 NONAME
- _ZN8MpEngine11deleteSongsER5QListIiE @ 4 NONAME
- _ZN8MpEngine11previewItemEi @ 5 NONAME
- _ZN8MpEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 6 NONAME
- _ZN8MpEngine11qt_metacastEPKc @ 7 NONAME
- _ZN8MpEngine11setPositionEi @ 8 NONAME
- _ZN8MpEngine11skipForwardEv @ 9 NONAME
- _ZN8MpEngine12playEmbeddedE7QString @ 10 NONAME
- _ZN8MpEngine12playEmbeddedERK14XQSharableFile @ 11 NONAME
- _ZN8MpEngine12playbackDataEv @ 12 NONAME
- _ZN8MpEngine12skipBackwardEv @ 13 NONAME
- _ZN8MpEngine12songsDeletedEb @ 14 NONAME
- _ZN8MpEngine13findPlaylistsER11QStringList @ 15 NONAME
- _ZN8MpEngine13playlistSavedEb @ 16 NONAME
- _ZN8MpEngine14collectionDataEv @ 17 NONAME
- _ZN8MpEngine14createPlaylistER7QStringR5QListIiEP19MpMpxCollectionData @ 18 NONAME
- _ZN8MpEngine14handleUsbEventE12MpxUsbEvents @ 19 NONAME
- _ZN8MpEngine14libraryUpdatedEv @ 20 NONAME
- _ZN8MpEngine14openCollectionE18TCollectionContext @ 21 NONAME
- _ZN8MpEngine14refreshLibraryEv @ 22 NONAME
- _ZN8MpEngine14renamePlaylistER7QString @ 23 NONAME
- _ZN8MpEngine14renamePlaylistER7QStringi @ 24 NONAME
- _ZN8MpEngine14saveToPlaylistEiR5QListIiE @ 25 NONAME
- _ZN8MpEngine15handleDiskEventE13MpxDiskEvents @ 26 NONAME
- _ZN8MpEngine15handleScanEndedEii @ 27 NONAME
- _ZN8MpEngine15reorderPlaylistEiiii @ 28 NONAME
- _ZN8MpEngine16playlistsRenamedEb @ 29 NONAME
- _ZN8MpEngine16reopenCollectionEv @ 30 NONAME
- _ZN8MpEngine16staticMetaObjectE @ 31 NONAME DATA 16
- _ZN8MpEngine17handleScanStartedEv @ 32 NONAME
- _ZN8MpEngine17verifyUsbBlockingEb @ 33 NONAME
- _ZN8MpEngine18launchBlockingNoteEv @ 34 NONAME
- _ZN8MpEngine18openCollectionItemEi @ 35 NONAME
- _ZN8MpEngine19getStaticMetaObjectEv @ 36 NONAME
- _ZN8MpEngine19setOutstandingPopupEP7HbPopup @ 37 NONAME
- _ZN8MpEngine20checkForSystemEventsEv @ 38 NONAME
- _ZN8MpEngine20handleUsbMtpEndEventEv @ 39 NONAME
- _ZN8MpEngine20libraryAboutToUpdateEv @ 40 NONAME
- _ZN8MpEngine21handleUsbMtpNotActiveEv @ 41 NONAME
- _ZN8MpEngine21saveToCurrentPlaylistER5QListIiEP19MpMpxCollectionData @ 42 NONAME
- _ZN8MpEngine22changeUsbBlockingStateENS_16UsbBlockingStateE @ 43 NONAME
- _ZN8MpEngine22handleUsbMtpStartEventEv @ 44 NONAME
- _ZN8MpEngine22openIsolatedCollectionE18TCollectionContext @ 45 NONAME
- _ZN8MpEngine24collectionPlaylistOpenedEv @ 46 NONAME
- _ZN8MpEngine24isolatedCollectionOpenedEP19MpMpxCollectionData @ 47 NONAME
- _ZN8MpEngine25releaseIsolatedCollectionEv @ 48 NONAME
- _ZN8MpEngine28handleOutstandingNoteClosingEv @ 49 NONAME
- _ZN8MpEngine28handleUsbMassStorageEndEventEv @ 50 NONAME
- _ZN8MpEngine30handleUsbMassStorageStartEventEv @ 51 NONAME
- _ZN8MpEngine4backEv @ 52 NONAME
- _ZN8MpEngine4stopEv @ 53 NONAME
- _ZN8MpEngine5closeEv @ 54 NONAME
- _ZN8MpEngine8instanceEv @ 55 NONAME
- _ZN8MpEngine9playPauseEv @ 56 NONAME
- _ZN8MpEngine9setRepeatEb @ 57 NONAME
- _ZN8MpEngineC1Ev @ 58 NONAME
- _ZN8MpEngineC2Ev @ 59 NONAME
- _ZN8MpEngineD0Ev @ 60 NONAME
- _ZN8MpEngineD1Ev @ 61 NONAME
- _ZN8MpEngineD2Ev @ 62 NONAME
- _ZNK8MpEngine10metaObjectEv @ 63 NONAME
- _ZTI8MpEngine @ 64 NONAME
- _ZTV8MpEngine @ 65 NONAME
+ _ZN15MpEngineFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+ _ZN15MpEngineFactory11qt_metacastEPKc @ 2 NONAME
+ _ZN15MpEngineFactory12sharedEngineEv @ 3 NONAME
+ _ZN15MpEngineFactory16staticMetaObjectE @ 4 NONAME DATA 16
+ _ZN15MpEngineFactory18createSharedEngineE4TUidN8MpEngine10EngineModeE @ 5 NONAME
+ _ZN15MpEngineFactory19getStaticMetaObjectEv @ 6 NONAME
+ _ZN15MpEngineFactory20createIsolatedEngineEN8MpEngine10EngineModeE @ 7 NONAME
+ _ZN15MpEngineFactory5closeEv @ 8 NONAME
+ _ZN15MpEngineFactory8instanceEv @ 9 NONAME
+ _ZN15MpEngineFactoryC1Ev @ 10 NONAME
+ _ZN15MpEngineFactoryC2Ev @ 11 NONAME
+ _ZN15MpEngineFactoryD0Ev @ 12 NONAME
+ _ZN15MpEngineFactoryD1Ev @ 13 NONAME
+ _ZN15MpEngineFactoryD2Ev @ 14 NONAME
+ _ZN8MpEngine10initializeE4TUidNS_10EngineModeE @ 15 NONAME
+ _ZN8MpEngine10setBalanceEi @ 16 NONAME
+ _ZN8MpEngine10setShuffleEb @ 17 NONAME
+ _ZN8MpEngine10usbBlockedEb @ 18 NONAME
+ _ZN8MpEngine11applyPresetEi @ 19 NONAME
+ _ZN8MpEngine11deleteSongsER5QListIiE @ 20 NONAME
+ _ZN8MpEngine11presetNamesEv @ 21 NONAME
+ _ZN8MpEngine11previewItemEi @ 22 NONAME
+ _ZN8MpEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 23 NONAME
+ _ZN8MpEngine11qt_metacastEPKc @ 24 NONAME
+ _ZN8MpEngine11setLoudnessEb @ 25 NONAME
+ _ZN8MpEngine11setPositionEi @ 26 NONAME
+ _ZN8MpEngine11skipForwardEv @ 27 NONAME
+ _ZN8MpEngine11stopSeekingEv @ 28 NONAME
+ _ZN8MpEngine12activePresetEv @ 29 NONAME
+ _ZN8MpEngine12playEmbeddedE7QString @ 30 NONAME
+ _ZN8MpEngine12playEmbeddedERK14XQSharableFile @ 31 NONAME
+ _ZN8MpEngine12playbackDataEv @ 32 NONAME
+ _ZN8MpEngine12retrieveSongEv @ 33 NONAME
+ _ZN8MpEngine12skipBackwardEv @ 34 NONAME
+ _ZN8MpEngine12songsDeletedEb @ 35 NONAME
+ _ZN8MpEngine13findPlaylistsER11QStringList @ 36 NONAME
+ _ZN8MpEngine13playlistSavedEb @ 37 NONAME
+ _ZN8MpEngine14collectionDataEv @ 38 NONAME
+ _ZN8MpEngine14createPlaylistER7QStringR5QListIiEP19MpMpxCollectionData @ 39 NONAME
+ _ZN8MpEngine14equalizerReadyEv @ 40 NONAME
+ _ZN8MpEngine14findAlbumSongsEi @ 41 NONAME
+ _ZN8MpEngine14handleUsbEventE12MpxUsbEvents @ 42 NONAME
+ _ZN8MpEngine14libraryUpdatedEv @ 43 NONAME
+ _ZN8MpEngine14openCollectionE18TCollectionContext @ 44 NONAME
+ _ZN8MpEngine14playAlbumSongsEiiP19MpMpxCollectionData @ 45 NONAME
+ _ZN8MpEngine14refreshLibraryEv @ 46 NONAME
+ _ZN8MpEngine14renamePlaylistER7QString @ 47 NONAME
+ _ZN8MpEngine14renamePlaylistER7QStringi @ 48 NONAME
+ _ZN8MpEngine14saveToPlaylistEiR5QListIiE @ 49 NONAME
+ _ZN8MpEngine15handleDiskEventE13MpxDiskEvents @ 50 NONAME
+ _ZN8MpEngine15handleScanEndedEii @ 51 NONAME
+ _ZN8MpEngine15reorderPlaylistEiiii @ 52 NONAME
+ _ZN8MpEngine16disableEqualizerEv @ 53 NONAME
+ _ZN8MpEngine16playlistsRenamedEb @ 54 NONAME
+ _ZN8MpEngine16reopenCollectionEv @ 55 NONAME
+ _ZN8MpEngine16startSeekForwardEv @ 56 NONAME
+ _ZN8MpEngine16staticMetaObjectE @ 57 NONAME DATA 16
+ _ZN8MpEngine17handleDeleteEndedEv @ 58 NONAME
+ _ZN8MpEngine17handleScanStartedEv @ 59 NONAME
+ _ZN8MpEngine17startSeekBackwardEv @ 60 NONAME
+ _ZN8MpEngine17verifyUsbBlockingEb @ 61 NONAME
+ _ZN8MpEngine18launchBlockingNoteEv @ 62 NONAME
+ _ZN8MpEngine18openCollectionItemEi @ 63 NONAME
+ _ZN8MpEngine19getStaticMetaObjectEv @ 64 NONAME
+ _ZN8MpEngine19handleDeleteStartedEv @ 65 NONAME
+ _ZN8MpEngine19setOutstandingPopupEP7HbPopup @ 66 NONAME
+ _ZN8MpEngine20checkForSystemEventsEv @ 67 NONAME
+ _ZN8MpEngine20handleEqualizerReadyEv @ 68 NONAME
+ _ZN8MpEngine20handleUsbMtpEndEventEv @ 69 NONAME
+ _ZN8MpEngine20libraryAboutToUpdateEv @ 70 NONAME
+ _ZN8MpEngine21handleUsbMtpNotActiveEv @ 71 NONAME
+ _ZN8MpEngine21saveToCurrentPlaylistER5QListIiEP19MpMpxCollectionData @ 72 NONAME
+ _ZN8MpEngine22changeUsbBlockingStateENS_16UsbBlockingStateE @ 73 NONAME
+ _ZN8MpEngine22handleUsbMtpStartEventEv @ 74 NONAME
+ _ZN8MpEngine22openIsolatedCollectionE18TCollectionContext @ 75 NONAME
+ _ZN8MpEngine24collectionPlaylistOpenedEv @ 76 NONAME
+ _ZN8MpEngine24containerContentsChangedEv @ 77 NONAME
+ _ZN8MpEngine24isolatedCollectionOpenedEP19MpMpxCollectionData @ 78 NONAME
+ _ZN8MpEngine25releaseIsolatedCollectionEv @ 79 NONAME
+ _ZN8MpEngine28handleOutstandingNoteClosingEv @ 80 NONAME
+ _ZN8MpEngine28handleUsbMassStorageEndEventEv @ 81 NONAME
+ _ZN8MpEngine30handleUsbMassStorageStartEventEv @ 82 NONAME
+ _ZN8MpEngine4backEv @ 83 NONAME
+ _ZN8MpEngine4stopEv @ 84 NONAME
+ _ZN8MpEngine7balanceEv @ 85 NONAME
+ _ZN8MpEngine8loudnessEv @ 86 NONAME
+ _ZN8MpEngine8songDataEv @ 87 NONAME
+ _ZN8MpEngine9playPauseEv @ 88 NONAME
+ _ZN8MpEngine9setRepeatEb @ 89 NONAME
+ _ZN8MpEngineC1Ev @ 90 NONAME
+ _ZN8MpEngineC2Ev @ 91 NONAME
+ _ZN8MpEngineD0Ev @ 92 NONAME
+ _ZN8MpEngineD1Ev @ 93 NONAME
+ _ZN8MpEngineD2Ev @ 94 NONAME
+ _ZNK15MpEngineFactory10metaObjectEv @ 95 NONAME
+ _ZNK8MpEngine10metaObjectEv @ 96 NONAME
+ _ZTI15MpEngineFactory @ 97 NONAME
+ _ZTI8MpEngine @ 98 NONAME
+ _ZTV15MpEngineFactory @ 99 NONAME
+ _ZTV8MpEngine @ 100 NONAME
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpaudioeffectsframeworkwrapper.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpaudioeffectsframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,39 @@
+/*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Framework wraper for Audio Effects
+*
+*/
+
+#ifndef MPAUDIOEFFECTSFRAMEWORKWRAPPER_H
+#define MPAUDIOEFFECTSFRAMEWORKWRAPPER_H
+
+#include
+
+class MpAudioEffectsFrameworkWrapperPrivate;
+
+class MpAudioEffectsFrameworkWrapper : public QObject
+{
+ Q_OBJECT
+ friend class MpAudioEffectsFrameworkWrapperPrivate;
+
+public:
+
+ explicit MpAudioEffectsFrameworkWrapper();
+ virtual ~MpAudioEffectsFrameworkWrapper();
+
+ int balance();
+ bool loudness();
+ void setBalance( int balance );
+ void setLoudness( bool mode );
+
+private: // data
+
+ MpAudioEffectsFrameworkWrapperPrivate *d_ptr; //owned
+
+};
+
+#endif /*MPAUDIOEFFECTSFRAMEWORKWRAPPER_H*/
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpaudioeffectsframeworkwrapper_p.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpaudioeffectsframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,49 @@
+/*
+* 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: Framework wraper for Audio Effects - Private.
+*
+*/
+
+#ifndef MPAUDIOEFFECTSFRAMEWORKWRAPPER_P_H
+#define MPAUDIOEFFECTSFRAMEWORKWRAPPER_P_H
+
+class CMPXAudioEffectProperties;
+
+class MpAudioEffectsFrameworkWrapperPrivate
+{
+public:
+
+ explicit MpAudioEffectsFrameworkWrapperPrivate();
+ virtual ~MpAudioEffectsFrameworkWrapperPrivate();
+
+public:
+
+ void init();
+ void setBalance( int balance );
+ void setLoudness( bool mode );
+ int balance();
+ bool loudness();
+
+private:
+
+ void doInitL();
+ void saveToFile();
+
+private: // data
+
+ CMPXAudioEffectProperties *mAudioEffectProperties; // owned
+
+};
+
+#endif /*MPAUDIOEFFECTSFRAMEWORKWRAPPER_P_H*/
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpequalizerframeworkwrapper.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpequalizerframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,57 @@
+/*
+* 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: Wrapper for equalizer framework
+*
+*/
+
+#ifndef MPEQUALIZERFRAMEWORKWRAPPER_H
+#define MPEQUALIZERFRAMEWORKWRAPPER_H
+
+// System includes
+#include
+#include
+
+class MpEqualizerFrameworkWrapperPrivate;
+
+/**
+ * Wrapper for equalizer framework
+ */
+class MpEqualizerFrameworkWrapper : public QObject
+ {
+ Q_OBJECT
+ Q_PROPERTY(QStringList presetNames READ presetNames)
+
+public:
+
+ explicit MpEqualizerFrameworkWrapper( QObject *parent = 0 );
+ virtual ~MpEqualizerFrameworkWrapper();
+
+ int getPresetNameKey( int presetIndex );
+ int getPresetIndex( int presetNameKey );
+ QStringList presetNames();
+
+signals:
+ void equalizerReady();
+
+private:
+
+ Q_DISABLE_COPY(MpEqualizerFrameworkWrapper)
+ MpEqualizerFrameworkWrapperPrivate *d_ptr;
+
+ friend class MpEqualizerFrameworkWrapperPrivate;
+ };
+
+#endif // MPEQUALIZERFRAMEWORKWRAPPER_H
+
+//End of File
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpequalizerframeworkwrapper_p.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpequalizerframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,58 @@
+/*
+* 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: Wrapper for equalizer framework - private implementation.
+*
+*/
+
+#ifndef MPEQUALIZERFRAMEWORKWRAPPER_P_H
+#define MPEQUALIZERFRAMEWORKWRAPPER_P_H
+
+// System includes
+#include
+#include
+
+// FORWARD DECLARATIONS
+class CAudioEqualizerUtility;
+
+class MpEqualizerFrameworkWrapperPrivate : public CBase,
+ public MMdaAudioPlayerCallback
+ {
+public:
+
+ MpEqualizerFrameworkWrapperPrivate( MpEqualizerFrameworkWrapper *wrapper );
+ virtual ~MpEqualizerFrameworkWrapperPrivate();
+
+ void init();
+ int getPresetNameKey( int presetIndex );
+ int getPresetIndex( int presetNameKey );
+ QStringList presetNames();
+
+private:
+
+ void DoInitL();
+ TInt DoGetPresetNameKeyL( const TInt presetIndex ) const;
+ void MapcInitComplete( TInt aError,
+ const TTimeIntervalMicroSeconds& aDuration );
+ void MapcPlayComplete( TInt aError );
+
+private:
+
+ MpEqualizerFrameworkWrapper *q_ptr;
+ CMdaAudioPlayerUtility* mMdaPlayUtility;
+ CAudioEqualizerUtility* mEqualizerUtility;
+ };
+
+#endif // MPEQUALIZERFRAMEWORKWRAPPER_P_H
+
+//End of File
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmediakeyhandler.h
--- a/mpengine/inc/mpmediakeyhandler.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmediakeyhandler.h Fri May 14 18:54:37 2010 -0500
@@ -18,7 +18,7 @@
#ifndef MPMEDIAKEYHANDLER_H
#define MPMEDIAKEYHANDLER_H
-#include
+#include
class MpMediaKeyHandlerPrivate;
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxcollectionframeworkwrapper.h
--- a/mpengine/inc/mpmpxcollectionframeworkwrapper.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxcollectionframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -36,39 +36,48 @@
public:
- explicit MpMpxCollectionFrameworkWrapper(
- MpCommon::MpViewMode viewMode=MpCommon::DefaultView, TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
+ explicit MpMpxCollectionFrameworkWrapper( TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
virtual ~MpMpxCollectionFrameworkWrapper();
void openCollection( TCollectionContext context );
void openCollectionItem( int index );
void back();
void findPlaylists( QStringList &playlists );
- void createPlaylist( QString &playlistName, QList &selection, MpMpxCollectionData* collectionData = 0 );
+ void createPlaylist( QString &playlistName, QList &selection, MpMpxCollectionData* collectionData );
void saveToPlaylist( int playlistIndex, QList &selection );
void saveToCurrentPlaylist( QList &selection, MpMpxCollectionData *collectionData );
void renamePlaylist( QString &newName, int index );
void renamePlaylist( QString &newName );
void deleteSongs( QList &selection );
void setShuffle( bool active );
+ void cancelRequest();
void previewItem( int index );
void openIsolatedCollection( TCollectionContext context );
void releaseIsolatedCollection();
-
+
+ void findAlbumSongs( int index );
+ void playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData );
+
MpMpxCollectionData *collectionData();
void reopenCollection();
void reorderPlaylist( int playlistId, int songId, int originalOrdinal, int newOrdinal );
+ void setRepeatFeatureEnabled( bool enable );
+ void setShuffleFeatureEnabled( bool enable );
signals:
void collectionPlaylistOpened();
void playlistSaved( bool success );
+ void deleteStarted(TCollectionContext context, TInt Count);
void songsDeleted( bool success );
void playlistsRenamed( bool success );
+ void openAddSongsWaitDialog();
void isolatedCollectionOpened( MpMpxCollectionData* collectionData );
+
+ void containerContentsChanged();
private:
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxcollectionframeworkwrapper_p.h
--- a/mpengine/inc/mpmpxcollectionframeworkwrapper_p.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxcollectionframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -24,7 +24,7 @@
#include "mpmpxisolatedcollectionhelper.h" //MMpMpxIsolatedCollectionHelperObserver
#include "mpmpxcollectionviewdefs.h"
-#include "mpcommondefs.h"
+
class MMPXCollectionUtility;
class MMPXCollectionUiHelper;
@@ -37,14 +37,30 @@
class MpMpxCollectionFrameworkWrapperPrivate : public MMPXCollectionObserver,
public MMPXCHelperObserver,
- public MMpMpxIsolatedCollectionHelperObserver
+ public MMpMpxIsolatedCollectionHelperObserver,
+ public MMPXCollectionFindObserver
{
+
+private:
+ //Keep in sync with TMCBrowseType in mpxcollectiondb.hrh
+ enum MpBrowseType{
+ BrowseAll = 0,
+ BrowsePlaylist,
+ BrowseArtist,
+ BrowseAlbum,
+ BrowsePodcasts,
+ BrowseGenre,
+ BrowseComposer,
+ BrowseAlbumSong,
+ BrowseAlbumMediaWall
+ };
+
public:
explicit MpMpxCollectionFrameworkWrapperPrivate( MpMpxCollectionFrameworkWrapper *wrapper );
virtual ~MpMpxCollectionFrameworkWrapperPrivate();
- void init( MpCommon::MpViewMode viewMode, TUid hostUid );
+ void init( TUid hostUid );
void openCollection( TCollectionContext context );
void openCollectionItem( int index );
void reopenCollection();
@@ -61,7 +77,12 @@
void openIsolatedCollection( TCollectionContext context );
void releaseIsolatedCollection();
void reorderPlaylist( int playlistId, int songId, int originalOrdinal, int newOrdinal );
-
+ void findAlbumSongs( int index );
+ void playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData );
+ void setRepeatFeatureEnabled( bool enable );
+ void setShuffleFeatureEnabled( bool enable );
+ void cancel();
+
MpMpxCollectionData *collectionData();
private:
@@ -74,7 +95,8 @@
void HandleCollectionMediaL( const CMPXMedia& aMedia, TInt aError );
void HandleOperationCompleteL( TCHelperOperation aOperation, TInt aErr, void* aArgument );
void HandleIsolatedOpenL( const CMPXMedia& aEntries, TInt aError );
-
+ void HandleFindAllL( const CMPXMedia& aResults, TBool aComplete, TInt aError );
+
void DoInitL();
void DoOpenCollectionL( TCollectionContext aContext );
void DoOpenCollectionItemL( TInt aIndex );
@@ -87,17 +109,24 @@
void DoSaveToPlaylistL( int playlistIndex, QList &selection );
void DoDeleteSongsL( QList &selection );
+ void DoDeleteAlbumSongsL( QList &selection );
void DoRenamePlaylistL( QString &newName, int index );
void DoRenamePlaylistL( QString &newname );
void DoRenamePlaylistL( TMPXItemId id, QString &newName );
void DoSaveToCurrentPlaylistL( QList &selection, MpMpxCollectionData *collectionData );
void DoSetShuffleL( bool active );
- void DoPreviewItemL( int index );
+ void DoPreviewSongL( int index );
+ void DoPreviewAlbumSongL( int index );
void DoOpenIsolatedCollectionL( TCollectionContext context );
void DoReorderPlaylistL( int playlistId, int songId, int originalOrdinal, int newOrdinal );
+ void DoFindAlbumSongsL( int index );
+ void DoPlayAlbumSongsL( int albumIndex, int songIndex, MpMpxCollectionData* collectionData );
+
void DoHandleCollectionMessageL( const CMPXMessage& aMsg );
+ void DoHandleItemChangedMessageL( const CMPXMessage& aMsg );
void PreparePlaylistMediaL( CMPXMedia& aMedia, QList &selection, MpMpxCollectionData *collectionData );
+ void createPlaybackUtilityL();
private:
@@ -113,8 +142,10 @@
TBool iFirstIncrementalOpen;
CMPXMedia *iUserPlaylists; // Owned
TInt iNumItemsAdded;
- MpCommon::MpViewMode iViewMode;
TUid mHostUid;
+ TBool iRepeatFeature;
+ TBool iShuffleFeature;
+ TBool iReopen;
};
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxdetailsframeworkwrapper.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpmpxdetailsframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,49 @@
+/*
+* 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: Framework wrapper
+*
+*/
+
+#ifndef MPMPXDETAILSFRAMEWORKWRAPPER_H_
+#define MPMPXDETAILSFRAMEWORKWRAPPER_H_
+
+//includes
+#include
+
+//forward declartions
+class MpSongData;
+class MpMpxDetailsFrameworkWrapperPrivate;
+
+//class declaration
+class MpMpxDetailsFrameworkWrapper : public QObject
+{
+ Q_OBJECT
+ friend class MpMpxDetailsFrameworkWrapperPrivate;
+
+public:
+ explicit MpMpxDetailsFrameworkWrapper( TUid hostUid, QObject *parent=0 );
+ virtual ~MpMpxDetailsFrameworkWrapper();
+
+ MpSongData *songData();
+
+public:
+ void retrieveSong();
+
+private:
+ Q_DISABLE_COPY( MpMpxDetailsFrameworkWrapper )
+ MpMpxDetailsFrameworkWrapperPrivate *d_ptr; //owned
+};
+
+
+#endif /* MPMPXDETAILSFRAMEWORKWRAPPER_H_ */
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxdetailsframeworkwrapper_p.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpmpxdetailsframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,67 @@
+/*
+* 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: Framework wrapper - Private.
+*
+*/
+
+
+#ifndef MPMPXDETAILSFRAMEWORKWRAPPER_P_H_
+#define MPMPXDETAILSFRAMEWORKWRAPPER_P_H_
+
+#include
+#include
+
+//forward declartions
+class MMPXPlaybackUtility;
+class MpMpxDetailsFrameworkWrapper;
+class CMPXMedia;
+class MpSongData;
+
+//class declaration
+class MpMpxDetailsFrameworkWrapperPrivate : public MMPXPlaybackObserver,
+ public MMPXPlaybackCallback
+{
+
+public:
+ explicit MpMpxDetailsFrameworkWrapperPrivate( MpMpxDetailsFrameworkWrapper *qq );
+ virtual ~MpMpxDetailsFrameworkWrapperPrivate();
+
+ void init( TUid hostUid );
+
+public: //from MMPXPlaybackObserver
+ void HandlePlaybackMessage( CMPXMessage *aMessage, TInt aError );
+
+public: //from MMPXPlaybackCallback
+ void HandlePropertyL( TMPXPlaybackProperty aProperty, TInt aValue, TInt aError );
+ void HandleSubPlayerNamesL( TUid aPlayer, const MDesCArray *aSubPlayers,
+ TBool aComplete, TInt aError );
+ void HandleMediaL( const CMPXMedia& aProperties, TInt aError );
+
+public:
+ MpSongData *songData();
+ void retrieveSong();
+
+private:
+ void DoInitL();
+ void doRetrieveSongL();
+
+private:
+ MpMpxDetailsFrameworkWrapper *q_ptr; //not owned
+ MpSongData *iSongData; // not owned
+ MMPXPlaybackUtility *iPlaybackUtility; // owned
+ TUid mHostUid;
+};
+
+
+#endif /* MPMPXDETAILSFRAMEWORKWRAPPER_P_H_ */
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxharvesterframeworkwrapper.h
--- a/mpengine/inc/mpmpxharvesterframeworkwrapper.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxharvesterframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -36,8 +36,7 @@
public:
- explicit MpMpxHarvesterFrameworkWrapper(
- MpCommon::MpViewMode viewMode=MpCommon::DefaultView, TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
+ explicit MpMpxHarvesterFrameworkWrapper( TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
virtual ~MpMpxHarvesterFrameworkWrapper();
void scan();
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxharvesterframeworkwrapper_p.h
--- a/mpengine/inc/mpmpxharvesterframeworkwrapper_p.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxharvesterframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -35,7 +35,7 @@
explicit MpMpxHarvesterFrameworkWrapperPrivate( MpMpxHarvesterFrameworkWrapper *wrapper );
virtual ~MpMpxHarvesterFrameworkWrapperPrivate();
- void init( MpCommon::MpViewMode viewMode, TUid hostUid );
+ void init( TUid hostUid );
void scan();
void cancelScan();
void checkForSystemEvents();
@@ -64,7 +64,6 @@
TInt iNumItemsAdded;
TBool iScanning;
TInt iPreviousBroadCastMsg;
- MpCommon::MpViewMode iViewMode;
TUid mHostUid;
};
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxplaybackframeworkwrapper.h
--- a/mpengine/inc/mpmpxplaybackframeworkwrapper.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxplaybackframeworkwrapper.h Fri May 14 18:54:37 2010 -0500
@@ -36,11 +36,13 @@
public:
- explicit MpMpxPlaybackFrameworkWrapper(
- MpCommon::MpViewMode viewMode=MpCommon::DefaultView, TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
+ explicit MpMpxPlaybackFrameworkWrapper( TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
virtual ~MpMpxPlaybackFrameworkWrapper();
MpPlaybackData *playbackData();
+ void setBalance( int balance );
+ void applyAudioEffects();
+ void applyEqualizer();
public slots:
@@ -49,7 +51,10 @@
void playPause();
void stop();
void skipForward();
+ void startSeekForward();
+ void stopSeeking();
void skipBackward();
+ void startSeekBackward();
void setPosition( int position );
void setShuffle( bool mode );
void setRepeat( bool mode );
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpmpxplaybackframeworkwrapper_p.h
--- a/mpengine/inc/mpmpxplaybackframeworkwrapper_p.h Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/inc/mpmpxplaybackframeworkwrapper_p.h Fri May 14 18:54:37 2010 -0500
@@ -20,7 +20,6 @@
#include
#include
-#include "mpmpxcollectionviewdefs.h"
#include "mpcommondefs.h"
@@ -40,17 +39,23 @@
explicit MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *wrapper );
virtual ~MpMpxPlaybackFrameworkWrapperPrivate();
- void init( MpCommon::MpViewMode viewMode, TUid hostUid );
+ void init( TUid hostUid );
void play( QString aFilename );
void play( const XQSharableFile& file );
void playPause();
void stop();
void skipForward();
+ void startSeekForward();
+ void stopSeeking();
void skipBackward();
+ void startSeekBackward();
void setPosition( int value );
void setShuffle( bool mode );
void setRepeat( bool mode );
+ void setBalance( int balance );
+ void applyAudioEffects();
+ void applyEqualizer();
MpPlaybackData *playbackData();
@@ -79,7 +84,6 @@
MMPXPlaybackUtility *iPlaybackUtility; // Own
CMPXMedia *iMedia; // Own
MpPlaybackData *iPlaybackData; // Own
- MpCommon::MpViewMode iViewMode;
TUid mHostUid;
};
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpprogressdialoghandler.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/inc/mpprogressdialoghandler.h Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,80 @@
+/*
+* 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 Progress Dialogs.
+*
+*/
+
+
+#ifndef MPPROGRESSDIALOGHANDLER_H
+#define MPPROGRESSDIALOGHANDLER_H
+
+#include "mpmpxcommondefs.h"
+#include "mpmpxcollectionviewdefs.h"
+
+class MpMpxCollectionFrameworkWrapper;
+class MpMpxHarvesterFrameworkWrapper;
+class HbProgressDialog;
+class HbPopup;
+
+#include
+
+class MpProgressDialogHandler : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ explicit MpProgressDialogHandler( MpMpxCollectionFrameworkWrapper *cwrapper, MpMpxHarvesterFrameworkWrapper *hwrapper , QObject *parent=0 );
+ virtual ~ MpProgressDialogHandler();
+ void scan();
+ bool isScanning();
+
+ void deleteSongs( QList &selection );
+
+
+signals:
+
+ void deleteStarted();
+ void songsDeleted( bool success );
+
+
+public slots:
+
+ void cancelRequest();
+ void handleDeleteStarted( TCollectionContext context, TInt count );
+ void handleDeleteEnded( bool success );
+ void handleAddSongs();
+ void handleAddSongsFinished( bool success);
+ void cancelScan();
+ void handleScanStarted();
+ void handleScanEnded( int numItemsAdded, int error );
+ void handleScanCountChanged(int count);
+ void handleDiskEvent( MpxDiskEvents event );
+ void handleOutstandingPopupClosing();
+
+
+private:
+
+ void setOutstandingPopup( HbPopup *popup );
+ void clearOutstandingPopup( HbPopup *popup );
+
+ MpMpxCollectionFrameworkWrapper *mMpxCollectionWrapper; // Not own
+ MpMpxHarvesterFrameworkWrapper *mMpxHarvesterWrapper; // Not own
+ HbPopup *mOutStandingProgressNote; // Own
+ TBool mDeleting;
+ TBool mScanning;
+};
+
+#endif // MPSONGDELETING_H
+
diff -r 2c5162224003 -r fdb31ab341af mpengine/inc/mpsongscanner.h
--- a/mpengine/inc/mpsongscanner.h Fri Apr 30 19:33:32 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* 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 song scanner.
-*
-*/
-
-
-#ifndef MPSONGSCANNER_H
-#define MPSONGSCANNER_H
-
-class MpMpxHarvesterFrameworkWrapper;
-class HbProgressDialog;
-
-#include
-#include "mpmpxcommondefs.h"
-
-class MpSongScanner : public QObject
-{
- Q_OBJECT
-
-public:
-
- explicit MpSongScanner( MpMpxHarvesterFrameworkWrapper *wrapper, QObject *parent=0 );
- virtual ~MpSongScanner();
-
- void scan();
- bool isScanning();
-
-public slots:
-
- void cancelScan();
- void handleScanStarted();
- void handleScanEnded( int numItemsAdded, int error );
- void handleScanCountChanged(int count);
- void handleDiskEvent( MpxDiskEvents event );
- void handleProgressNoteClosing();
-
-private:
-
- MpMpxHarvesterFrameworkWrapper *mMpxWrapper; // Not own
- HbProgressDialog *mScanProgressNote; // Own
- TBool mScanning;
-
-};
-
-#endif // MPSONGSCANNER_H
-
diff -r 2c5162224003 -r fdb31ab341af mpengine/mpengine.pro
--- a/mpengine/mpengine.pro Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/mpengine.pro Fri May 14 18:54:37 2010 -0500
@@ -24,7 +24,9 @@
INCLUDEPATH += . \
inc \
- ../inc
+ ../inc \
+ ../mpserviceplugins/inc
+
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
LIBS += -lestor.dll \
@@ -37,35 +39,50 @@
-lremconinterfacebase.dll \
-lmpsettingsmanager \
-lmpdata.dll \
- -lxqserviceutil
+ -lxqserviceutil \
+ -laudioequalizerutility.dll
symbian:TARGET.EPOCALLOWDLLDATA = 1
-HEADERS += ../inc/mpengine.h \
+HEADERS += ../inc/mpenginefactory.h \
+ ../inc/mpengine.h \
inc/mpmpxharvesterframeworkwrapper.h \
inc/mpmpxharvesterframeworkwrapper_p.h \
inc/mpmpxplaybackframeworkwrapper.h \
inc/mpmpxplaybackframeworkwrapper_p.h \
- inc/mpsongscanner.h \
+ inc/mpmpxdetailsframeworkwrapper.h \
+ inc/mpmpxdetailsframeworkwrapper_p.h \
inc/mpmediakeyhandler.h \
inc/mpmediakeyhandler_p.h\
inc/mpmediakeyremconresponse.h \
inc/mpmpxcollectionframeworkwrapper.h \
inc/mpmpxisolatedcollectionhelper.h \
- inc/mpmpxcollectionframeworkwrapper_p.h
+ inc/mpmpxcollectionframeworkwrapper_p.h \
+ inc/mpaudioeffectsframeworkwrapper.h \
+ inc/mpaudioeffectsframeworkwrapper_p.h \
+ inc/mpequalizerframeworkwrapper.h \
+ inc/mpequalizerframeworkwrapper_p.h \
+ inc/mpprogressdialoghandler.h
-SOURCES += src/mpengine.cpp \
+SOURCES += src/mpenginefactory.cpp \
+ src/mpengine.cpp \
src/mpmpxharvesterframeworkwrapper.cpp \
src/mpmpxharvesterframeworkwrapper_p.cpp \
src/mpmpxplaybackframeworkwrapper.cpp \
src/mpmpxplaybackframeworkwrapper_p.cpp \
- src/mpsongscanner.cpp \
+ src/mpmpxdetailsframeworkwrapper.cpp \
+ src/mpmpxdetailsframeworkwrapper_p.cpp \
src/mpmediakeyhandler.cpp \
src/mpmediakeyhandler_p.cpp \
src/mpmediakeyremconresponse.cpp \
src/mpmpxcollectionframeworkwrapper.cpp \
src/mpmpxisolatedcollectionhelper.cpp \
- src/mpmpxcollectionframeworkwrapper_p.cpp
+ src/mpmpxcollectionframeworkwrapper_p.cpp \
+ src/mpaudioeffectsframeworkwrapper.cpp \
+ src/mpaudioeffectsframeworkwrapper_p.cpp \
+ src/mpequalizerframeworkwrapper.cpp \
+ src/mpequalizerframeworkwrapper_p.cpp \
+ src/mpprogressdialoghandler.cpp
DEFINES += BUILD_MPENGINE_LIB
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpaudioeffectsframeworkwrapper.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpaudioeffectsframeworkwrapper.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,86 @@
+/*
+* 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: Framework wraper for Audio Effects.
+*
+*/
+
+#include "mpaudioeffectsframeworkwrapper.h"
+#include "mpaudioeffectsframeworkwrapper_p.h"
+#include "mptrace.h"
+
+/*!
+ \class MpAudioEffectsFrameworkWrapper
+ \brief Wrapper for Audio Effects framework.
+
+ Audio effects framework wrapper provides Qt style interface to the audio effects framework
+ utilities. Its implementation is hidden using private class data pattern.
+*/
+
+/*!
+ Constructor.
+ */
+MpAudioEffectsFrameworkWrapper::MpAudioEffectsFrameworkWrapper()
+ :d_ptr( new MpAudioEffectsFrameworkWrapperPrivate() )
+{
+ d_ptr->init();
+}
+
+/*!
+ Destructor.
+ */
+MpAudioEffectsFrameworkWrapper::~MpAudioEffectsFrameworkWrapper()
+{
+ TX_ENTRY
+ delete d_ptr;
+ TX_EXIT
+}
+
+/*!
+ Returns the current persistent balance.
+ */
+int MpAudioEffectsFrameworkWrapper::balance()
+{
+ TX_LOG
+ return d_ptr->balance();
+}
+
+/*!
+ Returns the current persistent loudness.
+ */
+bool MpAudioEffectsFrameworkWrapper::loudness()
+{
+ TX_LOG
+ return d_ptr->loudness();
+}
+
+/*!
+ Set the \a balance.
+ */
+void MpAudioEffectsFrameworkWrapper::setBalance( int balance )
+{
+ TX_ENTRY
+ d_ptr->setBalance( balance );
+ TX_EXIT
+}
+
+/*!
+ Set the loudness \a mode.
+ */
+void MpAudioEffectsFrameworkWrapper::setLoudness( bool mode )
+{
+ TX_ENTRY
+ d_ptr->setLoudness( mode );
+ TX_EXIT
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpaudioeffectsframeworkwrapper_p.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpaudioeffectsframeworkwrapper_p.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,109 @@
+/*
+* 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: Framework wraper for Audio Effects - Private.
+*
+*/
+
+#include "mpaudioeffectsframeworkwrapper_p.h"
+#include "mpxaudioeffectproperties.h"
+#include "mpcommondefs.h"
+#include "mptrace.h"
+
+/*!
+ \class MpAudioEffectsFrameworkWrapperPrivate
+ \brief Wrapper for audio effects framework utilities - private implementation.
+
+ This is a private implementation of the audio effects framework wrapper utilties interface.
+*/
+
+/*!
+ \internal
+ */
+MpAudioEffectsFrameworkWrapperPrivate::MpAudioEffectsFrameworkWrapperPrivate()
+ :mAudioEffectProperties( new CMPXAudioEffectProperties() )
+{
+}
+
+/*!
+ \internal
+ */
+MpAudioEffectsFrameworkWrapperPrivate::~MpAudioEffectsFrameworkWrapperPrivate()
+{
+ delete mAudioEffectProperties;
+}
+
+/*!
+ \internal
+ */
+void MpAudioEffectsFrameworkWrapperPrivate::init()
+{
+ TRAPD( err, doInitL() );
+ if ( err != KErrNone ) {
+ mAudioEffectProperties->Reset();
+ }
+}
+
+/*!
+ \internal
+ */
+void MpAudioEffectsFrameworkWrapperPrivate::setBalance( int balance )
+{
+ mAudioEffectProperties->SetBalance( balance );
+ saveToFile();
+}
+
+/*!
+ \internal
+ */
+void MpAudioEffectsFrameworkWrapperPrivate::setLoudness( bool mode )
+{
+ mAudioEffectProperties->SetLoudness( mode );
+ saveToFile();
+}
+
+/*!
+ \internal
+ */
+int MpAudioEffectsFrameworkWrapperPrivate::balance()
+{
+ return mAudioEffectProperties->Balance();
+}
+
+/*!
+ \internal
+ */
+bool MpAudioEffectsFrameworkWrapperPrivate::loudness()
+{
+ return mAudioEffectProperties->Loudness();
+}
+
+/*!
+ \internal
+ */
+void MpAudioEffectsFrameworkWrapperPrivate::saveToFile()
+{
+ TRAPD( err, mAudioEffectProperties->SaveToFileL() );
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS( "Error: " << err << "; should never get here." );
+ }
+}
+
+/*!
+ \internal
+ */
+void MpAudioEffectsFrameworkWrapperPrivate::doInitL()
+{
+ mAudioEffectProperties->LoadFromFileL();
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpengine.cpp
--- a/mpengine/src/mpengine.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/src/mpengine.cpp Fri May 14 18:54:37 2010 -0500
@@ -22,14 +22,19 @@
#include
#include
#include
+#include
#include "mpengine.h"
#include "mpmpxharvesterframeworkwrapper.h"
#include "mpmpxcollectionframeworkwrapper.h"
#include "mpmpxplaybackframeworkwrapper.h"
-#include "mpsongscanner.h"
+#include "mpmpxdetailsframeworkwrapper.h"
+#include "mpaudioeffectsframeworkwrapper.h"
+#include "mpequalizerframeworkwrapper.h"
#include "mpmediakeyhandler.h"
#include "mptrace.h"
+#include "mpsettingsmanager.h"
+#include "mpprogressdialoghandler.h"
/*!
\class MpEngine
@@ -177,19 +182,30 @@
*/
/*!
+ \fn void containerContentsChanged()
+
+ This signal is emitted when items are removed or inserted on the current
+ container.
+
+ */
+
+/*!
Constructs music player engine.
*/
MpEngine::MpEngine()
: mMpxHarvesterWrapper(0),
- mSongScanner(0),
mMediaKeyHandler(0),
mUsbOutstandingNote(0),
mMpxCollectionWrapper(0),
mMpxPlaybackWrapper(0),
+ mMpxDetailsWrapper(0),
+ mAudioEffectsWrapper(0),
+ mEqualizerWrapper(0),
+ mCurrentPresetIndex(KEqualizerPresetNone),
mMpTranslator(0),
mUsbBlockingState(USB_NotConnected),
mPreviousUsbState(USB_NotConnected),
- mViewMode(MpCommon::DefaultView)
+ mProgressDialogHandler(0)
{
TX_LOG
}
@@ -200,25 +216,25 @@
MpEngine::~MpEngine()
{
TX_ENTRY
+ delete mMpTranslator;
+ delete mMediaKeyHandler;
+ delete mUsbOutstandingNote;
+ delete mMpxPlaybackWrapper;
+ delete mMpxDetailsWrapper;
+ delete mMpxHarvesterWrapper;
+ delete mMpxCollectionWrapper;
+ delete mAudioEffectsWrapper;
+ delete mEqualizerWrapper;
+ delete mProgressDialogHandler;
TX_EXIT
}
/*!
- Returns the singleton instance of music player engine.
- */
-MpEngine * MpEngine::instance()
-{
- static MpEngine instance;
- return &instance;
-}
-
-/*!
Initialize engine
*/
-void MpEngine::initialize( MpCommon::MpViewMode viewMode, TUid hostUid )
+void MpEngine::initialize( TUid hostUid, EngineMode mode )
{
TX_ENTRY
- mViewMode = viewMode;
mHostUid = hostUid;
//Load musicplayer translator
@@ -232,10 +248,10 @@
if ( translatorLoaded ) {
qApp->installTranslator( mMpTranslator );
}
-
- if( mViewMode == MpCommon::DefaultView || mViewMode == MpCommon::FetchView ){
+
+ if( mode == StandAlone || mode == Fetch ){
// Harvesting Wrapper
- mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mViewMode, mHostUid );
+ mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mHostUid );
connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
this, SLOT( handleScanStarted() ), Qt::QueuedConnection );
connect( mMpxHarvesterWrapper, SIGNAL( scanEnded(int, int) ),
@@ -245,12 +261,19 @@
this, SLOT( handleDiskEvent(MpxDiskEvents) ), Qt::QueuedConnection );
qRegisterMetaType("MpxUsbEvents");
connect( mMpxHarvesterWrapper, SIGNAL( usbEvent(MpxUsbEvents) ),
- this, SLOT( handleUsbEvent(MpxUsbEvents) ), Qt::QueuedConnection );
- mSongScanner = new MpSongScanner( mMpxHarvesterWrapper );
+ this, SLOT( handleUsbEvent(MpxUsbEvents) ), Qt::QueuedConnection );
mMediaKeyHandler = new MpMediaKeyHandler();
+ }
+
+ if ( mode == StandAlone || mode == Fetch || mode == MediaBrowsing) {
// Collection Wrapper
- mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mViewMode, mHostUid );
+ mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid );
+
+ //disabling these since fetch mode plays only one song at a time.
+ mMpxCollectionWrapper->setRepeatFeatureEnabled( mode != Fetch );
+ mMpxCollectionWrapper->setShuffleFeatureEnabled( mode != Fetch );
+
connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
this, SIGNAL( collectionPlaylistOpened() ),
Qt::QueuedConnection );
@@ -266,33 +289,40 @@
connect( mMpxCollectionWrapper, SIGNAL( isolatedCollectionOpened( MpMpxCollectionData* ) ),
this, SIGNAL( isolatedCollectionOpened( MpMpxCollectionData* ) ),
Qt::QueuedConnection );
+ connect( mMpxCollectionWrapper, SIGNAL( containerContentsChanged() ),
+ this, SIGNAL( containerContentsChanged() ),
+ Qt::QueuedConnection );
+ connect( mProgressDialogHandler, SIGNAL( deleteStarted() ),
+ this, SLOT( handleDeleteStarted() ),
+ Qt::QueuedConnection );
+ connect( mProgressDialogHandler, SIGNAL( songsDeleted( bool ) ),
+ this, SLOT( handleDeleteEnded( bool ) ),
+ Qt::QueuedConnection );
+ }
+
+ if( mode == StandAlone ){
+ // Equalizer wrapper , this needs to be created before playback wrapper.
+ mEqualizerWrapper = new MpEqualizerFrameworkWrapper();
+ connect( mEqualizerWrapper, SIGNAL( equalizerReady() ),
+ this, SLOT( handleEqualizerReady() ), Qt::QueuedConnection );
+ }
+
+ if ( mode == StandAlone || mode == Fetch || mode == Embedded ) {
+ // Playback Wrapper
+ mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid );
+
+ // Details Wrapper
+ mMpxDetailsWrapper = new MpMpxDetailsFrameworkWrapper( mHostUid );
}
- // Playback Wrapper
- mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mViewMode, mHostUid );
-
- TX_EXIT
-}
-
-/*!
- Deinitialize wrappers
- */
-void MpEngine::close( )
-{
- delete mMpTranslator;
- mMpTranslator = 0;
- delete mSongScanner;
- mSongScanner = 0;
- delete mMediaKeyHandler;
- mMediaKeyHandler = 0;
- delete mUsbOutstandingNote;
- mUsbOutstandingNote = 0;
- delete mMpxPlaybackWrapper;
- mMpxPlaybackWrapper = 0;
- delete mMpxHarvesterWrapper;
- mMpxHarvesterWrapper = 0;
- delete mMpxCollectionWrapper;
- mMpxCollectionWrapper = 0;
+ if( mode == StandAlone ){
+ // AudioEffects wrapper
+ mAudioEffectsWrapper = new MpAudioEffectsFrameworkWrapper();
+ }
+ if (mMpxHarvesterWrapper && mMpxCollectionWrapper){
+ mProgressDialogHandler = new MpProgressDialogHandler(mMpxCollectionWrapper, mMpxHarvesterWrapper);
+ }
+ TX_EXIT
}
/*!
@@ -344,7 +374,7 @@
TX_ENTRY
if ( !verifyUsbBlocking( true ) ) {
emit libraryAboutToUpdate();
- mSongScanner->scan();
+ mProgressDialogHandler->scan();
}
TX_EXIT
}
@@ -687,7 +717,7 @@
void MpEngine::deleteSongs( QList &selection )
{
if ( !verifyUsbBlocking( true ) ) {
- mMpxCollectionWrapper->deleteSongs( selection );
+ mProgressDialogHandler->deleteSongs( selection );
}
}
@@ -722,6 +752,22 @@
}
/*!
+ Finds all songs beloging to the album specified by the \a index.
+ */
+void MpEngine::findAlbumSongs( int index )
+{
+ mMpxCollectionWrapper->findAlbumSongs(index);
+}
+
+/*!
+ Plays album with \a albumIndex starting with the songs with \a songIndex.
+ */
+void MpEngine::playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData )
+{
+ mMpxCollectionWrapper->playAlbumSongs(albumIndex, songIndex, collectionData);
+}
+
+/*!
Returns pointer to MpMpxCollectionData, which is the collection data.
*/
MpMpxCollectionData *MpEngine::collectionData()
@@ -790,7 +836,7 @@
}
/*!
- Slot to handle a skeep forward.
+ Slot to handle a skip forward.
*/
void MpEngine::skipForward()
{
@@ -798,7 +844,23 @@
}
/*!
- Slot to handle a skeep backwards.
+ Slot to handle seek forward.
+ */
+void MpEngine::startSeekForward()
+{
+ mMpxPlaybackWrapper->startSeekForward();
+}
+
+/*!
+ Slot to handle stop seeking.
+ */
+void MpEngine::stopSeeking()
+{
+ mMpxPlaybackWrapper->stopSeeking();
+}
+
+/*!
+ Slot to handle a skip backwards.
*/
void MpEngine::skipBackward()
{
@@ -806,6 +868,13 @@
}
/*!
+ Slot to handle seek backwards.
+ */
+void MpEngine::startSeekBackward()
+{
+ mMpxPlaybackWrapper->startSeekBackward();
+}
+/*!
Slot to handle a request to change \a position.
*/
void MpEngine::setPosition( int position )
@@ -829,3 +898,161 @@
mMpxPlaybackWrapper->setRepeat( mode );
}
+/*!
+ Returns pointer to MpSongData, which is the song data for detail's view.
+ */
+MpSongData *MpEngine::songData()
+{
+ return mMpxDetailsWrapper->songData();
+}
+
+/*!
+ Retrieve song informatioin
+ */
+void MpEngine::retrieveSong()
+{
+ TX_ENTRY
+ mMpxDetailsWrapper->retrieveSong();
+ TX_EXIT
+}
+
+/*!
+ Retrieve balance informatioin from audio effects
+ */
+int MpEngine::balance()
+{
+ return mAudioEffectsWrapper->balance();
+}
+
+/*!
+ Retrieve loudness informatioin from audio effects
+ */
+bool MpEngine::loudness()
+{
+ return mAudioEffectsWrapper->loudness();
+}
+
+/*!
+ Slot to handle a request to change \a balance in audio effects.
+ */
+void MpEngine::setBalance( int balance )
+{
+ TX_ENTRY
+
+ if ( mAudioEffectsWrapper->balance() != balance ) {
+ mAudioEffectsWrapper->setBalance( balance );
+ mMpxPlaybackWrapper->setBalance( balance );
+ }
+
+ TX_EXIT
+}
+
+/*!
+ Slot to handle a request to change loudness \a mode in audio effects.
+ */
+void MpEngine::setLoudness( bool mode )
+{
+ TX_ENTRY
+
+ if( mAudioEffectsWrapper->loudness() != mode ) { //do not set same value twice
+ mAudioEffectsWrapper->setLoudness( mode );
+ mMpxPlaybackWrapper->applyAudioEffects();
+ }
+
+ TX_EXIT
+}
+
+/*!
+ Apply the preset by giving \a presetIndex. The index is subtracted by 1 because
+ index 0 represent "Off" at UI level.
+ */
+void MpEngine::applyPreset( int presetIndex )
+{
+ TX_ENTRY_ARGS( "presetIndex=" << presetIndex );
+
+ TInt presetKey = mEqualizerWrapper->getPresetNameKey( presetIndex - 1 );
+
+ if ( presetKey != KEqualizerPresetNone ) {
+ TX_LOG_ARGS( "Preset key in engine =" << presetKey );
+ // Store in CenRep file
+ MpSettingsManager::setPreset( presetKey );
+ // Notify playback framework of the change.
+ mMpxPlaybackWrapper->applyEqualizer();
+ mCurrentPresetIndex = presetIndex;
+ }
+ else {
+ TX_LOG_ARGS("getPresetNameKey Error = " << KEqualizerPresetNone);
+ }
+
+ TX_EXIT
+}
+
+/*!
+ Disabling equalizer by setting the preset to -1 and apply it to
+ disable current preset.
+ */
+void MpEngine::disableEqualizer()
+{
+ TX_ENTRY
+
+ mCurrentPresetIndex = KEqualizerPresetNone;
+ // Store in CenRep file
+ MpSettingsManager::setPreset( mCurrentPresetIndex );
+ // Notify playback framework of the change.
+ mMpxPlaybackWrapper->applyEqualizer();
+
+ TX_EXIT
+}
+
+/*!
+ Return current preset index (UI)
+ */
+int MpEngine::activePreset()
+{
+ TX_LOG_ARGS("mCurrentPresetIndex = " << mCurrentPresetIndex );
+
+ return mCurrentPresetIndex;
+}
+
+/*!
+ Retrieve list of preset names from equalizer wrapper
+ */
+QStringList MpEngine::presetNames()
+{
+ return mEqualizerWrapper->presetNames();
+}
+
+/*!
+ Slot to handle equalizer ready signal from equalizer wrapper.
+ */
+void MpEngine::handleEqualizerReady()
+{
+ TX_ENTRY
+
+ // Get preset id from cenrep
+ TInt presetKey( MpSettingsManager::preset() );
+
+ mCurrentPresetIndex = mEqualizerWrapper->getPresetIndex( presetKey );
+ emit equalizerReady();
+
+ TX_EXIT
+}
+
+/*!
+ Slot to be called when song deleting starts.
+ */
+void MpEngine::handleDeleteStarted() {
+ TX_ENTRY
+ mMediaKeyHandler->setEnabled(false);
+ TX_EXIT
+}
+
+/*!
+ Slot to be called when song deleting ends.
+ */
+void MpEngine::handleDeleteEnded() {
+ TX_ENTRY
+ mMediaKeyHandler->setEnabled(true);
+ TX_EXIT
+}
+
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpenginefactory.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpenginefactory.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,100 @@
+/*
+* 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: mp engine factory.
+*
+*/
+
+#include "mpengine.h"
+#include "mpenginefactory.h"
+#include "mptrace.h"
+
+/*!
+ \class MpEngineFactory
+ \brief Music Player engine factory.
+
+ MP Engine factory is responsible to create and mantain ownership of MP engines.
+*/
+
+/*!
+ Constructs music player engine factory.
+ */
+MpEngineFactory::MpEngineFactory()
+ : mSharedEngine( 0 )
+{
+ TX_LOG
+}
+
+/*!
+ Destructs music player engine factory.
+ */
+MpEngineFactory::~MpEngineFactory()
+{
+}
+
+/*!
+ Returns the singleton instance of music player engine factory.
+ */
+MpEngineFactory * MpEngineFactory::instance()
+{
+ static MpEngineFactory instance;
+ return &instance;
+}
+
+/*!
+ Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is
+ already created parameters are ignored.
+ */
+MpEngine *MpEngineFactory::createSharedEngine( TUid hostUid , MpEngine::EngineMode mode )
+{
+ if ( !instance()->mSharedEngine ) {
+ instance()->mSharedEngine = new MpEngine();
+ instance()->mSharedEngine->initialize( hostUid, mode );
+ }
+ return instance()->mSharedEngine;
+}
+
+/*!
+ Returns an instance to an isolated engine with \a mode.
+ */
+MpEngine *MpEngineFactory::createIsolatedEngine( MpEngine::EngineMode mode )
+{
+ instance()->mEngines.append( new MpEngine() );
+ instance()->mEngines.last()->initialize( TUid::Uid( MpCommon::KMusicPlayerUid + instance()->mEngines.count() ), mode );
+ return instance()->mEngines.last();
+}
+
+/*!
+ Returns an instance to the current shared engine previously created with createEngine().
+ */
+MpEngine *MpEngineFactory::sharedEngine()
+{
+ return instance()->mSharedEngine;
+}
+
+/*!
+ Closes all engines created on this process.
+ */
+void MpEngineFactory::close()
+{
+ if ( instance()->mSharedEngine ) {
+ delete instance()->mSharedEngine;
+ instance()->mSharedEngine = 0;
+
+ }
+ MpEngine *ptr;
+ foreach ( ptr, instance()->mEngines ) {
+ delete ptr;
+ ptr = 0;
+ }
+}
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpequalizerframeworkwrapper.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpequalizerframeworkwrapper.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,112 @@
+/*
+* 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: Wrapper for equalizer framework.
+*
+*/
+
+// System includes
+#include
+#include
+
+// User includes
+#include "mpequalizerframeworkwrapper.h"
+#include "mpequalizerframeworkwrapper_p.h"
+#include "mptrace.h"
+
+/*!
+ \class MpEqualizerFrameworkWrapper
+ \ingroup musicplayer
+ \brief Wrapper for equalizer framework.
+ \since 10.1
+
+ Equalizer wrapper provides Qt style interface to the audio equalizer
+ utilities. Its implementation is hidden using private class data pattern.
+
+ This class defines several APIs that are needed from \a MpPlaybackView
+ and other components in \a mpplaybackviewplugin.
+
+ \sa MpEqualizerFrameworkWrapperPrivate
+*/
+
+/*!
+ \fn MpEqualizerFrameworkWrapper::equalizerReady()
+
+ This signal will be emitted when Audio Eqalizer is initialized. This is
+ when all APIs, like \a applyPreset, are ready to be used.
+
+ \sa MpEqualizerFrameworkWrapperPrivate::MapcInitComplete
+*/
+
+/*!
+ Constructs a new MpEqualizerFrameworkWrapper with \a parent and initializes
+ private imaplementation.
+
+*/
+MpEqualizerFrameworkWrapper::MpEqualizerFrameworkWrapper( QObject *parent )
+ : QObject(parent)
+{
+ TX_ENTRY
+
+ d_ptr = new MpEqualizerFrameworkWrapperPrivate(this);
+ d_ptr->init();
+
+ TX_EXIT
+}
+
+/*!
+ Destructs the class and its private imaplementation.
+
+ */
+MpEqualizerFrameworkWrapper::~MpEqualizerFrameworkWrapper()
+{
+ TX_LOG
+
+ delete d_ptr;
+}
+
+/*!
+ Get the preset name key by giving \a presetIndex. The command then
+ relays to its private implementation.
+
+ */
+int MpEqualizerFrameworkWrapper::getPresetNameKey( int presetIndex )
+{
+ TX_LOG_ARGS( "Preset index: " << presetIndex );
+
+ return d_ptr->getPresetNameKey( presetIndex );
+}
+
+/*!
+ Get the preset index by giving \a presetNameKey. The command then
+ relays to its private implementation.
+
+ */
+int MpEqualizerFrameworkWrapper::getPresetIndex( int presetNameKey )
+{
+ TX_LOG_ARGS( "Preset name key: " << presetNameKey );
+
+ return d_ptr->getPresetIndex( presetNameKey );
+}
+
+/*!
+ Returning the list of availale preset names. The command then relays to its
+ private implementation.
+
+ */
+ QStringList MpEqualizerFrameworkWrapper::presetNames()
+{
+ return d_ptr->presetNames();
+}
+
+ //End of File
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpequalizerframeworkwrapper_p.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpequalizerframeworkwrapper_p.cpp Fri May 14 18:54:37 2010 -0500
@@ -0,0 +1,258 @@
+/*
+* 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: Wrapper for equalizer framework - private implementation.
+*
+*/
+
+// System includes
+#include
+#include
+#include
+#include
+#include
+#include
+
+// User includes
+#include "mpequalizerframeworkwrapper.h"
+#include "mpequalizerframeworkwrapper_p.h"
+#include "mptrace.h"
+
+// CONSTANTS
+_LIT( KMPXNullSoundPath, "\\nullsound.mp3" );
+
+/*!
+ \class MpEqualizerFrameworkWrapperPrivate
+ \ingroup musicplayer
+ \brief Wrapper for equalizer framework - private implementation.
+
+ This is a private implementation of the audio eqalizer wrapper
+ utilties interface.
+
+*/
+
+/*!
+ Constructs a new MpEqualizerFrameworkWrapper with \a parent and initializes its
+ private imaplementation.
+*/
+MpEqualizerFrameworkWrapperPrivate::MpEqualizerFrameworkWrapperPrivate( MpEqualizerFrameworkWrapper *wrapper ):
+ q_ptr( wrapper ),
+ mEqualizerUtility (NULL)
+{
+ TX_LOG
+}
+
+/*!
+ Destructs the class.
+ */
+MpEqualizerFrameworkWrapperPrivate::~MpEqualizerFrameworkWrapperPrivate()
+{
+ TX_ENTRY
+
+ delete mEqualizerUtility;
+
+ if ( mMdaPlayUtility ) {
+ mMdaPlayUtility->Close();
+ }
+ delete mMdaPlayUtility;
+
+ TX_EXIT
+}
+
+/*!
+ Calls the DoInit to initialize Symbian based components.
+
+ \sa DoInitL()
+ */
+void MpEqualizerFrameworkWrapperPrivate::init()
+{
+ TX_ENTRY
+
+ TRAPD(err, DoInitL());
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS("MpEqualizerFrameworkWrapperPrivate::init err = " << err);
+ }
+
+ TX_EXIT
+}
+
+/*!
+ Get the preset name key by giving preset index.
+
+ */
+int MpEqualizerFrameworkWrapperPrivate::getPresetNameKey( int presetIndex )
+{
+ TX_ENTRY_ARGS( "preset index=" << presetIndex );
+
+ int presetKey( KEqualizerPresetNone );
+ if ( mEqualizerUtility ) {
+ TRAPD( err, presetKey = DoGetPresetNameKeyL( presetIndex ) );
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS("DoGetPresetNameKeyL Error = " << err);
+ presetKey = KEqualizerPresetNone;
+ }
+ TX_LOG_ARGS( "Preset key in engine =" << presetKey );
+ }
+ else {
+ TX_LOG_ARGS( "Equalizer not ready." );
+ }
+
+ TX_EXIT_ARGS( "Preset Name Key = " << presetKey );
+
+ return presetKey;
+}
+
+/*!
+ Get the preset index by giving preset name key.
+
+ */
+int MpEqualizerFrameworkWrapperPrivate::getPresetIndex( int presetNameKey )
+{
+ TX_ENTRY_ARGS( "Preset Name Key = " << presetNameKey);
+
+ int presetIndex = KEqualizerPresetNone;
+ if ( mEqualizerUtility && presetNameKey != KEqualizerPresetNone ) {
+ TArray presetArray = mEqualizerUtility->Presets();
+ for ( TInt i = 0; i < presetArray.Count(); i++ ) {
+ TX_LOG_ARGS("presetArray[" << i << "].iPresetNameKey ("
+ << presetArray[i].iPresetNameKey << ") vs presetId (" <( presetNameKey ) ) {
+ presetIndex = i;
+ break;
+ }
+ }
+ }
+
+ TX_EXIT_ARGS( "Preset Index = " << presetIndex );
+
+ return presetIndex;
+}
+
+
+/*!
+ Returning the list of availale preset names.
+
+ \sa CAudioEqualizerUtility
+ */
+QStringList MpEqualizerFrameworkWrapperPrivate::presetNames()
+{
+ TX_ENTRY
+
+ QStringList presetList;
+
+ if ( mEqualizerUtility == NULL ) {
+ TX_LOG_ARGS( "Equalizer not ready." );
+ return presetList;
+ }
+
+ TArray presetArray = mEqualizerUtility->Presets();
+ for (TInt i=0; iClose();
+ delete mMdaPlayUtility;
+ mMdaPlayUtility = NULL;
+ }
+
+ mMdaPlayUtility = ( CMdaAudioPlayerUtility* )User::LeaveIfNull(
+ CMdaAudioPlayerUtility::NewL(
+ *this,
+ EMdaPriorityMin,
+ EMdaPriorityPreferenceNone ));
+
+ TX_LOG_ARGS("Loading null sound");
+ TFileName nullSoundPath( KMPXNullSoundPath );
+ User::LeaveIfError( MPXUser::CompleteWithDllPath( nullSoundPath ) );
+ TX_LOG_ARGS("Loading null sound done!");
+ mMdaPlayUtility->OpenFileL( nullSoundPath );
+
+ TX_EXIT
+}
+
+/*!
+ \internal
+ */
+TInt MpEqualizerFrameworkWrapperPrivate::DoGetPresetNameKeyL( const TInt presetIndex ) const
+{
+ TX_ENTRY_ARGS( "preset index=" << presetIndex );
+
+ TInt presetNameKey = KErrNotFound;
+ TPresetName presetName = mEqualizerUtility->GetPresetL( presetIndex );
+
+ TArray presets = mEqualizerUtility->Presets();
+ for ( TInt index = 0; index < presets.Count(); index++ ) {
+ TPresetName selectedItem = presets[index].iPresetName;
+ TX_LOG_ARGS(" Comparing..." << presets[index].iPresetNameKey );
+ if ( selectedItem == presetName ) {
+ presetNameKey = presets[index].iPresetNameKey;
+ TX_LOG_ARGS(" Comparing mached presetNameKey = " << presetNameKey );
+ break;
+ }
+ }
+
+ TX_EXIT
+
+ return presetNameKey;
+}
+
+/*!
+ \internal
+ */
+void MpEqualizerFrameworkWrapperPrivate::MapcInitComplete(
+ TInt aError,
+ const TTimeIntervalMicroSeconds& /* aDuration */ )
+{
+ TX_ENTRY_ARGS( "aError=" << aError );
+
+ if ( !aError ) {
+ TRAPD(err, mEqualizerUtility = CAudioEqualizerUtility::NewL( *mMdaPlayUtility ) );
+ if ( err == KErrNone ) {
+ emit q_ptr->equalizerReady();
+ }
+ else {
+ TX_ENTRY_ARGS( "CAudioEquqlizerUtility error=" << err );
+ }
+ }
+ else {
+ TX_ENTRY_ARGS( "MapcInitComplete error=" << aError );
+ }
+
+ TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpEqualizerFrameworkWrapperPrivate::MapcPlayComplete(
+ TInt /* aError */ )
+{
+ TX_LOG
+ // Do nothing
+}
+
+//End of File
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpmpxcollectionframeworkwrapper.cpp
--- a/mpengine/src/mpmpxcollectionframeworkwrapper.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/src/mpmpxcollectionframeworkwrapper.cpp Fri May 14 18:54:37 2010 -0500
@@ -43,6 +43,13 @@
*/
/*!
+ \fn void deleteStarted();
+
+ This signal is emitted when song delete operation is started
+
+ */
+
+/*!
\fn void songsDeleted( bool success )
This signal is emitted when song delete operation is completed, it
@@ -65,16 +72,22 @@
*/
-
+/*!
+ \fn void containerContentsChanged()
+
+ This signal is emitted when items are removed or inserted on the current
+ container.
+
+ */
/*!
Constructs the utility wrapper.
*/
-MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( MpCommon::MpViewMode viewMode, TUid hostUid, QObject *parent )
+MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( TUid hostUid, QObject *parent )
: QObject( parent )
{
d_ptr = new MpMpxCollectionFrameworkWrapperPrivate( this );
- d_ptr->init( viewMode, hostUid );
+ d_ptr->init( hostUid );
}
/*!
@@ -207,6 +220,22 @@
}
/*!
+ Finds all songs beloging to the album specified by the \a index.
+ */
+void MpMpxCollectionFrameworkWrapper::findAlbumSongs( int index )
+{
+ d_ptr->findAlbumSongs(index);
+}
+
+/*!
+ Plays album with \a albumIndex starting with the songs with \a songIndex.
+*/
+void MpMpxCollectionFrameworkWrapper::playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData )
+{
+ d_ptr->playAlbumSongs( albumIndex, songIndex, collectionData );
+}
+
+/*!
Returns pointer to MpMpxCollectionData, which is the collection data.
*/
MpMpxCollectionData *MpMpxCollectionFrameworkWrapper::collectionData()
@@ -234,4 +263,28 @@
d_ptr->reorderPlaylist( playlistId, songId, originalOrdinal, newOrdinal );
}
+/*!
+ Called to set the repeat feature to \a enable
+ */
+void MpMpxCollectionFrameworkWrapper::setRepeatFeatureEnabled( bool enable )
+{
+ d_ptr->setRepeatFeatureEnabled( enable );
+}
+/*!
+ Called to set the shuffle feature to \a enable
+ */
+void MpMpxCollectionFrameworkWrapper::setShuffleFeatureEnabled( bool enable )
+{
+ d_ptr->setShuffleFeatureEnabled( enable );
+}
+
+/*!
+ Cancels CollectionUiHelper request.
+ */
+void MpMpxCollectionFrameworkWrapper::cancelRequest()
+{
+ d_ptr->cancel();
+}
+
+//EOF
diff -r 2c5162224003 -r fdb31ab341af mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp
--- a/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp Fri Apr 30 19:33:32 2010 -0500
+++ b/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp Fri May 14 18:54:37 2010 -0500
@@ -78,7 +78,10 @@
iCollectionData( 0 ),
iIsolatedCollectionData( 0 ),
iFirstIncrementalOpen( EFalse ),
- iUserPlaylists( 0 )
+ iUserPlaylists( 0 ),
+ iRepeatFeature( ETrue ),
+ iShuffleFeature( ETrue ),
+ iReopen( EFalse )
{
TX_LOG
}
@@ -115,10 +118,9 @@
/*!
\internal
*/
-void MpMpxCollectionFrameworkWrapperPrivate::init( MpCommon::MpViewMode viewMode, TUid hostUid )
+void MpMpxCollectionFrameworkWrapperPrivate::init( TUid hostUid )
{
- iViewMode = viewMode;
mHostUid = hostUid;
TRAPD( err, DoInitL() );
if ( err != KErrNone ) {
@@ -154,7 +156,10 @@
void MpMpxCollectionFrameworkWrapperPrivate::reopenCollection()
{
TRAPD( err, DoReopenCollectionL() );
- if ( err != KErrNone ) {
+ if ( err == KErrNone ) {
+ iReopen = ETrue;
+ }
+ else {
TX_LOG_ARGS( "Error: " << err << "; should never get here." );
}
}
@@ -218,8 +223,20 @@
*/
void MpMpxCollectionFrameworkWrapperPrivate::deleteSongs( QList &selection )
{
- TRAPD( err, DoDeleteSongsL( selection ) );
- if ( err != KErrNone ) {
+ TCollectionContext context = iCollectionData->context();
+ int err;
+ if ( context == ECollectionContextArtistAlbumsTBone
+ || context == ECollectionContextAlbumsTBone ) {
+ TRAP( err, DoDeleteAlbumSongsL( selection ) );
+ }
+ else {
+ TRAP( err, DoDeleteSongsL( selection ) );
+ }
+ if ( err == KErrNone ) {
+ // send signal that deleting has started.
+ emit q_ptr->deleteStarted(iCollectionData->context(), selection.count());
+ }
+ else{
TX_LOG_ARGS( "Error: " << err << "; should never get here." );
}
}
@@ -261,7 +278,15 @@
*/
void MpMpxCollectionFrameworkWrapperPrivate::previewItem( int index )
{
- TRAPD( err, DoPreviewItemL( index ) );
+ TCollectionContext context = iCollectionData->context();
+ int err;
+ if ( context == ECollectionContextArtistAlbumsTBone
+ || context == ECollectionContextAlbumsTBone ) {
+ TRAP( err, DoPreviewAlbumSongL( index ) );
+ }
+ else {
+ TRAP( err, DoPreviewSongL( index ) );
+ }
if ( err != KErrNone ) {
TX_LOG_ARGS( "Error: " << err << "; should never get here." );
}
@@ -303,6 +328,36 @@
/*!
\internal
*/
+void MpMpxCollectionFrameworkWrapperPrivate::cancel()
+{
+ iCollectionUiHelper->Cancel();
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::findAlbumSongs( int index )
+{
+ TRAPD( err, DoFindAlbumSongsL( index ) );
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS( "Error: " << err << "; should never get here." );
+ }
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData )
+{
+ TRAPD( err, DoPlayAlbumSongsL( albumIndex, songIndex, collectionData ? collectionData : iCollectionData ) );
+ if ( err != KErrNone ) {
+ TX_LOG_ARGS( "Error: " << err << "; should never get here." );
+ }
+}
+
+/*!
+ \internal
+ */
MpMpxCollectionData *MpMpxCollectionFrameworkWrapperPrivate::collectionData()
{
return iCollectionData;
@@ -310,6 +365,7 @@
/*!
\internal
+ Result of open or re-open operation to the Collection Framework.
*/
void MpMpxCollectionFrameworkWrapperPrivate::HandleOpenL(
const CMPXMedia& aEntries,
@@ -322,8 +378,9 @@
TX_ENTRY_ARGS( "aError=" << aError << "aComplete=" << aComplete );
if ( aError == KErrNone ) {
if ( iFirstIncrementalOpen ) {
- iCollectionData->setMpxMedia( aEntries );
+ iCollectionData->setMpxMedia( aEntries, iReopen );
iFirstIncrementalOpen = EFalse;
+ iReopen = EFalse;
}
}
else {
@@ -342,15 +399,8 @@
TX_ENTRY_ARGS( "aError=" << aError );
if ( aError == KErrNone ) {
- if ( !iPlaybackUtility ) {
-
- iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
-
- if ( iViewMode == MpCommon::DefaultView ) {
- iPlaybackUtility->SetL( EPbPropertyRandomMode, MpSettingsManager::shuffle() ? ETrue : EFalse );
- iPlaybackUtility->SetL( EPbPropertyRepeatMode, MpSettingsManager::repeat() ? EPbRepeatAll : EPbRepeatOff );
- }
- }
+ //TODO: all calls to playback utility should be done via the engine and trough the playback FW wrapper.
+ createPlaybackUtilityL();
iPlaybackUtility->InitL( aPlaylist, ETrue );
emit q_ptr->collectionPlaylistOpened();
}
@@ -439,20 +489,25 @@
/*!
\internal
*/
+void MpMpxCollectionFrameworkWrapperPrivate::HandleFindAllL( const CMPXMedia& aResults, TBool aComplete, TInt aError )
+{
+ Q_UNUSED( aComplete );
+ TX_ENTRY_ARGS( "aError=" << aError );
+
+ if ( aError == KErrNone ) {
+ iCollectionData->setAlbumContent( aResults );
+ }
+}
+
+/*!
+ \internal
+ */
void MpMpxCollectionFrameworkWrapperPrivate::DoInitL()
{
TX_ENTRY
- if ( iViewMode == MpCommon::FetchView ) {
- iCollectionUtility = MMPXCollectionUtility::NewL( this, mHostUid );
- iCollectionUiHelper = CMPXCollectionHelperFactory:: NewCollectionUiHelperL( mHostUid );
- iIncrementalOpenUtil = CMPXCollectionOpenUtility::NewL( this, mHostUid );
- }
- else {
- iCollectionUtility = MMPXCollectionUtility::NewL( this, KMcModeDefault );
- iCollectionUiHelper = CMPXCollectionHelperFactory:: NewCollectionUiHelperL();
- iIncrementalOpenUtil = CMPXCollectionOpenUtility::NewL( this );
- }
-
+ iCollectionUtility = MMPXCollectionUtility::NewL( this, mHostUid );
+ iCollectionUiHelper = CMPXCollectionHelperFactory:: NewCollectionUiHelperL( mHostUid );
+ iIncrementalOpenUtil = CMPXCollectionOpenUtility::NewL( this, mHostUid );
iCollectionData = new MpMpxCollectionData();
TX_EXIT
}
@@ -478,7 +533,7 @@
{
CMPXCollectionPath* cpath = iCollectionUiHelper->MusicMenuPathL();
CleanupStack::PushL( cpath );
- cpath->AppendL( 2 );
+ cpath->AppendL( BrowseArtist );
iCollectionUtility->Collection().OpenL( *cpath );
CleanupStack::PopAndDestroy( cpath );
break;
@@ -487,7 +542,7 @@
{
CMPXCollectionPath* cpath = iCollectionUiHelper->MusicMenuPathL();
CleanupStack::PushL( cpath );
- cpath->AppendL( 3 );
+ cpath->AppendL( BrowseAlbum );
iCollectionUtility->Collection().OpenL( *cpath );
CleanupStack::PopAndDestroy( cpath );
break;
@@ -500,12 +555,11 @@
CleanupStack::PopAndDestroy( cpath );
break;
}
- case ECollectionContextGenres:
+ case ECollectionContextAlbumsMediaWall:
{
CMPXCollectionPath* cpath = iCollectionUiHelper->MusicMenuPathL();
CleanupStack::PushL( cpath );
- // Temp
- cpath->AppendL( 5 );
+ cpath->AppendL( BrowseAlbumMediaWall );
iCollectionUtility->Collection().OpenL( *cpath );
CleanupStack::PopAndDestroy( cpath );
break;
@@ -710,7 +764,7 @@
CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() );
CleanupStack::PushL( path );
-
+
if (count > 1) {
for ( TInt i = 0; i < count; i++ ){
path->SelectL( selection.at( i ) );
@@ -719,6 +773,7 @@
else {
path->Set( selection.at(0) );
}
+
iCollectionUiHelper->DeleteL( *path, this );
CleanupStack::PopAndDestroy( path );
TX_EXIT
@@ -727,6 +782,39 @@
/*!
\internal
*/
+void MpMpxCollectionFrameworkWrapperPrivate::DoDeleteAlbumSongsL( QList &selection )
+{
+ int count = selection.count();
+ TX_ENTRY_ARGS( "selection count=" << count );
+
+ CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() );
+ CleanupStack::PushL( path );
+ MPX_DEBUG_PATH( *path );
+
+ CMPXMediaArray *mediaArray;
+ const CMPXMedia& container = iCollectionData->containerMedia();
+ mediaArray = const_cast( container.Value( KMPXMediaArrayContents ) );
+ int currentAlbumIndex = iCollectionData->currentAlbumIndex();
+ CMPXMedia* album( mediaArray->AtL( currentAlbumIndex ) );
+ if ( album->IsSupported(KMPXMediaArrayContents) ) {
+ const CMPXMediaArray* songs = album->Value(KMPXMediaArrayContents);
+ User::LeaveIfNull(const_cast(songs));
+ int index = selection.at(0);
+ CMPXMedia* song = songs->AtL(index);
+
+ TMPXItemId id( song->ValueTObjectL( KMPXMediaGeneralId ) );
+ path->AppendL( id ); // Append the song ID to be deleted
+ path->Set( 0 ); // Select 1st song
+
+ iCollectionUiHelper->DeleteL( *path, this );
+ }
+ CleanupStack::PopAndDestroy( path );
+ TX_EXIT
+}
+
+/*!
+ \internal
+ */
void MpMpxCollectionFrameworkWrapperPrivate::DoRenamePlaylistL( QString &newName, int index )
{
TX_ENTRY
@@ -784,9 +872,40 @@
/*!
\internal
*/
-void MpMpxCollectionFrameworkWrapperPrivate::DoPreviewItemL( int index )
+void MpMpxCollectionFrameworkWrapperPrivate::DoPreviewSongL( int index )
{
TX_ENTRY
+
+ // Get the current path
+ CMPXCollectionPath* cpath = iCollectionUtility->Collection().PathL();
+ CleanupStack::PushL( cpath );
+ MPX_DEBUG_PATH( *cpath );
+ cpath->Back();
+
+ TMPXItemId id( iCollectionData->itemId(index) );
+ cpath->AppendL( id ); // Top level items of songs
+ cpath->Set( 0 ); // Select 1st song
+
+ CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
+ CleanupStack::PushL( playList );
+ playList->SetToFirst();
+ //TODO: all calls to playback utility should be done via the engine and trough the playback FW wrapper.
+ createPlaybackUtilityL();
+ iPlaybackUtility->InitL( *playList, ETrue );
+ emit q_ptr->collectionPlaylistOpened();
+
+ CleanupStack::PopAndDestroy( playList );
+ CleanupStack::PopAndDestroy( cpath );
+ TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::DoPreviewAlbumSongL( int index )
+{
+ TX_ENTRY
+ //TODO: all calls to playback utility should be done via the engine and trough the playback FW wrapper.
if ( !iPlaybackUtility ) {
iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
}
@@ -795,25 +914,30 @@
CMPXCollectionPath* cpath = iCollectionUtility->Collection().PathL();
CleanupStack::PushL( cpath );
MPX_DEBUG_PATH( *cpath );
- cpath->Back();
CMPXMediaArray *mediaArray;
const CMPXMedia& container = iCollectionData->containerMedia();
mediaArray = const_cast( container.Value( KMPXMediaArrayContents ) );
- CMPXMedia* currentMedia( mediaArray->AtL( index ) );
- TMPXItemId id( currentMedia->ValueTObjectL( KMPXMediaGeneralId ) );
-
- cpath->AppendL( id ); // Top level items of songs
- cpath->Set( 0 ); // Select 1st song
+ int currentAlbumIndex = iCollectionData->currentAlbumIndex();
+ CMPXMedia* album( mediaArray->AtL( currentAlbumIndex ) );
+ if ( album->IsSupported(KMPXMediaArrayContents) ) {
+ const CMPXMediaArray* songs = album->Value(KMPXMediaArrayContents);
+ User::LeaveIfNull(const_cast(songs));
+ CMPXMedia* song = songs->AtL(index);
- CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
- CleanupStack::PushL( playList );
- playList->SetToFirst();
+ TMPXItemId id( song->ValueTObjectL( KMPXMediaGeneralId ) );
+ cpath->AppendL( id ); // Top level items of songs
+ cpath->Set( 0 ); // Select 1st song
- iPlaybackUtility->InitL( *playList, ETrue );
- emit q_ptr->collectionPlaylistOpened();
+ CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
+ CleanupStack::PushL( playList );
+ playList->SetToFirst();
+ //TODO: all calls to playback utility should be done via the engine and trough the playback FW wrapper.
+ iPlaybackUtility->InitL( *playList, ETrue );
+ emit q_ptr->collectionPlaylistOpened();
- CleanupStack::PopAndDestroy( playList );
+ CleanupStack::PopAndDestroy( playList );
+ }
CleanupStack::PopAndDestroy( cpath );
TX_EXIT
}
@@ -840,9 +964,126 @@
*/
void MpMpxCollectionFrameworkWrapperPrivate::DoReorderPlaylistL( int playlistId, int songId, int originalOrdinal, int newOrdinal )
{
- iCollectionUiHelper->ReorderPlaylistL( playlistId, songId, originalOrdinal, newOrdinal, this );
+ iCollectionUiHelper->ReorderPlaylistL( playlistId, songId, originalOrdinal, newOrdinal, this );
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::DoFindAlbumSongsL( int index )
+{
+ const CMPXMedia& container = iCollectionData->containerMedia();
+ const CMPXMediaArray* mediaArray = container.Value( KMPXMediaArrayContents );
+ CMPXMedia* album( mediaArray->AtL( index ) );
+
+ // Fetch the songs for the selected album
+ TMPXItemId albumId = album->ValueTObjectL(KMPXMediaGeneralId);
+ CMPXMedia* findCriteria = CMPXMedia::NewL();
+ CleanupStack::PushL( findCriteria );
+ findCriteria->SetTObjectValueL( KMPXMediaGeneralType, EMPXGroup );
+ findCriteria->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong );
+ findCriteria->SetTObjectValueL( KMPXMediaGeneralId, albumId );
+ RArray attrs;
+ CleanupClosePushL( attrs );
+ attrs.Append( TMPXAttribute( KMPXMediaIdGeneral,
+ EMPXMediaGeneralTitle |
+ EMPXMediaGeneralUri |
+ EMPXMediaGeneralId |
+ EMPXMediaGeneralType |
+ EMPXMediaGeneralCategory |
+ EMPXMediaGeneralFlags ) );
+ attrs.Append( KMPXMediaMusicAlbumTrack );
+
+ iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array(), *this );
+ CleanupStack::PopAndDestroy( &attrs );
+ CleanupStack::PopAndDestroy( findCriteria );
}
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::DoPlayAlbumSongsL( int albumIndex, int songIndex, MpMpxCollectionData* collectionData )
+{
+ TX_ENTRY
+
+ RArray ids;
+ CleanupClosePushL(ids);
+
+ CMPXCollectionPath* cpath;
+
+ //Following check is for a use case for media wall, where it is required
+ //to play songs that are browsed by an isolated collection.
+ if ( collectionData->context() == ECollectionContextAlbumsMediaWall ) {
+ //Get the Media Wall path.
+ cpath = iCollectionUiHelper->MusicMenuPathL();
+ CleanupStack::PushL( cpath );
+ //TODO: change to BrowseAlbumMediaWall befor when merging with olveras changes.
+ cpath->AppendL( BrowseAlbum );
+ const TMPXItemId albumId = collectionData->itemId( albumIndex );
+ //Append the selected album.
+ RArray items;
+ CleanupClosePushL(items);
+ items.AppendL(albumId);
+ cpath->AppendL(items.Array());
+ CleanupStack::PopAndDestroy( &items );
+ cpath->Set( 0 ); // Set the album.
+
+ }
+ else {
+ // Get the current path
+ cpath = iCollectionUtility->Collection().PathL();
+ CleanupStack::PushL( cpath );
+ cpath->Set(albumIndex); // Set the selected album
+ }
+ MPX_DEBUG_PATH( *cpath );
+
+ CMPXMediaArray *mediaArray;
+ const CMPXMedia& container = collectionData->containerMedia();
+ mediaArray = const_cast( container.Value( KMPXMediaArrayContents ) );
+ CMPXMedia* album( mediaArray->AtL( albumIndex ) );
+ const CMPXMediaArray* songs = album->Value(KMPXMediaArrayContents);
+ User::LeaveIfNull(const_cast(songs));
+
+ TInt count = songs->Count();
+ for ( TInt i = 0; i < count; ++i ) {
+ CMPXMedia* song = songs->AtL(i);
+ const TMPXItemId id = song->ValueTObjectL(KMPXMediaGeneralId);
+ ids.AppendL(id);
+ }
+
+ cpath->AppendL(ids.Array()); // Top level items of songs
+ cpath->Set(songIndex); // Set the selected song
+ MPX_DEBUG_PATH(*cpath);
+
+ CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
+ CleanupStack::PushL( playList );
+
+ //TODO: all calls to playback utility should be done via the engine and trough the playback FW wrapper.
+ createPlaybackUtilityL();
+ iPlaybackUtility->InitL( *playList, ETrue );
+ emit q_ptr->collectionPlaylistOpened();
+
+ CleanupStack::PopAndDestroy( playList );
+ CleanupStack::PopAndDestroy( cpath );
+ CleanupStack::PopAndDestroy( &ids );
+ TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::setRepeatFeatureEnabled( bool enable )
+{
+ iRepeatFeature = enable;
+}
+
+/*!
+ \internal
+ */
+void MpMpxCollectionFrameworkWrapperPrivate::setShuffleFeatureEnabled( bool enable )
+{
+ iShuffleFeature = enable;
+}
/*!
\internal
@@ -872,6 +1113,9 @@
iCollectionUtility->Collection().OpenL();
}
}
+ else if( id == KMPXMessageIdItemChanged ) {
+ emit q_ptr->containerContentsChanged();
+ }
TX_EXIT
}
@@ -887,9 +1131,27 @@
int count = selection.count();
TX_ENTRY_ARGS( "selection count=" << count );
- const CMPXMedia& container = collectionData->containerMedia();
- const CMPXMediaArray* containerArray = container.Value( KMPXMediaArrayContents );
- User::LeaveIfNull( const_cast