Revision: 201035
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 17 Sep 2010 08:28:52 +0300
changeset 58 ed94e1e8390e
parent 54 c5b304f4d89b
child 61 3cd404d31176
Revision: 201035 Kit: 201037
app/app.pro
app/inc/mpmainwindow.h
app/rom/bld.inf
app/src/main.cpp
app/src/mpmainwindow.cpp
app/tsrc/tsrc.pro
app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpengine.h
app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpenginefactory.h
app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpengine.cpp
app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpenginefactory.cpp
inc/mpapplicationmonitor.h
inc/mpcommondefs.h
inc/mpengine.h
inc/mpenginefactory.h
inc/mpsongscanner.h
mpdata/rom/bld.inf
mpdata/src/mpcollectiontbonelistdatamodel.cpp
mpdata/tsrc/tsrc.pro
mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h
mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp
mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h
mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpplaybackdata.h
mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp
mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpplaybackdata.cpp
mpdata/tsrc/unittest_mpcollectiondatamodel/unittest_mpcollectiondatamodel.pro
mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_mpcollectiontbonelistdatamodel.h
mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_mpcollectiontbonelistdatamodel.cpp
mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/inc/mpmpxcollectiondata.h
mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/src/mpmpxcollectiondata.cpp
mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_helper.h
mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h
mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_helper.cpp
mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp
mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro
mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h
mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp
mpengine/bwins/mpengineu.def
mpengine/eabi/mpengineu.def
mpengine/inc/mpmpxcollectionframeworkwrapper.h
mpengine/inc/mpmpxcollectionframeworkwrapper_p.h
mpengine/inc/mpmpxharvesterframeworkwrapper.h
mpengine/inc/mpmpxharvesterframeworkwrapper_p.h
mpengine/inc/mpmpxplaybackframeworkwrapper.h
mpengine/inc/mpmpxplaybackframeworkwrapper_p.h
mpengine/mpengine.pro
mpengine/rom/bld.inf
mpengine/src/mpengine.cpp
mpengine/src/mpenginefactory.cpp
mpengine/src/mpmpxcollectionframeworkwrapper.cpp
mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp
mpengine/src/mpmpxharvesterframeworkwrapper.cpp
mpengine/src/mpmpxharvesterframeworkwrapper_p.cpp
mpengine/src/mpmpxisolatedcollectionhelper.cpp
mpengine/src/mpmpxplaybackframeworkwrapper.cpp
mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
mpengine/src/mpsongscanner.cpp
mpengine/tsrc/unittest_mpengine/inc/unittest_mpengine.h
mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxcollectionframeworkwrapper.h
mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxharvesterframeworkwrapper.h
mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxplaybackframeworkwrapper.h
mpengine/tsrc/unittest_mpengine/stub/src/mpmpxcollectionframeworkwrapper.cpp
mpengine/tsrc/unittest_mpengine/stub/src/mpmpxharvesterframeworkwrapper.cpp
mpengine/tsrc/unittest_mpengine/stub/src/mpmpxplaybackframeworkwrapper.cpp
mpengine/tsrc/unittest_mpenginefactory/stub/inc/mpengine.h
mpengine/tsrc/unittest_mpenginefactory/stub/src/mpengine.cpp
mpengine/tsrc/unittest_mpmpxcollectionframeworkwrapper/src/unittest_mpmpxcollectionframeworkwrapper.cpp
mpengine/tsrc/unittest_mpmpxisolatedcollectionhelper/src/unittest_mpmpxisolatedcollectionhelper.cpp
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/inc/unittest_mpmpxplaybackframeworkwrapper.h
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/src/unittest_mpmpxplaybackframeworkwrapper.cpp
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpplaybackdata.h
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpxplaybackutility.h
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpplaybackdata.cpp
mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpxplaybackutility.cpp
mpserviceplugins/audioeffects/group/bld.inf
mpserviceplugins/localaudio/group/bld.inf
mpserviceplugins/m3uplaylistplugin/group/bld.inf
mpserviceplugins/mpxinmemoryplugin/group/bld.inf
mpserviceplugins/mpxsqlitedbcommon/group/bld.inf
mpserviceplugins/mpxsqlitedbhgplugin/group/bld.inf
mpserviceplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp
mpserviceplugins/mpxsqlitepodcastdbplugin/group/bld.inf
mpviewplugins/mpcollectionviewplugin/inc/mpcollectioncontainer.h
mpviewplugins/mpcollectionviewplugin/inc/mpcollectionpopuphandler.h
mpviewplugins/mpcollectionviewplugin/inc/mpcollectionview.h
mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.css
mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.hgmediawall.widgetml
mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall_color.css
mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainer.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontaineralbums.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerartists.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerfactory.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerplaylists.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectionlistcontainer.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectionpopuphandler.cpp
mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/tsrc.pro
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/src/unittest_mpcollectioncontainers.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiondatamodel.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiontbonelistdatamodel.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectionview.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpengine.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpenginefactory.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpnowplayingwidget.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpplaybackdata.h
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiondatamodel.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiontbonelistdatamodel.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectionview.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpengine.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpenginefactory.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpplaybackdata.cpp
mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/unittest_mpcollectioncontainers.pro
mpviewplugins/mpdetailsviewplugin/tsrc/UT_ALL_mpdetailsviewplugin.pkg
mpviewplugins/mpdetailsviewplugin/tsrc/sis/UT_ALL_mpdetailsviewplugin.pkg
mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/inc/mpenginefactory.h
mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/src/mpenginefactory.cpp
mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpquerymanager/src/unittest_mpquerymanager.cpp
mpviewplugins/mpmediawallviewplugin/inc/mpmediawallview.h
mpviewplugins/mpmediawallviewplugin/inc/mpreflectioneffect.h
mpviewplugins/mpmediawallviewplugin/inc/mptracklistwidget.h
mpviewplugins/mpmediawallviewplugin/mpmediawallviewplugin.pro
mpviewplugins/mpmediawallviewplugin/resources/mediawall.docml
mpviewplugins/mpmediawallviewplugin/resources/mpcustomlistitem.hblistviewitem.widgetml
mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall.css
mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall_color.css
mpviewplugins/mpmediawallviewplugin/src/mpmediawalldocumentloader.cpp
mpviewplugins/mpmediawallviewplugin/src/mpmediawallview.cpp
mpviewplugins/mpmediawallviewplugin/src/mpreflectioneffect.cpp
mpviewplugins/mpmediawallviewplugin/src/mptracklistwidget.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/tsrc.pro
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/inc/unittest_mpmediawalldocumentloader.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/src/unittest_mpmediawalldocumentloader.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/inc/unittest_mpmediawallview.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/src/unittest_mpmediawallview.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/hbmessagebox.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpcollectiondatamodel.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpengine.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpenginefactory.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpmpxcollectiondata.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpplaybackdata.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpreflectioneffect.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpengine.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpenginefactory.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpmpxcollectiondata.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpplaybackdata.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpreflectioneffect.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mptracklistwidget.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/unittest_mpmediawallview.pro
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/inc/unittest_mpreflectioneffect.h
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/src/unittest_mpreflectioneffect.cpp
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/unittest_mpreflectioneffect.pro
mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mptracklistwidget/inc/unittest_mptracklistwidget.h
mpviewplugins/mpplaybackviewplugin/inc/mpplaybackview.h
mpviewplugins/mpplaybackviewplugin/src/mpplaybackview.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/tsrc.pro
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/inc/mpenginefactory.h
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/src/mpenginefactory.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/inc/unittest_mpplaybackview.h
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/src/unittest_mpplaybackview.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpengine.h
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpenginefactory.h
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpengine.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpenginefactory.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpequalizerwidget.cpp
mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/unittest_mpplaybackview.pro
mpviewplugins/mpsettingsviewplugin/tsrc/tsrc.pro
mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/inc/mpenginefactory.h
mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/src/mpenginefactory.cpp
mpviewplugins/rom/bld.inf
musicservices/bwins/musicservicesu.def
musicservices/eabi/musicservicesu.def
musicservices/inc/musicservices.h
musicservices/rom/bld.inf
musicservices/src/getmusicservice.cpp
musicservices/src/musicservices.cpp
musicservices/src/playmusicservice.cpp
musicservices/tsrc/unittest_musicservices/src/unittest_musicservices.cpp
musicwidgetplugin/inc/musicwidget.h
musicwidgetplugin/rom/bld.inf
musicwidgetplugin/src/musicwidget.cpp
package_definition.xml
package_map.xml
qtmusicplayer.pro
sis/musicplayer_stub.pkg
sis/musicplayer_udeb.pkg
sis/musicplayer_urel.pkg
utilities/mpapplicationmonitor/bwins/mpapplicationmonitoru.def
utilities/mpapplicationmonitor/eabi/mpapplicationmonitoru.def
utilities/mpapplicationmonitor/inc/mpapplicationmonitor_p.h
utilities/mpapplicationmonitor/mpapplicationmonitor.pro
utilities/mpapplicationmonitor/rom/mpapplicationmonitor.iby
utilities/mpapplicationmonitor/rom/rom.pri
utilities/mpapplicationmonitor/src/mpapplicationmonitor.cpp
utilities/mpapplicationmonitor/src/mpapplicationmonitor_p.cpp
utilities/mpapplicationmonitor/tsrc/tsrc.pro
utilities/mpsettingsmanager/conf/musicplayer.confml
utilities/rom/bld.inf
utilities/tsrc/tsrc.pro
utilities/utilities.pro
--- a/app/app.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/app.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -58,7 +58,8 @@
         -lmusicservices \
         -lmpsettingsmanager \
         -lmpengine \
-        -lmpmediacontroller
+        -lmpmediacontroller \
+        -lafservice
 
 # Input
 HEADERS += inc/mpmainwindow.h \
--- a/app/inc/mpmainwindow.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/inc/mpmainwindow.h	Fri Sep 17 08:28:52 2010 +0300
@@ -22,6 +22,7 @@
 // System includes
 #include <hbmainwindow.h>
 #include <mpxviewframeworkqt.h>
+#include <afactivities_global.h>
 
 #include "mpcommondefs.h"
 
@@ -31,6 +32,8 @@
 class MpGlobalPopupHandler;
 class HbActivityManager;
 class MpMediaController;
+class AfActivityStorage;
+class AfActivation;
 
 // Class declaration
 class MpMainWindow: public MpxViewFramework
@@ -56,7 +59,7 @@
     MpMainWindow();
     ~MpMainWindow();
 
-    void initialize( ActivityMode mode );
+    void initialize();
 
 signals:
     // For automation testability
@@ -67,8 +70,8 @@
     void handleLibraryUpdated();
 
     void switchView( Qt::Orientation orientation );
-    void initializeServiceView( TUid hostUid );
-    void handleActivity();
+    void initializeServiceView( quint32 clientSecureId );
+    void loadActivityData( Af::ActivationReason reason, const QString &name, QVariantHash parameter );
     void saveActivity();
     void handleRestorePathFailed();
 
@@ -92,10 +95,10 @@
     ViewType              mPreviousVerticalViewType;
     MusicServices         *mMusicServices;         // Own
     MpGlobalPopupHandler  *mPopupHandler;          // Own
-    bool                   mUserExit;
-    HbActivityManager     *mActivityManager;       // Not Own
+    bool                  mUserExit;
     MpMediaController     *mMpMediaController;     // Own
-
+    AfActivityStorage     *mActivityStorage;       // Own
 };
 
 #endif // MPMAINVIEW_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+musicplayer.iby CORE_APP_LAYER_IBY_EXPORT_PATH(musicplayer.iby)
+musicplayer_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(musicplayer_resources.iby)
+
--- a/app/src/main.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/src/main.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -54,21 +54,10 @@
     TX_STATIC_ENTRY
 
     // Initialization
-    HbApplication app(argc, argv, Hb::NoSplash);
-    if ( !XQServiceUtil::isService() ) {
-        HbSplashScreen::start( );
-    }
-    QVariantHash params = app.activateParams();
+    HbApplication app( argc, argv, XQServiceUtil::isService(argc, argv) ? Hb::NoSplash : Hb::DefaultApplicationFlags );
+
     HbTranslator translator;
     translator.loadCommon();
-    MpMainWindow::ActivityMode mode;
-    
-    if ( !params.value( "activityname" ).toString().compare( "MusicNowPlayingView" ) ) { 
-        mode = MpMainWindow::MusicNowPlayingView;
-    }
-    else {
-        mode = MpMainWindow::MusicMainView;
-    }
 
     // Main window widget.
     // Includes decorators such as signal strength and battery life indicator.
@@ -77,7 +66,7 @@
     mainWindow.viewport()->grabGesture(Qt::PanGesture);
     mainWindow.viewport()->grabGesture(Qt::TapGesture);
     mainWindow.viewport()->grabGesture(Qt::TapAndHoldGesture);
-    mainWindow.initialize( mode );
+    mainWindow.initialize();
     mainWindow.show();
 
     // Enter event loop
--- a/app/src/mpmainwindow.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/src/mpmainwindow.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -17,13 +17,14 @@
 
 
 #include <hbapplication.h>
-#include <hbactivitymanager.h>
 #include <hbview.h>
 #include <mpxviewpluginqt.h>
 #include <xqpluginloader.h>
 #include <xqplugininfo.h>
 #include <xqserviceutil.h>
 #include <xqsharablefile.h>
+#include <afactivitystorage.h>
+#include <afactivation.h>
 
 #include "mpmainwindow.h"
 #include "mpviewbase.h"
@@ -62,8 +63,8 @@
       mMusicServices(0),
       mPopupHandler(0),
       mUserExit( false ),
-      mActivityManager(0),
-      mMpMediaController(0)
+      mMpMediaController(0),
+      mActivityStorage(0)
 {
     TX_LOG
 }
@@ -100,6 +101,7 @@
     }
 
     delete mMpMediaController;
+    delete mActivityStorage;
 
     MpEngineFactory::close();
 
@@ -111,7 +113,7 @@
 /*!
 Initialize and activate the collection view
  */
-void MpMainWindow::initialize( ActivityMode mode )
+void MpMainWindow::initialize()
 {
     TX_ENTRY
 
@@ -128,21 +130,25 @@
         // Music Service mode
         // Set the Collection View and Playback View to fetcher mode
         mMusicServices = new MusicServices();
-        int err = connect(mMusicServices, SIGNAL(serviceActive( TUid )), this, SLOT(initializeServiceView( TUid )));
+        int err = connect(mMusicServices, SIGNAL(serviceActive( quint32 )), this, SLOT(initializeServiceView( quint32 )));
         TX_LOG_ARGS("connection error: " << err);
         XQServiceUtil::toBackground( false );
     }
+    AfActivation *activation = new AfActivation( this );
+    
 
+    mActivityStorage = new AfActivityStorage;
     if ( !mMusicServices ) {
-        HbApplication* app = qobject_cast<HbApplication*>(qApp);
-        QVariantHash params = app->activateParams();
+        QVariantHash params = activation->parameters();
+        ActivityMode mode = !params.value( "activityname" ).toString().compare( MUSIC_NOW_PLAYING_VIEW ) ? MpMainWindow::MusicNowPlayingView : MpMainWindow::MusicMainView; 
+        
         MpEngineFactory::createSharedEngine();
         mPopupHandler = new MpGlobalPopupHandler( this );
-        if( app->activateReason() == Hb::ActivationReasonActivity ) {
+        if( activation->reason() == Af::ActivationReasonActivity ) {
             // Restoring an activity, not a fresh startup or a service
             // Activities from Task switcher only have one parameter
             if( params.count() == 1 ) {
-                 loadActivity( app->activateData() );
+                 loadActivity( mActivityStorage->activityData( activation->name() ) );
             }
         }
         if ( orientation() == Qt::Vertical ) {
@@ -183,12 +189,12 @@
         connect( MpEngineFactory::sharedEngine(), SIGNAL( libraryUpdated() ), SLOT( handleLibraryUpdated() ) );
         MpEngineFactory::sharedEngine()->checkForSystemEvents();
         //Register to application manager to wait for activities and clear previous activities on the task switcher
-        mActivityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
-        mActivityManager->waitActivity();
-        mActivityManager->removeActivity( MUSIC_MAIN_VIEW );
-        mActivityManager->removeActivity( MUSIC_NOW_PLAYING_VIEW );
-        connect( app, SIGNAL( activate() ), this , SLOT( handleActivity() ) );
-        connect( app, SIGNAL( aboutToQuit() ), this, SLOT( saveActivity() ) );
+        qRegisterMetaType<Af::ActivationReason>( "Af::ActivationReason" );
+        connect( activation, SIGNAL( activated( Af::ActivationReason, QString, QVariantHash ) ), this, SLOT( loadActivityData( Af::ActivationReason, QString, QVariantHash ) ) );
+        connect( MpEngineFactory::sharedEngine(), SIGNAL( restorePathFailed() ), this, SLOT( handleRestorePathFailed() ) );
+        mActivityStorage->removeActivity( MUSIC_MAIN_VIEW );
+        mActivityStorage->removeActivity( MUSIC_NOW_PLAYING_VIEW );
+        connect( qApp, SIGNAL( aboutToQuit() ), this, SLOT( saveActivity() ) );
         mMpMediaController = new MpMediaController();
         emit applicationReady();
         
@@ -358,6 +364,8 @@
 void 	MpMainWindow::keyPressEvent(QKeyEvent *event)
 {
     switch(event->key()) {
+    //RND feature to rotate on emulator.
+#ifdef __WINS__   
     case 16842753:
     case Qt::Key_Call:
         if (orientation () == Qt::Vertical) {
@@ -367,6 +375,7 @@
             setOrientation(Qt::Vertical, false);
         }
         break;
+#endif // __WINS__
     default:
         HbMainWindow::keyPressEvent (event);
         break;          
@@ -376,13 +385,13 @@
 /*!
   Slot to initialize the view that corresponds to the requested service  
  */
-void MpMainWindow::initializeServiceView( TUid hostUid )
+void MpMainWindow::initializeServiceView( quint32 clientSecureId )
 {
     switch (mMusicServices->currentService()) {
  
     case MusicServices::EUriFetcher:
         {
-            MpEngineFactory::createSharedEngine( hostUid , MpEngine::Fetch );
+            MpEngineFactory::createSharedEngine( clientSecureId , MpEngine::Fetch );
             mPopupHandler = new MpGlobalPopupHandler( this );
             loadView( CollectionView, MpCommon::FetchView );
             MpViewBase* collectionView = reinterpret_cast<MpViewBase*>(mCollectionViewPlugin->getView());
@@ -397,8 +406,8 @@
         }
     case MusicServices::EPlayback:
         {
-            MpEngineFactory::createSharedEngine( hostUid , MpEngine::Embedded );
-            loadView(PlaybackView, MpCommon::EmbeddedView );   
+            MpEngineFactory::createSharedEngine( clientSecureId , MpEngine::Embedded );
+            loadView(PlaybackView, MpCommon::EmbeddedView );
             MpViewBase* playbackView = reinterpret_cast<MpViewBase*>(mPlaybackViewPlugin->getView());
             connect(mMusicServices, SIGNAL(playReady(QString)), MpEngineFactory::sharedEngine(), SLOT(playEmbedded(QString)));
             connect(mMusicServices, SIGNAL(playReady(const XQSharableFile&)), MpEngineFactory::sharedEngine(), SLOT(playEmbedded(const XQSharableFile&)));
@@ -419,21 +428,26 @@
   in the activity manager to wait for activities.
   Only running activity supported at the moment is "MusicNowPlayingView"
  */
-void MpMainWindow::handleActivity()
+
+void MpMainWindow::loadActivityData( Af::ActivationReason reason, const QString &name, QVariantHash parameter )
 {
     TX_ENTRY
-    HbApplication* app = qobject_cast<HbApplication*>(qApp);
-    QString activityId = app->activateId();
-    
-    if( !activityId.compare( MUSIC_NOW_PLAYING_VIEW ) ) {
-        if ( orientation() == Qt::Vertical ) {
-            if( mVerticalViewType != PlaybackView ) {
-                activateView( PlaybackView );
+    if( reason == Af::ActivationReasonActivity ) {
+        QString activityId = name;
+        QVariantHash params = parameter;
+        if( !activityId.compare( MUSIC_NOW_PLAYING_VIEW ) ) {
+            if( params.contains( "shuffle" ) ) {
+                if( !params.value( "shuffle" ).toString().compare( "yes" ) ) {
+                    MpEngineFactory::sharedEngine()->shuffleAll();
+                }
+            }
+            if ( orientation() == Qt::Vertical ) {
+                if( mVerticalViewType != PlaybackView ) {
+                    activateView( PlaybackView );
+                }
             }
         }
     }
-    
-    mActivityManager->waitActivity();
     TX_EXIT
 }
 
@@ -460,7 +474,7 @@
     activityData.insert( "restorePath", serializedRestorePath );
        
     
-    bool ok = mActivityManager->addActivity( activity , activityData, activityParameters );
+    bool ok = mActivityStorage->saveActivity( activity , activityData, activityParameters );
     if ( !ok ){
         TX_LOG_ARGS( "Error: Add Failed; should never get here." );
     }
@@ -541,7 +555,6 @@
     TX_ENTRY
     QVariantHash activityData = data.toHash();
     QByteArray serializedRestorePath = activityData.value( "restorePath" ).toByteArray();
-    connect( MpEngineFactory::sharedEngine(), SIGNAL( restorePathFailed() ), this, SLOT( handleRestorePathFailed() ) );
     MpEngineFactory::sharedEngine()->loadActivityData( serializedRestorePath );
     TX_EXIT
 }
--- a/app/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -16,8 +16,8 @@
 
 TEMPLATE = subdirs
 
-# SUBDIRS += unittest_mpmtpinfolink
-# SUBDIRS += unittest_mpglobalpopuphandler
+#SUBDIRS += unittest_mpmtpinfolink \
+SUBDIRS += unittest_mpglobalpopuphandler
 
 CONFIG += ordered
 
--- a/app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -40,7 +40,7 @@
 
 private:
     explicit MpEngine();
-    void initialize( TUid hostUid, EngineMode mode);
+    void initialize( quint32 clientSecureId, EngineMode mode);
     
 signals:
     void libraryAboutToUpdate();    
--- a/app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/tsrc/unittest_mpglobalpopuphandler/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -30,14 +30,17 @@
 
 public:
     virtual ~MpEngineFactory();
-    static MpEngineFactory * instance();    
+    static MpEngineFactory * instance();
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode=MpEngine::StandAlone );
+    static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode );
     static MpEngine *sharedEngine();
-    static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode );
     static void close();
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
-
+	
+private:
     
-private:    
+    Q_DISABLE_COPY( MpEngineFactory )
+    
     MpEngine             *mSharedEngine;
     QList<MpEngine *>    mEngines;
 };
--- a/app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpengine.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -34,9 +34,9 @@
 /*!
  Initialize engine
  */
-void MpEngine::initialize( TUid hostUid, EngineMode mode )
+void MpEngine::initialize( quint32 clientSecureId, EngineMode mode )
 {
-    Q_UNUSED( hostUid );
+    Q_UNUSED( clientSecureId );
     Q_UNUSED( mode );
 }
 
--- a/app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/app/tsrc/unittest_mpglobalpopuphandler/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -60,7 +60,7 @@
 MpEngine *MpEngineFactory::createIsolatedEngine( MpEngine::EngineMode mode )
 {
     instance()->mEngines.append( new MpEngine() );
-    instance()->mEngines.last()->initialize( TUid::Uid( MpCommon::KMusicPlayerUid + instance()->mEngines.count() ), mode );
+    instance()->mEngines.last()->initialize( (MpCommon::KMusicPlayerUid + instance()->mEngines.count()), mode );
     return instance()->mEngines.last();
 }
 
@@ -82,14 +82,14 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid hostUid , MpEngine::EngineMode mode )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 clientSecureId , MpEngine::EngineMode mode )
 {
     if ( !instance()->mSharedEngine ) {
         instance()->mSharedEngine = new MpEngine();
-        instance()->mSharedEngine->initialize( hostUid, mode );
+        instance()->mSharedEngine->initialize( clientSecureId, mode );
     }
     return instance()->mSharedEngine;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mpapplicationmonitor.h	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* 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 application monitor utility.
+*
+*/
+
+#ifndef MPAPPLICATIONMONITOR_H
+#define MPAPPLICATIONMONITOR_H
+
+#include <QObject>
+#include "mpcommondefs.h"
+
+#ifdef BUILD_MPAPPLICATIONMONITOR
+#define MPMPAPPLICATIONMONITOR_EXPORT Q_DECL_EXPORT
+#else
+#define MPMPAPPLICATIONMONITOR_EXPORT Q_DECL_IMPORT
+#endif
+
+class MpApplicationMonitorPrivate;
+
+class MPMPAPPLICATIONMONITOR_EXPORT MpApplicationMonitor : public QObject
+{
+    Q_OBJECT
+
+    friend class MpApplicationMonitorPrivate;
+
+public:
+
+    explicit MpApplicationMonitor( quint32 clientSecureId=MpCommon::KMusicPlayerUid, QObject *parent=0 );
+    virtual ~MpApplicationMonitor();
+
+    bool isApplicationRunning();
+
+signals:
+
+    void applicationStatusChanged( bool isRunning );
+
+private:
+
+    Q_DISABLE_COPY( MpApplicationMonitor )
+    MpApplicationMonitorPrivate *d_ptr;
+
+};
+
+#endif  // MPAPPLICATIONMONITOR_H
--- a/inc/mpcommondefs.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/inc/mpcommondefs.h	Fri Sep 17 08:28:52 2010 +0300
@@ -25,12 +25,12 @@
 namespace MpCommon
 {
     // UID definition
-    const long int KMusicPlayerUid      = {0x10207C62};
-    const long int KCollectionViewUid   = {0x10207C63};
-    const long int KPlaybackViewUid     = {0x10207C64};
-    const long int KSettingsViewUid     = {0x10207C66};
-    const long int KDetailsViewUid      = {0x2002D0AA};
-    const long int KMediaWallViewUid    = {0x10207C94};
+    const quint32 KMusicPlayerUid      = {0x10207C62};
+    const quint32 KCollectionViewUid   = {0x10207C63};
+    const quint32 KPlaybackViewUid     = {0x10207C64};
+    const quint32 KSettingsViewUid     = {0x10207C66};
+    const quint32 KDetailsViewUid      = {0x2002D0AA};
+    const quint32 KMediaWallViewUid    = {0x10207C94};
 
     /*!
      Command code sent from the views to the application main window
--- a/inc/mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -36,6 +36,7 @@
 class MpEngineFactory;
 class MpAudioEffectsFrameworkWrapper;
 class MpEqualizerFrameworkWrapper;
+class MpApplicationMonitor;
 
 #if defined(BUILD_MPENGINE_LIB)
 #define MPENGINE_EXPORT Q_DECL_EXPORT
@@ -56,7 +57,8 @@
         StandAlone,
         Fetch,
         Embedded,
-        MediaBrowsing
+        MediaBrowsing,
+        HomeScreen
     };
 
 private:
@@ -128,6 +130,7 @@
 
     // Harvester related
     void libraryAboutToUpdate();
+    void libraryUpdateStarted();
     void libraryUpdated();
     void usbBlocked( bool blocked );
     void unableToCotinueDueUSB();
@@ -191,6 +194,7 @@
     void getMuteState();
     void mute();
     void unmute();
+    void handleCorruptedStop( bool lastSong );
 
     // Audio Effects related
     void setBalance( int balance );
@@ -200,8 +204,8 @@
     void handleEqualizerReady();
 
 private:
-    
-    void initialize( TUid hostUid, EngineMode mode);
+
+    void initialize( quint32 clientSecureId, EngineMode mode);
 
     // Harvester related
     void handleUsbMassStorageStartEvent();
@@ -210,35 +214,38 @@
     void handleUsbMtpEndEvent();
     void handleUsbMtpNotActive();
     void changeUsbBlockingState( UsbBlockingState state );
+    void autoRefreshLibrary( bool automaticRequest=false );
 
 private:
 
     Q_DISABLE_COPY( MpEngine )
 
+    EngineMode                          mEngineMode;
+
     // Harvesting related
-    MpMpxHarvesterFrameworkWrapper       *mMpxHarvesterWrapper;  // Own
-    MpSongScanner                        *mSongScanner;          // Own
+    MpMpxHarvesterFrameworkWrapper      *mMpxHarvesterWrapper;  // Own
+    MpSongScanner                       *mSongScanner;          // Own
 
     // Collection related
-    MpMpxCollectionFrameworkWrapper      *mMpxCollectionWrapper; //Own
+    MpMpxCollectionFrameworkWrapper     *mMpxCollectionWrapper; // Own
 
     // Playback related
-    MpMpxPlaybackFrameworkWrapper        *mMpxPlaybackWrapper; //Own
+    MpMpxPlaybackFrameworkWrapper       *mMpxPlaybackWrapper;   // Own
 
     // Audio Effects related
-    MpAudioEffectsFrameworkWrapper       *mAudioEffectsWrapper; // Own
+    MpAudioEffectsFrameworkWrapper      *mAudioEffectsWrapper;  // Own
 
     // Equalizer related
-    MpEqualizerFrameworkWrapper          *mEqualizerWrapper; // Own
-    int                                  mCurrentPresetIndex;
-
-    MpSongData                           *mSongData;            // Owned
+    MpEqualizerFrameworkWrapper         *mEqualizerWrapper;     // Own
+    int                                 mCurrentPresetIndex;
 
-    // General
-    UsbBlockingState                     mUsbBlockingState;
-    UsbBlockingState                     mPreviousUsbState;
-    bool                                 mHandleMediaCommands;
-    TUid                                 mHostUid;
+    MpSongData                          *mSongData;             // Own
+    MpApplicationMonitor                *mApplicationMonitor;   // Own
+
+    UsbBlockingState                    mUsbBlockingState;
+    UsbBlockingState                    mPreviousUsbState;
+    bool                                mHandleMediaCommands;
+
 };
 
 #endif // MPENGINE_H
--- a/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -41,8 +41,8 @@
 public:
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance();
-    
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode=MpEngine::StandAlone );
     static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode );
     static MpEngine *sharedEngine();
     static void close();
--- a/inc/mpsongscanner.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/inc/mpsongscanner.h	Fri Sep 17 08:28:52 2010 +0300
@@ -50,12 +50,15 @@
     bool isAutomaticScan();
 
 signals:
+
     void scanStarted();
     void scanCountChanged( int count );
     void scanFinished( int error, int itemsAdded );
 
 public slots:
+
     void cancelScan();
+    void handleScanStarted();
     void handleScanEnded( int numItemsAdded, int error );
     void handleDiskEvent( MpxDiskEvents event );
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+mpdata.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpdata.iby)
+
--- a/mpdata/src/mpcollectiontbonelistdatamodel.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/src/mpcollectiontbonelistdatamodel.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -85,8 +85,8 @@
              this, SIGNAL(albumDataChanged()) );
     
     if ( mPlaybackData ) {
-		connect( mPlaybackData, SIGNAL(fileCorrupted( int )), 
-        		this, SLOT(fileCorrupted( int )));
+        connect( mPlaybackData, SIGNAL(fileCorrupted( int )), 
+                this, SLOT(fileCorrupted( int )));
     }
     
     TX_EXIT
@@ -154,8 +154,12 @@
                 && mPlaybackData->id() == mCollectionData->albumSongId( row ) ) {
             QList<QVariant> iconList;
             iconList << QVariant(); //primary icon is not used.
-
-            iconList << HbIcon("qtg_small_speaker");
+            if ( mPlaybackData->playbackState() == MpPlaybackData::Playing ) {
+                iconList << HbIcon("qtg_mono_play");
+            }
+            else {
+                iconList << HbIcon("qtg_mono_pause");
+            }
             returnValue = iconList;
         }
     }
@@ -240,13 +244,8 @@
  */
 void MpCollectionTBoneListDataModel::updatePlaybackState()
 {
-    //This logic is to account for when song plays the very first time, we get
-    //media before playback is active.
-    bool playbackWasActive = mPlaybackActive;
     mPlaybackActive = mPlaybackData->playbackState() != MpPlaybackData::NotPlaying;
-    if ( mPlaybackActive && !playbackWasActive ) {
-        updateSong();
-    }
+    updateSong();
 }    
 
 /*!
--- a/mpdata/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -16,10 +16,10 @@
 
 TEMPLATE = subdirs
 
-#SUBDIRS += unittest_mpcollectionalbumartmanager \
-#           unittest_mpcollectiondatamodel \
-#           unittest_mpcollectiontbonelistdatamodel \
-SUBDIRS += unittest_mpmpxcollectiondata
+SUBDIRS += unittest_mpmpxcollectiondata \
+           unittest_mpcollectiondatamodel \
+           unittest_mpcollectiontbonelistdatamodel
+#           unittest_mpcollectionalbumartmanager \
 #           unittest_mpplaybackdata \
 #           unittest_mpsongdata
 
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/inc/unittest_mpcollectiondatamodel.h	Fri Sep 17 08:28:52 2010 +0300
@@ -78,6 +78,7 @@
     void testDropMimeData();
     void testSetContext();
     void testFileCorrupted();
+    void testSetLayout();
 
 private:
 
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -45,14 +45,17 @@
     HbApplication app(argc, argv);
     TestMpCollectionDataModel tv;
 
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\unittest_mpcollectiondatamodel.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_mpcollectiondatamodel.txt";
 
-    int res = QTest::qExec(&tv, 3, pass);
-
-    return res;
+        return QTest::qExec(&tv, 3, pass);
+    }
 }
 
 TestMpCollectionDataModel::TestMpCollectionDataModel()
@@ -89,7 +92,7 @@
     }
 
     mStubData = new MpMpxCollectionData();
-    mStubPlaybackData = new MpPlaybackData(this);
+    mStubPlaybackData = new MpPlaybackData();
     mHelper = new TestHelper();
 }
 
@@ -232,9 +235,8 @@
     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"));
+    QCOMPARE(dataList.count(), 1);
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_dblist_val_unknown"));
 
     // Qt::DecorationRole
     data = mTest->data(modelIndex, Qt::DecorationRole);
@@ -320,8 +322,8 @@
     QCOMPARE(dataList.at(0), QString("Title1"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -349,8 +351,8 @@
 
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -377,8 +379,8 @@
     QCOMPARE(dataList.at(1), QString("CollectionTitle"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 }
 
 /*!
@@ -399,12 +401,12 @@
     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"));
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown8"));
+    QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown5"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 }
 
 /*!
@@ -451,9 +453,8 @@
     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(0), hbTrId("txt_mus_other_unknown3"));
+    QCOMPARE(dataList.count(), 1);
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_dblist_val_unknown3"));
 
 
     // Qt::DecorationRole
@@ -485,8 +486,8 @@
     QCOMPARE(dataList.at(1), QString("Artist1"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -510,12 +511,12 @@
     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"));
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_dblist_unknown"));
+    QCOMPARE(dataList.at(1), hbTrId("txt_mus_dblist_val_unknown2"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -542,8 +543,8 @@
     QCOMPARE(dataList.at(1), QString("Artist1"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -567,12 +568,12 @@
     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"));
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown8"));
+    QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown5"));
 
     // Qt::DecorationRole
-    data = mTest->data(modelIndex, Qt::DecorationRole);
-    QCOMPARE(data.userType(), QMetaType::type("QIcon"));
+    QVariant iconData = mTest->data(modelIndex, Qt::DecorationRole);
+    QVERIFY(iconData.isValid());
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -622,8 +623,7 @@
     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"));
+    QCOMPARE(dataList.count(), 0);
 
     // Hb::IndexFeedbackRole
     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
@@ -674,9 +674,8 @@
     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"));
+    QCOMPARE(dataList.count(), 1);
+    QCOMPARE(dataList.at(0), hbTrId("txt_mus_dblist_val_unknown"));
 
     // Qt::DecorationRole
     data = mTest->data(modelIndex, Qt::DecorationRole);
@@ -977,8 +976,27 @@
  */
 void TestMpCollectionDataModel::testFileCorrupted()
 {
-    
+    QSignalSpy spy(mTest, SIGNAL(dataChanged( QModelIndex, QModelIndex )));
+    mTest->mRowCount = 4;
+    mTest->fileCorrupted(1);
+    QCOMPARE(mStubData->mCorruptedIndex.value(0), 1);
+    QCOMPARE(mStubData->mCorruptedIndex.value(1), 3);
+    QCOMPARE(spy.count(), 2);
     
 }
 
+/*!
+ Tests setLayout()
+ */
+void TestMpCollectionDataModel::testSetLayout()
+{
+    QCOMPARE(mTest->mCollectionLayout, ECollectionListView);
+    mTest->setLayout(ECollectionSelectionDialog);
+    QCOMPARE(mTest->mCollectionLayout, ECollectionSelectionDialog);
+    mTest->setLayout(ECollectionArrangeSongsDialog);
+    QCOMPARE(mTest->mCollectionLayout, ECollectionArrangeSongsDialog);
+    mTest->setLayout(ECollectionListView);
+    QCOMPARE(mTest->mCollectionLayout, ECollectionListView);
+}
+
 // End of file
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpmpxcollectiondata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -75,11 +75,12 @@
     void setContext( TCollectionContext context );
     QList<int> songIndex( int songUniqueId );
     void setCorruptValue(QModelIndex index, bool tBone );
-    void setReloadAlbumContent( bool reloadAlbum );
 
 signals:
 
     void contextChanged( TCollectionContext context );
+    void dataChanged();
+    void dataChanged( int fromIndex, int toIndex );
 
 public:
 
@@ -87,6 +88,7 @@
     int                     mCount;
     bool                    mItemDataReturn;
     bool                    mCollectionTitleReturn;
+    QList<int>              mCorruptedIndex;
 
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/inc/mpplaybackdata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -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: mpplaybackdata stub for testing mpmediawallview
+*
+*/
+
+#ifndef MPPLAYBACKDATA_H
+#define MPPLAYBACKDATA_H
+
+//includes
+#include <QObject>
+#include <QMetaType>
+
+
+class MpPlaybackData : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    enum SimplifiedState {
+        NotPlaying,
+        Playing,
+        Paused,
+        Stopped
+    };
+
+
+
+    explicit MpPlaybackData();
+    virtual ~MpPlaybackData();
+
+    // Stub functions
+    void emitPlaybackStateChanged();
+    void setPlaybackState(MpPlaybackData::SimplifiedState state);
+
+signals:
+    void playbackStateChanged();
+    void playbackInfoChanged();
+    void fileCorrupted(int);
+
+public:
+    int albumId();
+    const QString& title() const;
+    const QString& artist() const;
+    MpPlaybackData::SimplifiedState playbackState() const;
+
+
+private:
+    QString                  mArtist;
+    QString                  mTitle;
+    SimplifiedState          mPlaybackState;
+
+};
+
+#endif  // MPPLAYBACKDATA_H
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpmpxcollectiondata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -109,6 +109,7 @@
       mCount(0),
       mItemDataReturn(true),
       mCollectionTitleReturn(true)
+ 
 {
     gInitCounter++;
 }
@@ -197,7 +198,15 @@
  */
 bool MpMpxCollectionData::hasItemProperty( int index, MpMpxCollectionData:: DataProperty type ) const
 {
-
+    TX_ENTRY
+    Q_UNUSED(type);
+    if (index == 2){
+    return true;
+    }
+    else {
+    return false;
+    }
+    
 }
 
 /*!
@@ -258,23 +267,22 @@
  Stub function.
  */
 QList<int> MpMpxCollectionData::songIndex( int songUniqueId )
-    {
+{
+    QHash<int, int> iList;
+    iList.insertMulti(1,3);
+    iList.insertMulti(1,2);
+    iList.insertMulti(4,6);
+    iList.insertMulti(1,1);
+    return iList.values(songUniqueId);
     
-    }
+}
 
 /*!
  Stub function.
  */
 void MpMpxCollectionData::setCorruptValue(QModelIndex index, bool tBone )
-    {
-    
-    }
+{
+    Q_UNUSED(tBone);
+    mCorruptedIndex.append(index.row());
+}
 
-/*!
- Stub function.
- */
-void MpMpxCollectionData::setReloadAlbumContent( bool reloadAlbum )
-    {
-    
-    }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/stub/src/mpplaybackdata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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: MpPlaybackData stub for testing mpnowplayingwidget
+*
+*/
+
+#include "stub/inc/mpplaybackdata.h"
+
+
+int gUpdateCounter = 0;
+
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::MpPlaybackData()
+    : mPlaybackState(NotPlaying)
+{
+    gUpdateCounter++;
+}
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::~MpPlaybackData()
+{
+}
+
+/*!
+ Stub function.
+ */
+const QString& MpPlaybackData::title() const
+{
+    return mTitle;
+}
+
+/*!
+ Stub function.
+ */
+const QString& MpPlaybackData::artist() const
+{
+    return mArtist;
+}
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::SimplifiedState MpPlaybackData::playbackState() const
+{
+    return mPlaybackState;
+}
+
+/*!
+ Stub function.
+ */
+int MpPlaybackData::albumId()
+{
+    return 0;
+}
+
+/*!
+ Stub function.
+ */
+void MpPlaybackData::emitPlaybackStateChanged()
+{
+   emit playbackStateChanged();
+}
+
+ void MpPlaybackData::setPlaybackState(MpPlaybackData::SimplifiedState state)
+ {
+     mPlaybackState=state;
+ }
--- a/mpdata/tsrc/unittest_mpcollectiondatamodel/unittest_mpcollectiondatamodel.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiondatamodel/unittest_mpcollectiondatamodel.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -16,7 +16,7 @@
 
 TEMPLATE = app
 CONFIG += qtestlib hb symbian_test
-TARGET = unittest_mpcollectiontbonelistdatamodel
+TARGET = unittest_mpcollectiondatamodel
 TARGET.CAPABILITY = CAP_APPLICATION
 
 DEPENDPATH += .
@@ -34,12 +34,14 @@
            inc/unittest_helper.h \
            stub/inc/mpcollectionalbumartmanager.h \
            stub/inc/mpmpxcollectiondata.h \
-           ../../../inc/mpcollectiondatamodel.h \
+           stub/inc/mpplaybackdata.h \
+           ../../../inc/mpcollectiondatamodel.h
                
 SOURCES += src/unittest_mpcollectiondatamodel.cpp \
            src/unittest_helper.cpp \
            stub/src/mpcollectionalbumartmanager.cpp \
            stub/src/mpmpxcollectiondata.cpp \
+           stub/src/mpplaybackdata.cpp \
            ../../src/mpcollectiondatamodel.cpp
 
 DEFINES += BUILD_MPDATA_LIB
--- a/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_mpcollectiontbonelistdatamodel.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/inc/unittest_mpcollectiontbonelistdatamodel.h	Fri Sep 17 08:28:52 2010 +0300
@@ -23,6 +23,7 @@
 class QTranslator;
 class MpCollectionTBoneListDataModel;
 class MpMpxCollectionData;
+class MpPlaybackData;
 class TestHelper;
 
 class TestMpCollectionTBoneListDataModel : public QObject
@@ -52,12 +53,15 @@
     void testData();
     void testDataNoData();
     void testDataAnyOtherRole();
+    void testFileCorrupted();
+    void testEnablePlaybackIndicatorEnable();
 
 private:
 
     MpCollectionTBoneListDataModel  *mTest;
     TestHelper                      *mHelper;
     MpMpxCollectionData             *mStubData;
+    MpPlaybackData                  *mStubPlaybackData;
     QTranslator                     *mMpTranslator; // Own
 
 };
--- a/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_mpcollectiontbonelistdatamodel.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/src/unittest_mpcollectiontbonelistdatamodel.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -27,6 +27,7 @@
 #include "unittest_mpcollectiontbonelistdatamodel.h"
 #include "unittest_helper.h"
 #include "stub/inc/mpmpxcollectiondata.h"
+#include "stub/inc/mpplaybackdata.h"
 
 // Do this so we can access all member variables.
 #define private public
@@ -58,6 +59,7 @@
     : mTest(0),
       mHelper(0),
       mStubData(0),
+      mStubPlaybackData(0),
       mMpTranslator(0)
 {
 }
@@ -67,6 +69,7 @@
     delete mTest;
     delete mHelper;
     delete mStubData;
+    delete mStubPlaybackData;
     delete mMpTranslator;
 }
 
@@ -86,6 +89,7 @@
     }
 
     mStubData = new MpMpxCollectionData();
+    mStubPlaybackData = new MpPlaybackData();
     mHelper = new TestHelper();
 }
 
@@ -96,6 +100,8 @@
 {
     delete mStubData;
     mStubData = 0;
+    delete mStubPlaybackData;
+    mStubPlaybackData = 0;
     delete mHelper;
     mHelper = 0;
 }
@@ -105,7 +111,7 @@
  */
 void TestMpCollectionTBoneListDataModel::init()
 {
-    mTest = new MpCollectionTBoneListDataModel(mStubData);
+    mTest = new MpCollectionTBoneListDataModel(mStubData, mStubPlaybackData);
     mTest->mCollectionData->mItemDataReturn = true;
 }
 
@@ -188,3 +194,31 @@
     QCOMPARE(data.isValid(), false);
 }
 
+/*!
+ Tests fileCorrupted()
+ */
+void TestMpCollectionTBoneListDataModel::testFileCorrupted()
+{
+    QSignalSpy spy(mTest, SIGNAL(dataChanged( QModelIndex, QModelIndex )));
+    mTest->mRowCount = 4;
+    mTest->fileCorrupted(2);
+    QCOMPARE(mStubData->mHasAlbumSongProperty, true);
+    mTest->fileCorrupted(0);
+    QCOMPARE(mStubData->mReloadAlbumContent, true);
+    mTest->fileCorrupted(1);
+    QCOMPARE(mStubData->mCorruptedIndex.value(0), 1);
+    QCOMPARE(spy.count(), 1);
+    
+}
+
+void TestMpCollectionTBoneListDataModel::testEnablePlaybackIndicatorEnable()
+{
+    mStubPlaybackData->mPlaybackState = MpPlaybackData::Playing;
+    mTest->enablePlaybackIndicatorEnable(true);
+    QCOMPARE( mTest->mPlaybackActive, true);
+    QCOMPARE( mTest->mPlaybackIndicatorEnabled, true);
+    mTest->enablePlaybackIndicatorEnable(false);
+    QCOMPARE( mTest->mPlaybackActive, false);
+    QCOMPARE( mTest->mPlaybackIndicatorEnabled, false);
+
+}
--- a/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/inc/mpmpxcollectiondata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/inc/mpmpxcollectiondata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -19,6 +19,7 @@
 #define MPMPXCOLLECTIONDATA_H
 
 #include <QObject>
+#include <QAbstractListModel>
 
 #include "mpmpxcollectionviewdefs.h"
 
@@ -40,6 +41,11 @@
         Rating,
         AlbumArtUri
     };
+    
+    enum DataProperty {
+           Corrupted,
+           DrmExpired
+    };
 
     // Test utility functions
     static int getInitCounter();
@@ -52,17 +58,23 @@
     int albumSongsCount() const;
     int albumSongId( int index );
     QString albumSongData( int index, MpMpxCollectionData::DataType type ) const;
+    bool hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type );
     int albumSongIndex( int songUniqueId );
-
+    void setCorruptValue(QModelIndex index, bool tBone );
+    void setReloadAlbumContent( bool );
 signals:
 
     void contextChanged( TCollectionContext context );
     void refreshAlbumSongs();
+	void dataChanged();
 
 public:
 
     int                     mAlbumSongCount;
     bool                    mItemDataReturn;
+    bool                    mReloadAlbumContent;
+    bool                    mHasAlbumSongProperty;
+    QList<int>              mCorruptedIndex;
 
 };
 
--- a/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/src/mpmpxcollectiondata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpcollectiontbonelistdatamodel/stub/src/mpmpxcollectiondata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -99,8 +99,48 @@
 /*!
  Stub function.
  */
+bool MpMpxCollectionData::hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type )
+{
+    TX_ENTRY
+    Q_UNUSED(type);
+    if (index == 2){
+    mHasAlbumSongProperty = true;
+    return true;
+    }
+    else {
+    mHasAlbumSongProperty = false;
+    return false;
+    }
+}
+
+/*!
+ Stub function.
+ */
 int MpMpxCollectionData::albumSongIndex( int songUniqueId )
 {
-    Q_UNUSED(songUniqueId);
-    return 0;
+    if (songUniqueId == 0){
+        return -1;
+    }
+    else {
+        return songUniqueId;
+    }
+      
 }
+
+/*!
+ Stub function.
+ */
+void MpMpxCollectionData::setCorruptValue(QModelIndex index, bool tBone )
+{
+    Q_UNUSED(tBone);
+    mCorruptedIndex.append(index.row());
+}
+
+/*!
+ Stub function.
+ */
+void MpMpxCollectionData::setReloadAlbumContent( bool reload )
+{
+    mReloadAlbumContent = reload;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_helper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -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 <QAbstractListModel>
+
+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
+
+
+
+
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/inc/unittest_mpmpxcollectiondata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -23,6 +23,7 @@
 
 class MpMpxCollectionData;
 class MpMpxCollectionDataPrivate;
+class TestHelper;
 
 class TestMpMpxCollectionData : public QObject
 {
@@ -64,12 +65,15 @@
     void testAlbumSongData();
     void testHasItemProperty();
     void testHasAlbumSongProperty();
+    void testSetCorruptValue();
+    void testSetReloadAlbumContent();
 
 
 private:
 
     MpMpxCollectionData         *mTest;
     MpMpxCollectionDataPrivate  *mTestPrivate;
+    TestHelper                  *mHelper;
 
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_helper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -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
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/src/unittest_mpmpxcollectiondata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -29,9 +29,9 @@
 #include <mpxcollectionuihelper.h>
 #include <mpxcollectionhelperfactory.h>
 
-
 #include "unittest_mpmpxcollectiondata.h"
 #include "mpcommondefs.h"
+#include "unittest_helper.h"
 
 
 // Do this so we can access all member variables.
@@ -88,13 +88,15 @@
 }
 
 TestMpMpxCollectionData::TestMpMpxCollectionData()
-    : mTest(0)
+    : mTest(0),
+      mHelper(0)
 {
 }
 
 TestMpMpxCollectionData::~TestMpMpxCollectionData()
 {
     delete mTest;
+    delete mHelper;
 }
 
 /*!
@@ -118,6 +120,7 @@
 {
     mTest = new MpMpxCollectionData();
     mTestPrivate = mTest->d_ptr;
+    mHelper = new TestHelper();
 }
 
 /*!
@@ -419,6 +422,7 @@
     mTestPrivate->iContainerMedia = entries;
     mTestPrivate->SetCollectionContextL();
     QCOMPARE(mTestPrivate->iContext, ECollectionContextAllSongs);
+    QCOMPARE(mTestPrivate->iSongIdIndexMapping.empty(), true);
 
     // All artists
     entries->SetTObjectValueL<TMPXGeneralType>(KMPXMediaGeneralType, EMPXGroup);
@@ -535,6 +539,7 @@
     QCOMPARE(spy.count(), 1);
     TCollectionContext context = qvariant_cast<TCollectionContext>(spy.at(0).at(0));
     QCOMPARE(context, ECollectionContextAllSongs);
+    QCOMPARE(mTestPrivate->iReloadAlbumContent, false);
     CleanupStack::PopAndDestroy(entries);
 }
 
@@ -566,7 +571,7 @@
     array->AppendL(item);
 
     mTestPrivate->iMediaArray = array;
-    QCOMPARE( mTest->itemId(0), -1);
+    QCOMPARE( mTest->itemId(0), 0);
 
     item->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, itemId );
     QCOMPARE( mTest->itemId(0), itemId);
@@ -752,6 +757,7 @@
 void TestMpMpxCollectionData::testSetCurrentAlbum()
 {
     QSignalSpy spy(mTest, SIGNAL(refreshAlbumSongs()));
+    mTestPrivate->iReloadAlbumContent = false;
 
     // Create media array that doesn't have the album songs yet.
     CMPXMediaArray* array = CMPXMediaArray::NewL();
@@ -863,7 +869,7 @@
 }
 
 /*!
- Tests hasAlbumSongProperty().
+ Tests hasItemProperty().
  */
 void TestMpMpxCollectionData::testHasItemProperty()
 {
@@ -973,3 +979,33 @@
     mTestPrivate->iMediaArray = NULL;
     CleanupStack::PopAndDestroy(array);
 }
+
+/*!
+ Tests setCorruptValue().
+ */
+void TestMpMpxCollectionData::testSetCorruptValue()
+{
+    CMPXMediaArray* array = CMPXMediaArray::NewL();
+    CleanupStack::PushL(array);
+    CMPXMedia* song = CMPXMedia::NewL();   
+    array->AppendL(*song);
+    mTestPrivate->iMediaArray = array;
+    QModelIndex modelIndex = mHelper->indexFor(0);
+    mTest->setCorruptValue(modelIndex,false);
+    QCOMPARE(mTest->hasItemProperty( 0, MpMpxCollectionData::Corrupted), true);
+    CleanupStack::PopAndDestroy(array);
+    mTestPrivate->iMediaArray = NULL;    
+}
+
+/*!
+ Tests setReloadAlbumContent().
+ */
+void TestMpMpxCollectionData::testSetReloadAlbumContent()
+{
+    mTest->setReloadAlbumContent(false);
+    QCOMPARE(mTestPrivate->iReloadAlbumContent, false);
+    mTest->setReloadAlbumContent(true);
+    QCOMPARE(mTestPrivate->iReloadAlbumContent, true);
+    
+}
+
--- a/mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpmpxcollectiondata/unittest_mpmpxcollectiondata.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -29,10 +29,12 @@
         -lmpxcommon.dll
 
 HEADERS += inc/unittest_mpmpxcollectiondata.h \
-           ../../../inc/mpmpxcollectiondata.h
+           ../../../inc/mpmpxcollectiondata.h \
+	   inc/unittest_helper.h 
            
 SOURCES += src/unittest_mpmpxcollectiondata.cpp \
-           ../../src/mpmpxcollectiondata.cpp
+           ../../src/mpmpxcollectiondata.cpp \
+	   src/unittest_helper.cpp 
 
 DEFINES += BUILD_MPDATA_LIB
 
--- a/mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpplaybackdata/inc/unittest_mpplaybackdata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -53,6 +53,7 @@
     void testSeAlbumId();
     void testSetPlaybackState();
     void testCommitPlaybackInfo();
+    void testSetCorrupted();
     
 //    void testDeactivateView();
 //    void testGetView();
--- a/mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -42,14 +42,17 @@
     HbMainWindow window;
     TestMpPlaybackData tv;
 
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\unittest_mpplaybackdata.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_mpplaybackdata.txt";
 
-    int res = QTest::qExec(&tv, 3, pass);
-
-    return res;
+        return QTest::qExec(&tv, 3, pass);
+    }
 }
 
 TestMpPlaybackData::TestMpPlaybackData()
@@ -320,4 +323,14 @@
     }
 }
 
+/*!
+ test setCorrupted
+ */
+void TestMpPlaybackData::testSetCorrupted()
+{
+    QSignalSpy spy(mTest, SIGNAL(fileCorrupted(int)));
+    mTest->setCorrupted(123);
+    QCOMPARE(spy.count(),1);    
+}
+
 // End of file
--- a/mpengine/bwins/mpengineu.def	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/bwins/mpengineu.def	Fri Sep 17 08:28:52 2010 +0300
@@ -35,108 +35,112 @@
 	?releaseIsolatedCollection@MpEngine@@QAEXXZ @ 34 NONAME ; void MpEngine::releaseIsolatedCollection(void)
 	?deleteStarted@MpEngine@@IAEXW4TCollectionContext@@H@Z @ 35 NONAME ; void MpEngine::deleteStarted(enum TCollectionContext, int)
 	?stopSeeking@MpEngine@@QAEXXZ @ 36 NONAME ; void MpEngine::stopSeeking(void)
-	?initialize@MpEngine@@AAEXVTUid@@W4EngineMode@1@@Z @ 37 NONAME ; void MpEngine::initialize(class TUid, enum MpEngine::EngineMode)
-	?tr@MpEngine@@SA?AVQString@@PBD0@Z @ 38 NONAME ; class QString MpEngine::tr(char const *, char const *)
-	?disableEqualizer@MpEngine@@QAEXXZ @ 39 NONAME ; void MpEngine::disableEqualizer(void)
-	?getStaticMetaObject@MpEngine@@SAABUQMetaObject@@XZ @ 40 NONAME ; struct QMetaObject const & MpEngine::getStaticMetaObject(void)
-	?qt_metacast@MpEngineFactory@@UAEPAXPBD@Z @ 41 NONAME ; void * MpEngineFactory::qt_metacast(char const *)
-	?libraryUpdated@MpEngine@@IAEXXZ @ 42 NONAME ; void MpEngine::libraryUpdated(void)
-	?unmute@MpEngine@@QAEXXZ @ 43 NONAME ; void MpEngine::unmute(void)
-	??0MpSongScanner@@QAE@PAVMpMpxHarvesterFrameworkWrapper@@PAVQObject@@@Z @ 44 NONAME ; MpSongScanner::MpSongScanner(class MpMpxHarvesterFrameworkWrapper *, class QObject *)
-	?checkForSystemEvents@MpEngine@@QAEXXZ @ 45 NONAME ; void MpEngine::checkForSystemEvents(void)
-	?applyPreset@MpEngine@@QAEXH@Z @ 46 NONAME ; void MpEngine::applyPreset(int)
-	?volumePropertyChanged@MpEngine@@IAEXW4MpVolumeProperty@MpCommon@@H@Z @ 47 NONAME ; void MpEngine::volumePropertyChanged(enum MpCommon::MpVolumeProperty, int)
-	?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 48 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *, int)
-	?staticMetaObject@MpEngine@@2UQMetaObject@@B @ 49 NONAME ; struct QMetaObject const MpEngine::staticMetaObject
-	?scanStarted@MpSongScanner@@IAEXXZ @ 50 NONAME ; void MpSongScanner::scanStarted(void)
-	?unableToCotinueDueUSB@MpEngine@@IAEXXZ @ 51 NONAME ; void MpEngine::unableToCotinueDueUSB(void)
-	?openCollectionItem@MpEngine@@QAEXH@Z @ 52 NONAME ; void MpEngine::openCollectionItem(int)
-	?handleScanStarted@MpEngine@@QAEXXZ @ 53 NONAME ; void MpEngine::handleScanStarted(void)
-	?back@MpEngine@@QAEXXZ @ 54 NONAME ; void MpEngine::back(void)
-	?tr@MpSongScanner@@SA?AVQString@@PBD0H@Z @ 55 NONAME ; class QString MpSongScanner::tr(char const *, char const *, int)
-	?songScanner@MpEngine@@QAEPAVMpSongScanner@@XZ @ 56 NONAME ; class MpSongScanner * MpEngine::songScanner(void)
-	?handleUsbMassStorageStartEvent@MpEngine@@AAEXXZ @ 57 NONAME ; void MpEngine::handleUsbMassStorageStartEvent(void)
-	?saveActivityData@MpEngine@@QAEXAAVQByteArray@@@Z @ 58 NONAME ; void MpEngine::saveActivityData(class QByteArray &)
-	?getMaxVolume@MpEngine@@QAEXXZ @ 59 NONAME ; void MpEngine::getMaxVolume(void)
-	?handleDeleteEnded@MpEngine@@QAEX_N@Z @ 60 NONAME ; void MpEngine::handleDeleteEnded(bool)
-	?handleDiskEvent@MpEngine@@QAEXW4MpxDiskEvents@@@Z @ 61 NONAME ; void MpEngine::handleDiskEvent(enum MpxDiskEvents)
-	?verifyUsbBlocking@MpEngine@@QAE_N_N@Z @ 62 NONAME ; bool MpEngine::verifyUsbBlocking(bool)
-	?usbSynchronizationStarted@MpEngine@@IAEXXZ @ 63 NONAME ; void MpEngine::usbSynchronizationStarted(void)
-	?handleUsbMassStorageEndEvent@MpEngine@@AAEXXZ @ 64 NONAME ; void MpEngine::handleUsbMassStorageEndEvent(void)
-	??0MpEngine@@AAE@XZ @ 65 NONAME ; MpEngine::MpEngine(void)
-	?getStaticMetaObject@MpEngineFactory@@SAABUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const & MpEngineFactory::getStaticMetaObject(void)
-	?getStaticMetaObject@MpSongScanner@@SAABUQMetaObject@@XZ @ 67 NONAME ; struct QMetaObject const & MpSongScanner::getStaticMetaObject(void)
-	?isolatedCollectionOpened@MpEngine@@IAEXPAVMpMpxCollectionData@@@Z @ 68 NONAME ; void MpEngine::isolatedCollectionOpened(class MpMpxCollectionData *)
-	?aboutToAddSongs@MpEngine@@IAEXH@Z @ 69 NONAME ; void MpEngine::aboutToAddSongs(int)
-	??1MpEngine@@UAE@XZ @ 70 NONAME ; MpEngine::~MpEngine(void)
-	?changeUsbBlockingState@MpEngine@@AAEXW4UsbBlockingState@1@@Z @ 71 NONAME ; void MpEngine::changeUsbBlockingState(enum MpEngine::UsbBlockingState)
-	?setVolume@MpEngine@@QAEXH@Z @ 72 NONAME ; void MpEngine::setVolume(int)
-	?metaObject@MpEngine@@UBEPBUQMetaObject@@XZ @ 73 NONAME ; struct QMetaObject const * MpEngine::metaObject(void) const
-	??_EMpSongScanner@@UAE@I@Z @ 74 NONAME ; MpSongScanner::~MpSongScanner(unsigned int)
-	?createIsolatedEngine@MpEngineFactory@@SAPAVMpEngine@@W4EngineMode@2@@Z @ 75 NONAME ; class MpEngine * MpEngineFactory::createIsolatedEngine(enum MpEngine::EngineMode)
-	?equalizerReady@MpEngine@@IAEXXZ @ 76 NONAME ; void MpEngine::equalizerReady(void)
-	?findAlbumSongs@MpEngine@@QAEXH@Z @ 77 NONAME ; void MpEngine::findAlbumSongs(int)
-	?setPosition@MpEngine@@QAEXH@Z @ 78 NONAME ; void MpEngine::setPosition(int)
-	?metaObject@MpEngineFactory@@UBEPBUQMetaObject@@XZ @ 79 NONAME ; struct QMetaObject const * MpEngineFactory::metaObject(void) const
-	?handleEqualizerReady@MpEngine@@QAEXXZ @ 80 NONAME ; void MpEngine::handleEqualizerReady(void)
-	?tr@MpSongScanner@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString MpSongScanner::tr(char const *, char const *)
-	??_EMpEngineFactory@@UAE@I@Z @ 82 NONAME ; MpEngineFactory::~MpEngineFactory(unsigned int)
-	?skipForward@MpEngine@@QAEXXZ @ 83 NONAME ; void MpEngine::skipForward(void)
-	?songData@MpEngine@@QAEPAVMpSongData@@XZ @ 84 NONAME ; class MpSongData * MpEngine::songData(void)
-	?trUtf8@MpSongScanner@@SA?AVQString@@PBD0H@Z @ 85 NONAME ; class QString MpSongScanner::trUtf8(char const *, char const *, int)
-	?close@MpEngineFactory@@SAXXZ @ 86 NONAME ; void MpEngineFactory::close(void)
-	?libraryAboutToUpdate@MpEngine@@IAEXXZ @ 87 NONAME ; void MpEngine::libraryAboutToUpdate(void)
+	?tr@MpEngine@@SA?AVQString@@PBD0@Z @ 37 NONAME ; class QString MpEngine::tr(char const *, char const *)
+	?disableEqualizer@MpEngine@@QAEXXZ @ 38 NONAME ; void MpEngine::disableEqualizer(void)
+	?getStaticMetaObject@MpEngine@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & MpEngine::getStaticMetaObject(void)
+	?qt_metacast@MpEngineFactory@@UAEPAXPBD@Z @ 40 NONAME ; void * MpEngineFactory::qt_metacast(char const *)
+	?libraryUpdated@MpEngine@@IAEXXZ @ 41 NONAME ; void MpEngine::libraryUpdated(void)
+	?unmute@MpEngine@@QAEXXZ @ 42 NONAME ; void MpEngine::unmute(void)
+	??0MpSongScanner@@QAE@PAVMpMpxHarvesterFrameworkWrapper@@PAVQObject@@@Z @ 43 NONAME ; MpSongScanner::MpSongScanner(class MpMpxHarvesterFrameworkWrapper *, class QObject *)
+	?checkForSystemEvents@MpEngine@@QAEXXZ @ 44 NONAME ; void MpEngine::checkForSystemEvents(void)
+	?applyPreset@MpEngine@@QAEXH@Z @ 45 NONAME ; void MpEngine::applyPreset(int)
+	?volumePropertyChanged@MpEngine@@IAEXW4MpVolumeProperty@MpCommon@@H@Z @ 46 NONAME ; void MpEngine::volumePropertyChanged(enum MpCommon::MpVolumeProperty, int)
+	?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *, int)
+	?staticMetaObject@MpEngine@@2UQMetaObject@@B @ 48 NONAME ; struct QMetaObject const MpEngine::staticMetaObject
+	?scanStarted@MpSongScanner@@IAEXXZ @ 49 NONAME ; void MpSongScanner::scanStarted(void)
+	?unableToCotinueDueUSB@MpEngine@@IAEXXZ @ 50 NONAME ; void MpEngine::unableToCotinueDueUSB(void)
+	?openCollectionItem@MpEngine@@QAEXH@Z @ 51 NONAME ; void MpEngine::openCollectionItem(int)
+	?handleScanStarted@MpEngine@@QAEXXZ @ 52 NONAME ; void MpEngine::handleScanStarted(void)
+	?back@MpEngine@@QAEXXZ @ 53 NONAME ; void MpEngine::back(void)
+	?tr@MpSongScanner@@SA?AVQString@@PBD0H@Z @ 54 NONAME ; class QString MpSongScanner::tr(char const *, char const *, int)
+	?songScanner@MpEngine@@QAEPAVMpSongScanner@@XZ @ 55 NONAME ; class MpSongScanner * MpEngine::songScanner(void)
+	?handleUsbMassStorageStartEvent@MpEngine@@AAEXXZ @ 56 NONAME ; void MpEngine::handleUsbMassStorageStartEvent(void)
+	?saveActivityData@MpEngine@@QAEXAAVQByteArray@@@Z @ 57 NONAME ; void MpEngine::saveActivityData(class QByteArray &)
+	?getMaxVolume@MpEngine@@QAEXXZ @ 58 NONAME ; void MpEngine::getMaxVolume(void)
+	?handleDeleteEnded@MpEngine@@QAEX_N@Z @ 59 NONAME ; void MpEngine::handleDeleteEnded(bool)
+	?handleDiskEvent@MpEngine@@QAEXW4MpxDiskEvents@@@Z @ 60 NONAME ; void MpEngine::handleDiskEvent(enum MpxDiskEvents)
+	?verifyUsbBlocking@MpEngine@@QAE_N_N@Z @ 61 NONAME ; bool MpEngine::verifyUsbBlocking(bool)
+	?usbSynchronizationStarted@MpEngine@@IAEXXZ @ 62 NONAME ; void MpEngine::usbSynchronizationStarted(void)
+	?handleUsbMassStorageEndEvent@MpEngine@@AAEXXZ @ 63 NONAME ; void MpEngine::handleUsbMassStorageEndEvent(void)
+	??0MpEngine@@AAE@XZ @ 64 NONAME ; MpEngine::MpEngine(void)
+	?getStaticMetaObject@MpEngineFactory@@SAABUQMetaObject@@XZ @ 65 NONAME ; struct QMetaObject const & MpEngineFactory::getStaticMetaObject(void)
+	?getStaticMetaObject@MpSongScanner@@SAABUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const & MpSongScanner::getStaticMetaObject(void)
+	?isolatedCollectionOpened@MpEngine@@IAEXPAVMpMpxCollectionData@@@Z @ 67 NONAME ; void MpEngine::isolatedCollectionOpened(class MpMpxCollectionData *)
+	?aboutToAddSongs@MpEngine@@IAEXH@Z @ 68 NONAME ; void MpEngine::aboutToAddSongs(int)
+	??1MpEngine@@UAE@XZ @ 69 NONAME ; MpEngine::~MpEngine(void)
+	?changeUsbBlockingState@MpEngine@@AAEXW4UsbBlockingState@1@@Z @ 70 NONAME ; void MpEngine::changeUsbBlockingState(enum MpEngine::UsbBlockingState)
+	?setVolume@MpEngine@@QAEXH@Z @ 71 NONAME ; void MpEngine::setVolume(int)
+	?metaObject@MpEngine@@UBEPBUQMetaObject@@XZ @ 72 NONAME ; struct QMetaObject const * MpEngine::metaObject(void) const
+	??_EMpSongScanner@@UAE@I@Z @ 73 NONAME ; MpSongScanner::~MpSongScanner(unsigned int)
+	?createIsolatedEngine@MpEngineFactory@@SAPAVMpEngine@@W4EngineMode@2@@Z @ 74 NONAME ; class MpEngine * MpEngineFactory::createIsolatedEngine(enum MpEngine::EngineMode)
+	?equalizerReady@MpEngine@@IAEXXZ @ 75 NONAME ; void MpEngine::equalizerReady(void)
+	?findAlbumSongs@MpEngine@@QAEXH@Z @ 76 NONAME ; void MpEngine::findAlbumSongs(int)
+	?setPosition@MpEngine@@QAEXH@Z @ 77 NONAME ; void MpEngine::setPosition(int)
+	?metaObject@MpEngineFactory@@UBEPBUQMetaObject@@XZ @ 78 NONAME ; struct QMetaObject const * MpEngineFactory::metaObject(void) const
+	?handleEqualizerReady@MpEngine@@QAEXXZ @ 79 NONAME ; void MpEngine::handleEqualizerReady(void)
+	?tr@MpSongScanner@@SA?AVQString@@PBD0@Z @ 80 NONAME ; class QString MpSongScanner::tr(char const *, char const *)
+	??_EMpEngineFactory@@UAE@I@Z @ 81 NONAME ; MpEngineFactory::~MpEngineFactory(unsigned int)
+	?skipForward@MpEngine@@QAEXXZ @ 82 NONAME ; void MpEngine::skipForward(void)
+	?songData@MpEngine@@QAEPAVMpSongData@@XZ @ 83 NONAME ; class MpSongData * MpEngine::songData(void)
+	?trUtf8@MpSongScanner@@SA?AVQString@@PBD0H@Z @ 84 NONAME ; class QString MpSongScanner::trUtf8(char const *, char const *, int)
+	?close@MpEngineFactory@@SAXXZ @ 85 NONAME ; void MpEngineFactory::close(void)
+	?libraryAboutToUpdate@MpEngine@@IAEXXZ @ 86 NONAME ; void MpEngine::libraryAboutToUpdate(void)
+	?trUtf8@MpEngine@@SA?AVQString@@PBD0H@Z @ 87 NONAME ; class QString MpEngine::trUtf8(char const *, char const *, int)
 	?reopenCollection@MpEngine@@QAEXXZ @ 88 NONAME ; void MpEngine::reopenCollection(void)
-	?trUtf8@MpEngine@@SA?AVQString@@PBD0H@Z @ 89 NONAME ; class QString MpEngine::trUtf8(char const *, char const *, int)
-	?songsDeleted@MpEngine@@IAEX_N@Z @ 90 NONAME ; void MpEngine::songsDeleted(bool)
-	?refreshLibrary@MpEngine@@QAEX_N@Z @ 91 NONAME ; void MpEngine::refreshLibrary(bool)
-	?qt_metacast@MpEngine@@UAEPAXPBD@Z @ 92 NONAME ; void * MpEngine::qt_metacast(char const *)
-	?startSeekForward@MpEngine@@QAEXXZ @ 93 NONAME ; void MpEngine::startSeekForward(void)
-	?saveToPlaylist@MpEngine@@QAEXHAAV?$QList@H@@@Z @ 94 NONAME ; void MpEngine::saveToPlaylist(int, class QList<int> &)
-	?qt_metacall@MpEngineFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 95 NONAME ; int MpEngineFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@MpSongScanner@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 96 NONAME ; int MpSongScanner::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?tr@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 97 NONAME ; class QString MpEngineFactory::tr(char const *, char const *, int)
+	?songsDeleted@MpEngine@@IAEX_N@Z @ 89 NONAME ; void MpEngine::songsDeleted(bool)
+	?refreshLibrary@MpEngine@@QAEX_N@Z @ 90 NONAME ; void MpEngine::refreshLibrary(bool)
+	?qt_metacast@MpEngine@@UAEPAXPBD@Z @ 91 NONAME ; void * MpEngine::qt_metacast(char const *)
+	?startSeekForward@MpEngine@@QAEXXZ @ 92 NONAME ; void MpEngine::startSeekForward(void)
+	?saveToPlaylist@MpEngine@@QAEXHAAV?$QList@H@@@Z @ 93 NONAME ; void MpEngine::saveToPlaylist(int, class QList<int> &)
+	?qt_metacall@MpEngineFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 94 NONAME ; int MpEngineFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@MpSongScanner@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 95 NONAME ; int MpSongScanner::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?tr@MpEngineFactory@@SA?AVQString@@PBD0H@Z @ 96 NONAME ; class QString MpEngineFactory::tr(char const *, char const *, int)
+	?createSharedEngine@MpEngineFactory@@SAPAVMpEngine@@IW4EngineMode@2@@Z @ 97 NONAME ; class MpEngine * MpEngineFactory::createSharedEngine(unsigned int, enum MpEngine::EngineMode)
 	?findPlaylists@MpEngine@@QAEXAAVQStringList@@@Z @ 98 NONAME ; void MpEngine::findPlaylists(class QStringList &)
 	?isAutomaticScan@MpSongScanner@@QAE_NXZ @ 99 NONAME ; bool MpSongScanner::isAutomaticScan(void)
 	??1MpEngineFactory@@UAE@XZ @ 100 NONAME ; MpEngineFactory::~MpEngineFactory(void)
-	?staticMetaObject@MpEngineFactory@@2UQMetaObject@@B @ 101 NONAME ; struct QMetaObject const MpEngineFactory::staticMetaObject
-	?pause@MpEngine@@QAEXXZ @ 102 NONAME ; void MpEngine::pause(void)
-	?playEmbedded@MpEngine@@QAEXVQString@@@Z @ 103 NONAME ; void MpEngine::playEmbedded(class QString)
-	?shuffleAll@MpEngine@@QAEXXZ @ 104 NONAME ; void MpEngine::shuffleAll(void)
-	?metaObject@MpSongScanner@@UBEPBUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const * MpSongScanner::metaObject(void) const
-	?renamePlaylist@MpEngine@@QAEXAAVQString@@@Z @ 106 NONAME ; void MpEngine::renamePlaylist(class QString &)
-	?setRepeat@MpEngine@@QAEX_N@Z @ 107 NONAME ; void MpEngine::setRepeat(bool)
-	?cancelCollectionRequest@MpEngine@@QAEXXZ @ 108 NONAME ; void MpEngine::cancelCollectionRequest(void)
-	?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 109 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *)
-	?increaseVolume@MpEngine@@QAEXXZ @ 110 NONAME ; void MpEngine::increaseVolume(void)
-	?containerContentsChanged@MpEngine@@IAEXXZ @ 111 NONAME ; void MpEngine::containerContentsChanged(void)
-	?playPause@MpEngine@@QAEXXZ @ 112 NONAME ; void MpEngine::playPause(void)
-	?playlistsRenamed@MpEngine@@IAEX_N@Z @ 113 NONAME ; void MpEngine::playlistsRenamed(bool)
-	?startSeekBackward@MpEngine@@QAEXXZ @ 114 NONAME ; void MpEngine::startSeekBackward(void)
-	?tr@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString MpEngineFactory::tr(char const *, char const *)
-	?playEmbedded@MpEngine@@QAEXABVXQSharableFile@@@Z @ 116 NONAME ; void MpEngine::playEmbedded(class XQSharableFile const &)
-	?retrieveSongDetails@MpEngine@@QAEXH@Z @ 117 NONAME ; void MpEngine::retrieveSongDetails(int)
-	?handleUsbMtpStartEvent@MpEngine@@AAEXXZ @ 118 NONAME ; void MpEngine::handleUsbMtpStartEvent(void)
-	?cancelScan@MpSongScanner@@QAEXXZ @ 119 NONAME ; void MpSongScanner::cancelScan(void)
-	?trUtf8@MpSongScanner@@SA?AVQString@@PBD0@Z @ 120 NONAME ; class QString MpSongScanner::trUtf8(char const *, char const *)
-	?activePreset@MpEngine@@QAEHXZ @ 121 NONAME ; int MpEngine::activePreset(void)
-	?handleUsbEvent@MpEngine@@QAEXW4MpxUsbEvents@@@Z @ 122 NONAME ; void MpEngine::handleUsbEvent(enum MpxUsbEvents)
-	?loadActivityData@MpEngine@@QAEXABVQByteArray@@@Z @ 123 NONAME ; void MpEngine::loadActivityData(class QByteArray const &)
-	?sharedEngine@MpEngineFactory@@SAPAVMpEngine@@XZ @ 124 NONAME ; class MpEngine * MpEngineFactory::sharedEngine(void)
-	?balance@MpEngine@@QAEHXZ @ 125 NONAME ; int MpEngine::balance(void)
-	?createSharedEngine@MpEngineFactory@@SAPAVMpEngine@@VTUid@@W4EngineMode@2@@Z @ 126 NONAME ; class MpEngine * MpEngineFactory::createSharedEngine(class TUid, enum MpEngine::EngineMode)
-	?usbBlocked@MpEngine@@IAEX_N@Z @ 127 NONAME ; void MpEngine::usbBlocked(bool)
-	?handleUsbMtpNotActive@MpEngine@@AAEXXZ @ 128 NONAME ; void MpEngine::handleUsbMtpNotActive(void)
-	?restorePathFailed@MpEngine@@IAEXXZ @ 129 NONAME ; void MpEngine::restorePathFailed(void)
-	?handleScanEnded@MpSongScanner@@QAEXHH@Z @ 130 NONAME ; void MpSongScanner::handleScanEnded(int, int)
-	?staticMetaObject@MpSongScanner@@2UQMetaObject@@B @ 131 NONAME ; struct QMetaObject const MpSongScanner::staticMetaObject
-	?handleScanEnded@MpEngine@@QAEXHH@Z @ 132 NONAME ; void MpEngine::handleScanEnded(int, int)
-	??_EMpEngine@@UAE@I@Z @ 133 NONAME ; MpEngine::~MpEngine(unsigned int)
-	?play@MpEngine@@QAEXXZ @ 134 NONAME ; void MpEngine::play(void)
-	?skipBackward@MpEngine@@QAEXXZ @ 135 NONAME ; void MpEngine::skipBackward(void)
-	?qt_metacast@MpSongScanner@@UAEPAXPBD@Z @ 136 NONAME ; void * MpSongScanner::qt_metacast(char const *)
-	?reorderPlaylist@MpEngine@@QAEXHHHH@Z @ 137 NONAME ; void MpEngine::reorderPlaylist(int, int, int, int)
-	?scanFinished@MpSongScanner@@IAEXHH@Z @ 138 NONAME ; void MpSongScanner::scanFinished(int, int)
-	?setLoudness@MpEngine@@QAEX_N@Z @ 139 NONAME ; void MpEngine::setLoudness(bool)
-	?corruptedStop@MpEngine@@IAEXXZ @ 140 NONAME ; void MpEngine::corruptedStop(void)
+	?handleCorruptedStop@MpEngine@@QAEX_N@Z @ 101 NONAME ; void MpEngine::handleCorruptedStop(bool)
+	?libraryUpdateStarted@MpEngine@@IAEXXZ @ 102 NONAME ; void MpEngine::libraryUpdateStarted(void)
+	?staticMetaObject@MpEngineFactory@@2UQMetaObject@@B @ 103 NONAME ; struct QMetaObject const MpEngineFactory::staticMetaObject
+	?autoRefreshLibrary@MpEngine@@AAEX_N@Z @ 104 NONAME ; void MpEngine::autoRefreshLibrary(bool)
+	?pause@MpEngine@@QAEXXZ @ 105 NONAME ; void MpEngine::pause(void)
+	?playEmbedded@MpEngine@@QAEXVQString@@@Z @ 106 NONAME ; void MpEngine::playEmbedded(class QString)
+	?shuffleAll@MpEngine@@QAEXXZ @ 107 NONAME ; void MpEngine::shuffleAll(void)
+	?metaObject@MpSongScanner@@UBEPBUQMetaObject@@XZ @ 108 NONAME ; struct QMetaObject const * MpSongScanner::metaObject(void) const
+	?renamePlaylist@MpEngine@@QAEXAAVQString@@@Z @ 109 NONAME ; void MpEngine::renamePlaylist(class QString &)
+	?setRepeat@MpEngine@@QAEX_N@Z @ 110 NONAME ; void MpEngine::setRepeat(bool)
+	?trUtf8@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 111 NONAME ; class QString MpEngineFactory::trUtf8(char const *, char const *)
+	?cancelCollectionRequest@MpEngine@@QAEXXZ @ 112 NONAME ; void MpEngine::cancelCollectionRequest(void)
+	?increaseVolume@MpEngine@@QAEXXZ @ 113 NONAME ; void MpEngine::increaseVolume(void)
+	?corruptedStop@MpEngine@@IAEXXZ @ 114 NONAME ; void MpEngine::corruptedStop(void)
+	?containerContentsChanged@MpEngine@@IAEXXZ @ 115 NONAME ; void MpEngine::containerContentsChanged(void)
+	?initialize@MpEngine@@AAEXIW4EngineMode@1@@Z @ 116 NONAME ; void MpEngine::initialize(unsigned int, enum MpEngine::EngineMode)
+	?playPause@MpEngine@@QAEXXZ @ 117 NONAME ; void MpEngine::playPause(void)
+	?playlistsRenamed@MpEngine@@IAEX_N@Z @ 118 NONAME ; void MpEngine::playlistsRenamed(bool)
+	?startSeekBackward@MpEngine@@QAEXXZ @ 119 NONAME ; void MpEngine::startSeekBackward(void)
+	?tr@MpEngineFactory@@SA?AVQString@@PBD0@Z @ 120 NONAME ; class QString MpEngineFactory::tr(char const *, char const *)
+	?playEmbedded@MpEngine@@QAEXABVXQSharableFile@@@Z @ 121 NONAME ; void MpEngine::playEmbedded(class XQSharableFile const &)
+	?retrieveSongDetails@MpEngine@@QAEXH@Z @ 122 NONAME ; void MpEngine::retrieveSongDetails(int)
+	?handleUsbMtpStartEvent@MpEngine@@AAEXXZ @ 123 NONAME ; void MpEngine::handleUsbMtpStartEvent(void)
+	?cancelScan@MpSongScanner@@QAEXXZ @ 124 NONAME ; void MpSongScanner::cancelScan(void)
+	?trUtf8@MpSongScanner@@SA?AVQString@@PBD0@Z @ 125 NONAME ; class QString MpSongScanner::trUtf8(char const *, char const *)
+	?activePreset@MpEngine@@QAEHXZ @ 126 NONAME ; int MpEngine::activePreset(void)
+	?handleUsbEvent@MpEngine@@QAEXW4MpxUsbEvents@@@Z @ 127 NONAME ; void MpEngine::handleUsbEvent(enum MpxUsbEvents)
+	?loadActivityData@MpEngine@@QAEXABVQByteArray@@@Z @ 128 NONAME ; void MpEngine::loadActivityData(class QByteArray const &)
+	?sharedEngine@MpEngineFactory@@SAPAVMpEngine@@XZ @ 129 NONAME ; class MpEngine * MpEngineFactory::sharedEngine(void)
+	?balance@MpEngine@@QAEHXZ @ 130 NONAME ; int MpEngine::balance(void)
+	?usbBlocked@MpEngine@@IAEX_N@Z @ 131 NONAME ; void MpEngine::usbBlocked(bool)
+	?handleUsbMtpNotActive@MpEngine@@AAEXXZ @ 132 NONAME ; void MpEngine::handleUsbMtpNotActive(void)
+	?restorePathFailed@MpEngine@@IAEXXZ @ 133 NONAME ; void MpEngine::restorePathFailed(void)
+	?handleScanEnded@MpSongScanner@@QAEXHH@Z @ 134 NONAME ; void MpSongScanner::handleScanEnded(int, int)
+	?staticMetaObject@MpSongScanner@@2UQMetaObject@@B @ 135 NONAME ; struct QMetaObject const MpSongScanner::staticMetaObject
+	?handleScanEnded@MpEngine@@QAEXHH@Z @ 136 NONAME ; void MpEngine::handleScanEnded(int, int)
+	??_EMpEngine@@UAE@I@Z @ 137 NONAME ; MpEngine::~MpEngine(unsigned int)
+	?play@MpEngine@@QAEXXZ @ 138 NONAME ; void MpEngine::play(void)
+	?skipBackward@MpEngine@@QAEXXZ @ 139 NONAME ; void MpEngine::skipBackward(void)
+	?qt_metacast@MpSongScanner@@UAEPAXPBD@Z @ 140 NONAME ; void * MpSongScanner::qt_metacast(char const *)
+	?reorderPlaylist@MpEngine@@QAEXHHHH@Z @ 141 NONAME ; void MpEngine::reorderPlaylist(int, int, int, int)
+	?scanFinished@MpSongScanner@@IAEXHH@Z @ 142 NONAME ; void MpSongScanner::scanFinished(int, int)
+	?setLoudness@MpEngine@@QAEX_N@Z @ 143 NONAME ; void MpEngine::setLoudness(bool)
+	?handleScanStarted@MpSongScanner@@QAEXXZ @ 144 NONAME ; void MpSongScanner::handleScanStarted(void)
 
--- a/mpengine/eabi/mpengineu.def	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/eabi/mpengineu.def	Fri Sep 17 08:28:52 2010 +0300
@@ -20,7 +20,7 @@
 	_ZN15MpEngineFactory11qt_metacastEPKc @ 19 NONAME
 	_ZN15MpEngineFactory12sharedEngineEv @ 20 NONAME
 	_ZN15MpEngineFactory16staticMetaObjectE @ 21 NONAME DATA 16
-	_ZN15MpEngineFactory18createSharedEngineE4TUidN8MpEngine10EngineModeE @ 22 NONAME
+	_ZN15MpEngineFactory18createSharedEngineEjN8MpEngine10EngineModeE @ 22 NONAME
 	_ZN15MpEngineFactory19getStaticMetaObjectEv @ 23 NONAME
 	_ZN15MpEngineFactory20createIsolatedEngineEN8MpEngine10EngineModeE @ 24 NONAME
 	_ZN15MpEngineFactory5closeEv @ 25 NONAME
@@ -30,7 +30,7 @@
 	_ZN15MpEngineFactoryD0Ev @ 29 NONAME
 	_ZN15MpEngineFactoryD1Ev @ 30 NONAME
 	_ZN15MpEngineFactoryD2Ev @ 31 NONAME
-	_ZN8MpEngine10initializeE4TUidNS_10EngineModeE @ 32 NONAME
+	_ZN8MpEngine10initializeEjNS_10EngineModeE @ 32 NONAME
 	_ZN8MpEngine10setBalanceEi @ 33 NONAME
 	_ZN8MpEngine10setShuffleEb @ 34 NONAME
 	_ZN8MpEngine10shuffleAllEv @ 35 NONAME
@@ -54,89 +54,93 @@
 	_ZN8MpEngine12playbackDataEv @ 53 NONAME
 	_ZN8MpEngine12skipBackwardEv @ 54 NONAME
 	_ZN8MpEngine12songsDeletedEb @ 55 NONAME
-	_ZN8MpEngine13deleteStartedE18TCollectionContexti @ 56 NONAME
-	_ZN8MpEngine13findPlaylistsER11QStringList @ 57 NONAME
-	_ZN8MpEngine13playlistSavedEb @ 58 NONAME
-	_ZN8MpEngine14collectionDataEv @ 59 NONAME
-	_ZN8MpEngine14createPlaylistER7QStringR5QListIiEP19MpMpxCollectionData @ 60 NONAME
-	_ZN8MpEngine14decreaseVolumeEv @ 61 NONAME
-	_ZN8MpEngine14equalizerReadyEv @ 62 NONAME
-	_ZN8MpEngine14findAlbumSongsEi @ 63 NONAME
-	_ZN8MpEngine14handleUsbEventE12MpxUsbEvents @ 64 NONAME
-	_ZN8MpEngine14increaseVolumeEv @ 65 NONAME
-	_ZN8MpEngine14libraryUpdatedEv @ 66 NONAME
-	_ZN8MpEngine14openCollectionE18TCollectionContext @ 67 NONAME
-	_ZN8MpEngine14playAlbumSongsEiiP19MpMpxCollectionData @ 68 NONAME
-	_ZN8MpEngine14refreshLibraryEb @ 69 NONAME
-	_ZN8MpEngine14renamePlaylistER7QString @ 70 NONAME
-	_ZN8MpEngine14renamePlaylistER7QStringi @ 71 NONAME
-	_ZN8MpEngine14saveToPlaylistEiR5QListIiE @ 72 NONAME
-	_ZN8MpEngine15aboutToAddSongsEi @ 73 NONAME
-	_ZN8MpEngine15handleDiskEventE13MpxDiskEvents @ 74 NONAME
-	_ZN8MpEngine15handleScanEndedEii @ 75 NONAME
-	_ZN8MpEngine15reorderPlaylistEiiii @ 76 NONAME
-	_ZN8MpEngine16disableEqualizerEv @ 77 NONAME
-	_ZN8MpEngine16loadActivityDataERK10QByteArray @ 78 NONAME
-	_ZN8MpEngine16playlistsRenamedEb @ 79 NONAME
-	_ZN8MpEngine16reopenCollectionEv @ 80 NONAME
-	_ZN8MpEngine16saveActivityDataER10QByteArray @ 81 NONAME
-	_ZN8MpEngine16startSeekForwardEv @ 82 NONAME
-	_ZN8MpEngine16staticMetaObjectE @ 83 NONAME DATA 16
-	_ZN8MpEngine17handleDeleteEndedEb @ 84 NONAME
-	_ZN8MpEngine17handleScanStartedEv @ 85 NONAME
-	_ZN8MpEngine17restorePathFailedEv @ 86 NONAME
-	_ZN8MpEngine17startSeekBackwardEv @ 87 NONAME
-	_ZN8MpEngine17verifyUsbBlockingEb @ 88 NONAME
-	_ZN8MpEngine18openCollectionItemEi @ 89 NONAME
-	_ZN8MpEngine19getStaticMetaObjectEv @ 90 NONAME
-	_ZN8MpEngine19handleDeleteStartedE18TCollectionContexti @ 91 NONAME
-	_ZN8MpEngine19retrieveSongDetailsEi @ 92 NONAME
-	_ZN8MpEngine20checkForSystemEventsEv @ 93 NONAME
-	_ZN8MpEngine20handleEqualizerReadyEv @ 94 NONAME
-	_ZN8MpEngine20handleUsbMtpEndEventEv @ 95 NONAME
-	_ZN8MpEngine20libraryAboutToUpdateEv @ 96 NONAME
-	_ZN8MpEngine21handleUsbMtpNotActiveEv @ 97 NONAME
-	_ZN8MpEngine21saveToCurrentPlaylistER5QListIiEP19MpMpxCollectionData @ 98 NONAME
-	_ZN8MpEngine21unableToCotinueDueUSBEv @ 99 NONAME
-	_ZN8MpEngine21volumePropertyChangedEN8MpCommon16MpVolumePropertyEi @ 100 NONAME
-	_ZN8MpEngine22changeUsbBlockingStateENS_16UsbBlockingStateE @ 101 NONAME
-	_ZN8MpEngine22handleUsbMtpStartEventEv @ 102 NONAME
-	_ZN8MpEngine22openIsolatedCollectionE18TCollectionContext @ 103 NONAME
-	_ZN8MpEngine23cancelCollectionRequestEv @ 104 NONAME
-	_ZN8MpEngine24collectionPlaylistOpenedEv @ 105 NONAME
-	_ZN8MpEngine24containerContentsChangedEv @ 106 NONAME
-	_ZN8MpEngine24isolatedCollectionOpenedEP19MpMpxCollectionData @ 107 NONAME
-	_ZN8MpEngine25releaseIsolatedCollectionEv @ 108 NONAME
-	_ZN8MpEngine25usbSynchronizationStartedEv @ 109 NONAME
-	_ZN8MpEngine26usbSynchronizationFinishedEv @ 110 NONAME
-	_ZN8MpEngine28handleUsbMassStorageEndEventEv @ 111 NONAME
-	_ZN8MpEngine30handleUsbMassStorageStartEventEv @ 112 NONAME
-	_ZN8MpEngine4backEv @ 113 NONAME
-	_ZN8MpEngine4muteEv @ 114 NONAME
-	_ZN8MpEngine4playEv @ 115 NONAME
-	_ZN8MpEngine4stopEv @ 116 NONAME
-	_ZN8MpEngine5pauseEv @ 117 NONAME
-	_ZN8MpEngine6unmuteEv @ 118 NONAME
-	_ZN8MpEngine7balanceEv @ 119 NONAME
-	_ZN8MpEngine8loudnessEv @ 120 NONAME
-	_ZN8MpEngine8songDataEv @ 121 NONAME
-	_ZN8MpEngine9getVolumeEv @ 122 NONAME
-	_ZN8MpEngine9playPauseEv @ 123 NONAME
-	_ZN8MpEngine9setRepeatEb @ 124 NONAME
-	_ZN8MpEngine9setVolumeEi @ 125 NONAME
-	_ZN8MpEngineC1Ev @ 126 NONAME
-	_ZN8MpEngineC2Ev @ 127 NONAME
-	_ZN8MpEngineD0Ev @ 128 NONAME
-	_ZN8MpEngineD1Ev @ 129 NONAME
-	_ZN8MpEngineD2Ev @ 130 NONAME
-	_ZNK13MpSongScanner10metaObjectEv @ 131 NONAME
-	_ZNK15MpEngineFactory10metaObjectEv @ 132 NONAME
-	_ZNK8MpEngine10metaObjectEv @ 133 NONAME
-	_ZTI13MpSongScanner @ 134 NONAME
-	_ZTI15MpEngineFactory @ 135 NONAME
-	_ZTI8MpEngine @ 136 NONAME
-	_ZTV13MpSongScanner @ 137 NONAME
-	_ZTV15MpEngineFactory @ 138 NONAME
-	_ZTV8MpEngine @ 139 NONAME
-	_ZN8MpEngine13corruptedStopEv @ 140 NONAME
+	_ZN8MpEngine13corruptedStopEv @ 56 NONAME
+	_ZN8MpEngine13deleteStartedE18TCollectionContexti @ 57 NONAME
+	_ZN8MpEngine13findPlaylistsER11QStringList @ 58 NONAME
+	_ZN8MpEngine13playlistSavedEb @ 59 NONAME
+	_ZN8MpEngine14collectionDataEv @ 60 NONAME
+	_ZN8MpEngine14createPlaylistER7QStringR5QListIiEP19MpMpxCollectionData @ 61 NONAME
+	_ZN8MpEngine14decreaseVolumeEv @ 62 NONAME
+	_ZN8MpEngine14equalizerReadyEv @ 63 NONAME
+	_ZN8MpEngine14findAlbumSongsEi @ 64 NONAME
+	_ZN8MpEngine14handleUsbEventE12MpxUsbEvents @ 65 NONAME
+	_ZN8MpEngine14increaseVolumeEv @ 66 NONAME
+	_ZN8MpEngine14libraryUpdatedEv @ 67 NONAME
+	_ZN8MpEngine14openCollectionE18TCollectionContext @ 68 NONAME
+	_ZN8MpEngine14playAlbumSongsEiiP19MpMpxCollectionData @ 69 NONAME
+	_ZN8MpEngine14refreshLibraryEb @ 70 NONAME
+	_ZN8MpEngine14renamePlaylistER7QString @ 71 NONAME
+	_ZN8MpEngine14renamePlaylistER7QStringi @ 72 NONAME
+	_ZN8MpEngine14saveToPlaylistEiR5QListIiE @ 73 NONAME
+	_ZN8MpEngine15aboutToAddSongsEi @ 74 NONAME
+	_ZN8MpEngine15handleDiskEventE13MpxDiskEvents @ 75 NONAME
+	_ZN8MpEngine15handleScanEndedEii @ 76 NONAME
+	_ZN8MpEngine15reorderPlaylistEiiii @ 77 NONAME
+	_ZN8MpEngine16disableEqualizerEv @ 78 NONAME
+	_ZN8MpEngine16loadActivityDataERK10QByteArray @ 79 NONAME
+	_ZN8MpEngine16playlistsRenamedEb @ 80 NONAME
+	_ZN8MpEngine16reopenCollectionEv @ 81 NONAME
+	_ZN8MpEngine16saveActivityDataER10QByteArray @ 82 NONAME
+	_ZN8MpEngine16startSeekForwardEv @ 83 NONAME
+	_ZN8MpEngine16staticMetaObjectE @ 84 NONAME DATA 16
+	_ZN8MpEngine17handleDeleteEndedEb @ 85 NONAME
+	_ZN8MpEngine17handleScanStartedEv @ 86 NONAME
+	_ZN8MpEngine17restorePathFailedEv @ 87 NONAME
+	_ZN8MpEngine17startSeekBackwardEv @ 88 NONAME
+	_ZN8MpEngine17verifyUsbBlockingEb @ 89 NONAME
+	_ZN8MpEngine18autoRefreshLibraryEb @ 90 NONAME
+	_ZN8MpEngine18openCollectionItemEi @ 91 NONAME
+	_ZN8MpEngine19getStaticMetaObjectEv @ 92 NONAME
+	_ZN8MpEngine19handleCorruptedStopEb @ 93 NONAME
+	_ZN8MpEngine19handleDeleteStartedE18TCollectionContexti @ 94 NONAME
+	_ZN8MpEngine19retrieveSongDetailsEi @ 95 NONAME
+	_ZN8MpEngine20checkForSystemEventsEv @ 96 NONAME
+	_ZN8MpEngine20handleEqualizerReadyEv @ 97 NONAME
+	_ZN8MpEngine20handleUsbMtpEndEventEv @ 98 NONAME
+	_ZN8MpEngine20libraryAboutToUpdateEv @ 99 NONAME
+	_ZN8MpEngine20libraryUpdateStartedEv @ 100 NONAME
+	_ZN8MpEngine21handleUsbMtpNotActiveEv @ 101 NONAME
+	_ZN8MpEngine21saveToCurrentPlaylistER5QListIiEP19MpMpxCollectionData @ 102 NONAME
+	_ZN8MpEngine21unableToCotinueDueUSBEv @ 103 NONAME
+	_ZN8MpEngine21volumePropertyChangedEN8MpCommon16MpVolumePropertyEi @ 104 NONAME
+	_ZN8MpEngine22changeUsbBlockingStateENS_16UsbBlockingStateE @ 105 NONAME
+	_ZN8MpEngine22handleUsbMtpStartEventEv @ 106 NONAME
+	_ZN8MpEngine22openIsolatedCollectionE18TCollectionContext @ 107 NONAME
+	_ZN8MpEngine23cancelCollectionRequestEv @ 108 NONAME
+	_ZN8MpEngine24collectionPlaylistOpenedEv @ 109 NONAME
+	_ZN8MpEngine24containerContentsChangedEv @ 110 NONAME
+	_ZN8MpEngine24isolatedCollectionOpenedEP19MpMpxCollectionData @ 111 NONAME
+	_ZN8MpEngine25releaseIsolatedCollectionEv @ 112 NONAME
+	_ZN8MpEngine25usbSynchronizationStartedEv @ 113 NONAME
+	_ZN8MpEngine26usbSynchronizationFinishedEv @ 114 NONAME
+	_ZN8MpEngine28handleUsbMassStorageEndEventEv @ 115 NONAME
+	_ZN8MpEngine30handleUsbMassStorageStartEventEv @ 116 NONAME
+	_ZN8MpEngine4backEv @ 117 NONAME
+	_ZN8MpEngine4muteEv @ 118 NONAME
+	_ZN8MpEngine4playEv @ 119 NONAME
+	_ZN8MpEngine4stopEv @ 120 NONAME
+	_ZN8MpEngine5pauseEv @ 121 NONAME
+	_ZN8MpEngine6unmuteEv @ 122 NONAME
+	_ZN8MpEngine7balanceEv @ 123 NONAME
+	_ZN8MpEngine8loudnessEv @ 124 NONAME
+	_ZN8MpEngine8songDataEv @ 125 NONAME
+	_ZN8MpEngine9getVolumeEv @ 126 NONAME
+	_ZN8MpEngine9playPauseEv @ 127 NONAME
+	_ZN8MpEngine9setRepeatEb @ 128 NONAME
+	_ZN8MpEngine9setVolumeEi @ 129 NONAME
+	_ZN8MpEngineC1Ev @ 130 NONAME
+	_ZN8MpEngineC2Ev @ 131 NONAME
+	_ZN8MpEngineD0Ev @ 132 NONAME
+	_ZN8MpEngineD1Ev @ 133 NONAME
+	_ZN8MpEngineD2Ev @ 134 NONAME
+	_ZNK13MpSongScanner10metaObjectEv @ 135 NONAME
+	_ZNK15MpEngineFactory10metaObjectEv @ 136 NONAME
+	_ZNK8MpEngine10metaObjectEv @ 137 NONAME
+	_ZTI13MpSongScanner @ 138 NONAME
+	_ZTI15MpEngineFactory @ 139 NONAME
+	_ZTI8MpEngine @ 140 NONAME
+	_ZTV13MpSongScanner @ 141 NONAME
+	_ZTV15MpEngineFactory @ 142 NONAME
+	_ZTV8MpEngine @ 143 NONAME
+	_ZN13MpSongScanner17handleScanStartedEv @ 144 NONAME
 
--- a/mpengine/inc/mpmpxcollectionframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxcollectionframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -37,7 +37,7 @@
 
 public:
 
-    explicit MpMpxCollectionFrameworkWrapper( TUid hostUid=TUid::Uid(MpCommon::KMusicPlayerUid),
+    explicit MpMpxCollectionFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid,
         MpSongData *songData=0, QObject *parent=0 );
     virtual ~MpMpxCollectionFrameworkWrapper();
 
--- a/mpengine/inc/mpmpxcollectionframeworkwrapper_p.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxcollectionframeworkwrapper_p.h	Fri Sep 17 08:28:52 2010 +0300
@@ -59,7 +59,7 @@
     explicit MpMpxCollectionFrameworkWrapperPrivate( MpMpxCollectionFrameworkWrapper *wrapper );
     virtual ~MpMpxCollectionFrameworkWrapperPrivate();
 
-    void init( TUid hostUid, MpSongData *songData );
+    void init( quint32 clientSecureId, MpSongData *songData );
     void openCollection( TCollectionContext context );
     void openCollectionItem( int index );
     void reopenCollection();
--- a/mpengine/inc/mpmpxharvesterframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxharvesterframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -32,7 +32,7 @@
 
 public:
 
-    explicit MpMpxHarvesterFrameworkWrapper( TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
+    explicit MpMpxHarvesterFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid, QObject *parent=0 );
     virtual ~MpMpxHarvesterFrameworkWrapper();
 
     void scan();
--- a/mpengine/inc/mpmpxharvesterframeworkwrapper_p.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxharvesterframeworkwrapper_p.h	Fri Sep 17 08:28:52 2010 +0300
@@ -35,7 +35,7 @@
     explicit MpMpxHarvesterFrameworkWrapperPrivate( MpMpxHarvesterFrameworkWrapper *wrapper );
     virtual ~MpMpxHarvesterFrameworkWrapperPrivate();
 
-    void init( TUid hostUid );
+    void init( quint32 clientSecureId );
     void scan();
     void cancelScan();
     void checkForSystemEvents();
@@ -64,7 +64,7 @@
     TInt                            iNumItemsAdded;
     TBool                           iScanning;
     TInt                            iPreviousBroadCastMsg;
-    TUid                            mHostUid;
+    TUid                            iHostUid;
 
 };
 
--- a/mpengine/inc/mpmpxplaybackframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxplaybackframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -37,7 +37,7 @@
 
 public:
 
-    explicit MpMpxPlaybackFrameworkWrapper( TUid hostUid=TUid::Uid(MpCommon::KMusicPlayerUid),
+    explicit MpMpxPlaybackFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid,
         MpSongData *songData=0, QObject *parent=0 );
     virtual ~MpMpxPlaybackFrameworkWrapper();
     
@@ -51,8 +51,8 @@
 signals:
 
 	void volumePropertyChanged( MpCommon::MpVolumeProperty property, int value );
-    void corruptedStop();
-    void fileCorrupted(int fileId);
+    void corruptedStop( bool lastSong );
+    void fileCorrupted( int fileId );
 
 public slots:
     
--- a/mpengine/inc/mpmpxplaybackframeworkwrapper_p.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/inc/mpmpxplaybackframeworkwrapper_p.h	Fri Sep 17 08:28:52 2010 +0300
@@ -39,7 +39,7 @@
     explicit MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *wrapper );
     virtual ~MpMpxPlaybackFrameworkWrapperPrivate();
 
-    void init( TUid hostUid, MpSongData *songData );
+    void init( quint32 clientSecureId, MpSongData *songData );
 
     void play( QString aFilename );
     void play( const XQSharableFile& file );
--- a/mpengine/mpengine.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/mpengine.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -45,7 +45,8 @@
         -lxqserviceutil \
         -laudioequalizerutility \
         -lmediaclientaudio \
-        -lefsrv
+        -lefsrv \
+        -lmpapplicationmonitor
 
 # Input
 HEADERS += ../inc/mpenginefactory.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+mpengine.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpengine.iby)
+
--- a/mpengine/src/mpengine.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -28,6 +28,7 @@
 #include "mpsettingsmanager.h"
 #include "mpsongscanner.h"
 #include "mpsongdata.h"
+#include "mpapplicationmonitor.h"
 
 /*!
     \class MpEngine
@@ -207,6 +208,7 @@
       mEqualizerWrapper(0),
       mCurrentPresetIndex(0),
       mSongData(0),
+      mApplicationMonitor(0),
       mUsbBlockingState(USB_NotConnected),
       mPreviousUsbState(USB_NotConnected),
       mHandleMediaCommands(true)
@@ -227,22 +229,23 @@
     delete mEqualizerWrapper;
     delete mSongScanner;
     delete mSongData;
+    delete mApplicationMonitor;
     TX_EXIT
 }
 
 /*!
  Initialize engine
  */
-void MpEngine::initialize( TUid hostUid, EngineMode mode )
+void MpEngine::initialize( quint32 clientSecureId, EngineMode mode )
 {
-    TX_ENTRY_ARGS("hostUid=" << hostUid.iUid << ", mode=" << mode);
-    mHostUid = hostUid;
+    TX_ENTRY_ARGS("clientSecureId=" << clientSecureId << ", mode=" << mode);
 
+    mEngineMode = mode;
     if ( StandAlone == mode ) {
         mSongData = new MpSongData();
 
         // Harvesting Wrapper
-        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mHostUid );
+        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( clientSecureId );
         connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
                  this, SLOT( handleScanStarted() ), 
 				 Qt::QueuedConnection );
@@ -259,7 +262,7 @@
 				 Qt::QueuedConnection );
 
         // Collection Wrapper
-        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid, mSongData );
+        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, mSongData );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
                  this, SIGNAL( collectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
@@ -292,11 +295,11 @@
 				 Qt::QueuedConnection );
 
         // Playback Wrapper
-        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData );
+        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( clientSecureId, mSongData );
         connect( this, SIGNAL( libraryUpdated() ),
                  mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) );
-        connect( mMpxPlaybackWrapper, SIGNAL ( corruptedStop() ),
-                 this, SIGNAL( corruptedStop() ));
+        connect( mMpxPlaybackWrapper, SIGNAL ( corruptedStop(bool) ),
+                 this, SLOT( handleCorruptedStop(bool) ));
 		connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
                  this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
 
@@ -305,7 +308,7 @@
     }
     else if ( Fetch == mode ) {
         // Harvesting Wrapper
-        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mHostUid );
+        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( clientSecureId );
         connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
                  this, SLOT( handleScanStarted() ), 
 				 Qt::QueuedConnection );
@@ -322,7 +325,7 @@
 				 Qt::QueuedConnection );
 
         // Collection Wrapper
-        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid, 0 );
+        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, 0 );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
                  this, SIGNAL( collectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
@@ -331,18 +334,18 @@
         mMpxCollectionWrapper->setShuffleFeatureEnabled( false );
 
         // Playback Wrapper
-        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, 0 );
+        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( clientSecureId, 0 );
         connect( this, SIGNAL( libraryUpdated() ),
                  mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) );
-	    connect( mMpxPlaybackWrapper, SIGNAL ( corruptedStop() ),
-				 this, SIGNAL( corruptedStop() ));
+        connect( mMpxPlaybackWrapper, SIGNAL ( corruptedStop(bool) ),
+                 this, SLOT( handleCorruptedStop(bool) ));				 
 	    connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
                  this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
 
     }
     else if ( MediaBrowsing == mode ) {
         // Collection Wrapper
-        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid, 0 );
+        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, 0 );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
                  this, SIGNAL( collectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
@@ -353,10 +356,32 @@
     else if ( Embedded == mode ) {
         mSongData = new MpSongData();
         // Playback Wrapper
-        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData );
+        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( clientSecureId, mSongData );
         connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
                  this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
+        connect( mMpxPlaybackWrapper, SIGNAL ( corruptedStop(bool) ),
+                 this, SLOT( handleCorruptedStop(bool) ));
+    }
+    else if ( HomeScreen == mode ) {
+        // Harvesting Wrapper
+        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( clientSecureId );
+        connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
+                 this, SLOT( handleScanStarted() ),
+                 Qt::QueuedConnection );
+        connect( mMpxHarvesterWrapper, SIGNAL( scanEnded(int, int) ),
+                 this, SLOT( handleScanEnded(int, int) ),
+                 Qt::QueuedConnection );
+        qRegisterMetaType<MpxDiskEvents>("MpxDiskEvents");
+        connect( mMpxHarvesterWrapper, SIGNAL( diskEvent(MpxDiskEvents) ),
+                 this, SLOT( handleDiskEvent(MpxDiskEvents) ),
+                 Qt::QueuedConnection );
+        qRegisterMetaType<MpxUsbEvents>("MpxUsbEvents");
+        connect( mMpxHarvesterWrapper, SIGNAL( usbEvent(MpxUsbEvents) ),
+                 this, SLOT( handleUsbEvent(MpxUsbEvents) ),
+                 Qt::QueuedConnection );
 
+        // Playback Wrapper
+        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( clientSecureId, mSongData );
     }
     TX_EXIT
 }
@@ -428,6 +453,7 @@
 void MpEngine::handleScanStarted() {
     TX_ENTRY
     mHandleMediaCommands = false;
+    emit libraryUpdateStarted();
     TX_EXIT
 }
 
@@ -463,7 +489,7 @@
             break;
         case DiskInserted:
             if ( mUsbBlockingState == USB_NotConnected ) {
-                refreshLibrary( true );
+                autoRefreshLibrary(true);
             }
             else if ( mUsbBlockingState == USB_Connected ) {
                 emit libraryUpdated();
@@ -528,7 +554,7 @@
     changeUsbBlockingState( USB_NotConnected );
     emit usbBlocked(false);
     emit usbSynchronizationFinished();
-    refreshLibrary();
+    autoRefreshLibrary();
 
     TX_EXIT
 }
@@ -594,6 +620,29 @@
 }
 
 /*!
+ Internal
+ */
+void MpEngine::autoRefreshLibrary( bool automaticRequest )
+{
+    TX_ENTRY_ARGS( "mEngineMode=" << mEngineMode );
+    if ( mEngineMode == StandAlone ) {
+        refreshLibrary(automaticRequest);
+    }
+    else if ( mEngineMode == Fetch ) {
+        if ( !mApplicationMonitor ) {
+            mApplicationMonitor = new MpApplicationMonitor();
+        }
+        if ( !mApplicationMonitor->isApplicationRunning() ) {
+            // In Fetcher mode, only perform library update when main Music
+            // Player application is not running. Otherwise, let the main
+            // application take care.
+            refreshLibrary(automaticRequest);
+        }
+    }
+    TX_EXIT
+}
+
+/*!
 -------------------------------------------------------------------------------
     Collection related
 -------------------------------------------------------------------------------
@@ -1030,6 +1079,22 @@
 }
 
 /*!
+ Slot to be called when playback encounters a corrupted song. \a lastSong
+    indicates whether this is the last song of the playlist.
+ */
+void MpEngine::handleCorruptedStop( bool lastSong )
+{
+    if ( lastSong ) {
+        emit corruptedStop();
+    }
+    else {
+        if ( mEngineMode == StandAlone ) {
+            skipForward();
+        }
+    }
+}
+
+/*!
  Returns pointer to MpSongData, which is the song data for Details View.
  */
 MpSongData *MpEngine::songData()
--- a/mpengine/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -52,14 +52,14 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid hostUid , MpEngine::EngineMode mode )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 clientSecureId, MpEngine::EngineMode mode )
 {
     if ( !instance()->mSharedEngine ) {
         instance()->mSharedEngine = new MpEngine();
-        instance()->mSharedEngine->initialize( hostUid, mode );
+        instance()->mSharedEngine->initialize( clientSecureId, mode );
     }
     return instance()->mSharedEngine;
 }
@@ -70,7 +70,7 @@
 MpEngine *MpEngineFactory::createIsolatedEngine( MpEngine::EngineMode mode )
 {
     instance()->mEngines.append( new MpEngine() );
-    instance()->mEngines.last()->initialize( TUid::Uid( MpCommon::KMusicPlayerUid + instance()->mEngines.count() ), mode );
+    instance()->mEngines.last()->initialize( (MpCommon::KMusicPlayerUid + instance()->mEngines.count()), mode );
     return instance()->mEngines.last();
 }
 
--- a/mpengine/src/mpmpxcollectionframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxcollectionframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -91,11 +91,11 @@
 /*!
  Constructs the utility wrapper.
  */
-MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( TUid hostUid, MpSongData *songData, QObject *parent )
+MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( quint32 clientSecureId, MpSongData *songData, QObject *parent )
     : QObject( parent )
 {
     d_ptr = new MpMpxCollectionFrameworkWrapperPrivate( this );
-    d_ptr->init( hostUid, songData );
+    d_ptr->init( clientSecureId, songData );
 }
 
 /*!
--- a/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -129,10 +129,10 @@
 /*!
  \internal
  */
-void MpMpxCollectionFrameworkWrapperPrivate::init( TUid hostUid, MpSongData *songData )
+void MpMpxCollectionFrameworkWrapperPrivate::init( quint32 clientSecureId, MpSongData *songData )
 {
     TX_ENTRY
-    iHostUid = hostUid;
+    iHostUid = TUid::Uid( clientSecureId );
     iSongData = songData;
     TRAPD( err, DoInitL() );
     if ( err != KErrNone ) {
@@ -1423,13 +1423,19 @@
     TX_ENTRY
     CMPXCollectionPath* cpath = iCollectionUtility->Collection().PathL();
     CleanupStack::PushL( cpath );
-    CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
-    CleanupStack::PushL( playList );
-    playList->SetShuffleL( true, false );
-    MpSettingsManager::setShuffle( true );
-    createPlaybackUtilityL();
-    iPlaybackUtility->InitL( *playList, ETrue );
-    CleanupStack::PopAndDestroy( playList );
+    if ( cpath->Count() > 0 ) {
+        CMPXCollectionPlaylist* playList = CMPXCollectionPlaylist::NewL( *cpath );
+        CleanupStack::PushL( playList );
+        playList->SetShuffleL( true, false );
+        MpSettingsManager::setShuffle( true );
+        createPlaybackUtilityL();
+        iPlaybackUtility->InitL( *playList, ETrue );
+        CleanupStack::PopAndDestroy( playList );
+    }
+    else {
+        //There were no songs to be played so switch back to collection view
+        emit q_ptr->restorePathFailed();
+    }
     CleanupStack::PopAndDestroy( cpath );
     TX_EXIT
 }
--- a/mpengine/src/mpmpxharvesterframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxharvesterframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -65,11 +65,11 @@
 /*!
  Constructs the utility wrapper.
  */
-MpMpxHarvesterFrameworkWrapper::MpMpxHarvesterFrameworkWrapper( TUid hostUid, QObject *parent )
+MpMpxHarvesterFrameworkWrapper::MpMpxHarvesterFrameworkWrapper( quint32 clientSecureId, QObject *parent )
     : QObject( parent )
 {
     d_ptr = new MpMpxHarvesterFrameworkWrapperPrivate( this );
-    d_ptr->init( hostUid );
+    d_ptr->init( clientSecureId );
 }
 
 /*!
--- a/mpengine/src/mpmpxharvesterframeworkwrapper_p.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxharvesterframeworkwrapper_p.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -77,9 +77,9 @@
 /*!
  \internal
  */
-void MpMpxHarvesterFrameworkWrapperPrivate::init( TUid hostUid )
+void MpMpxHarvesterFrameworkWrapperPrivate::init( quint32 clientSecureId )
 {
-    mHostUid = hostUid;
+    iHostUid = TUid::Uid( clientSecureId );
     TRAPD( err, DoInitL() );
     if ( err != KErrNone ) {
         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
@@ -176,7 +176,7 @@
 void MpMpxHarvesterFrameworkWrapperPrivate::DoInitL()
 {
     TX_ENTRY
-    iCollectionUtility = MMPXCollectionUtility::NewL( this, mHostUid );
+    iCollectionUtility = MMPXCollectionUtility::NewL( this, iHostUid );
     iHarvesterUtility = CMPXHarvesterFactory::NewL();
     iHarvesterUtility->CheckForSystemEventsL();
     TX_EXIT
--- a/mpengine/src/mpmpxisolatedcollectionhelper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxisolatedcollectionhelper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -21,12 +21,15 @@
 #include <mpxcollectionopenutility.h>
 
 #include "mpmpxisolatedcollectionhelper.h"
-#include "mptrace.h"
+#include "mpxlog.h"
+
+
 
 const TInt KIncrementalDelay = 0;
 const TInt KIncrementalFetchBlockSize = 1000;
 
 
+
 /*!
     \class CMpMpxIsolatedCollectionHelper
     \brief Helper class to open an isolated collection.
@@ -38,45 +41,44 @@
  \internal
  Two-phased constructor.
  */
-CMpMpxIsolatedCollectionHelper* CMpMpxIsolatedCollectionHelper::NewL(
+CMpMpxIsolatedCollectionHelper* CMpMpxIsolatedCollectionHelper::NewL( 
         MMpMpxIsolatedCollectionHelperObserver* aObserver )
-{
+    {
     CMpMpxIsolatedCollectionHelper* self = NewLC( aObserver );
     CleanupStack::Pop( self );
     return self;
-}
+    }
 
 /*!
  \internal
  Two-phased constructor.
  */
-CMpMpxIsolatedCollectionHelper* CMpMpxIsolatedCollectionHelper::NewLC(
+CMpMpxIsolatedCollectionHelper* CMpMpxIsolatedCollectionHelper::NewLC( 
         MMpMpxIsolatedCollectionHelperObserver* aObserver )
-{
+    {
     CMpMpxIsolatedCollectionHelper* self =
             new ( ELeave ) CMpMpxIsolatedCollectionHelper( aObserver );
     CleanupStack::PushL( self );
     self->ConstructL();
     return self;
-}
+    }
 
 /*!
  \internal
  Destructor
  */
 CMpMpxIsolatedCollectionHelper::~CMpMpxIsolatedCollectionHelper()
-{
+    {
     delete iIncrementalOpenUtil;
-}
-
+    }
+    
 
 /*!
  \internal
  Opens an isolated collection with the /a path.
  */
 void CMpMpxIsolatedCollectionHelper::OpenCollectionL( CMPXCollectionPath& aPath, TInt aIndex, MpOpenMode aMode )
-{
-    TX_ENTRY
+    {
     //Using incremental open to open the collection.
     iOpenMode = aMode;
     // Cancel any reads
@@ -91,8 +93,7 @@
     iIncrementalOpenUtil->StartL( aPath, ary, KIncrementalFetchBlockSize,
                                   aIndex, CMPXCollectionOpenUtility::EFetchDown );
     CleanupStack::PopAndDestroy( &attrs );
-    TX_EXIT
-}
+    }
 
 /*!
  \internal
@@ -102,84 +103,79 @@
     : iObserver( aObserver ),
       iIncrementalOpenUtil( 0 ),
       iFirstIncrementalOpen( EFalse )
-{
-}
+    {
+    }
 
 /*!
  \internal
  Leaving constructor
  */
 void CMpMpxIsolatedCollectionHelper::ConstructL()
-{
+    {
     iIncrementalOpenUtil = CMPXCollectionOpenUtility::NewL( this, KMcModeIsolated );
-}
+
+    }
 
 
 /*!
  \internal
  reimp
  */
-void CMpMpxIsolatedCollectionHelper::HandleOpenL(
+void CMpMpxIsolatedCollectionHelper::HandleOpenL( 
     const CMPXMedia& aEntries,
-    TInt aIndex,
-    TBool aComplete,
+    TInt /*aIndex*/,
+    TBool /*aComplete*/,
     TInt aError )
-{
-    Q_UNUSED( aIndex );
-    Q_UNUSED( aComplete );
-    TX_ENTRY_ARGS( "aError=" << aError << "aComplete=" << aComplete );
-    if ( iFirstIncrementalOpen ) {
+    {
+    if ( iFirstIncrementalOpen )
+        {
         CMPXCollectionPath* cPath = NULL;
         iFirstIncrementalOpen = EFalse;
         switch( iOpenMode ) {
-            case RestorePathMode:
-                cPath = iIncrementalOpenUtil->PathL();
-                CleanupStack::PushL( cPath );
-                iObserver->HandleIsolatedOpenRestorePathL( *cPath, aError );
-                CleanupStack::PopAndDestroy( cPath );
-                break;
-            case DefaultMode:
-            default:
-                iObserver->HandleIsolatedOpenL( aEntries, aError );
-                break;
-            }
+        case RestorePathMode:
+            cPath = iIncrementalOpenUtil->PathL();
+            CleanupStack::PushL( cPath );
+            iObserver->HandleIsolatedOpenRestorePathL( *cPath, aError );
+            CleanupStack::PopAndDestroy( cPath );
+
+            break;
+        case DefaultMode:
+        default:
+            iObserver->HandleIsolatedOpenL( aEntries, aError );
+            break;
+        }
+        
+        }
     }
-    TX_EXIT
-}
 
 /*!
  \internal
   reimp
  */
-void CMpMpxIsolatedCollectionHelper::HandleOpenL(
-    const CMPXCollectionPlaylist& aPlaylist,
-    TInt aError )
-{
-    Q_UNUSED( aPlaylist );
-    Q_UNUSED( aError );
-}
+void CMpMpxIsolatedCollectionHelper::HandleOpenL( 
+    const CMPXCollectionPlaylist& /*aPlaylist*/,
+    TInt /*aError*/ )
+    {
+    }
 
 /*!
  \internal
   reimp
  */
-void CMpMpxIsolatedCollectionHelper::HandleCollectionMessage(
-    CMPXMessage* aMsg,
-    TInt aErr )
-{
-    Q_UNUSED( aMsg );
-    Q_UNUSED( aErr );
-}
+void CMpMpxIsolatedCollectionHelper::HandleCollectionMessage( 
+    CMPXMessage* /*aMsg*/,
+    TInt /*aErr*/ )
+    {
+    }
 
 /*!
  \internal
   reimp
  */
-void CMpMpxIsolatedCollectionHelper::HandleCollectionMediaL(
-    const CMPXMedia& aMedia,
-    TInt aError )
-{
-    Q_UNUSED( aMedia );
-    Q_UNUSED( aError );
-}
-
+void CMpMpxIsolatedCollectionHelper::HandleCollectionMediaL( 
+    const CMPXMedia& /*aMedia*/,
+    TInt /*aError*/ )
+    {
+    }
+    
+//EOF
--- a/mpengine/src/mpmpxplaybackframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxplaybackframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -36,11 +36,11 @@
  */
 
 /*!
-    \fn void corruptedStop();
+    \fn void corruptedStop( bool lastSong );
 
-    This signal is emitted when a courrpted song is discovered and is the last song of 
-    the playlist
- */
+    This signal is emitted when playback encounters a corrupted song. \a lastSong
+    indicates whether this is the last song of the playlist.
+*/
 
 /*!
     \fn void fileCorrupted(int fileId);
@@ -51,11 +51,11 @@
 /*!
  Constructs the utility wrapper.
  */
-MpMpxPlaybackFrameworkWrapper::MpMpxPlaybackFrameworkWrapper( TUid hostUid, MpSongData *songData, QObject *parent )
+MpMpxPlaybackFrameworkWrapper::MpMpxPlaybackFrameworkWrapper( quint32 clientSecureId, MpSongData *songData, QObject *parent )
     : QObject(parent)
 {
     d_ptr = new MpMpxPlaybackFrameworkWrapperPrivate(this );
-    d_ptr->init( hostUid, songData );
+    d_ptr->init( clientSecureId, songData );
 }
 
 /*!
--- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -79,10 +79,10 @@
 /*!
  \internal
  */
-void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid, MpSongData *songData )
+void MpMpxPlaybackFrameworkWrapperPrivate::init( quint32 clientSecureId, MpSongData *songData )
 {
     TX_ENTRY
-    iHostUid = hostUid;
+    iHostUid = TUid::Uid( clientSecureId );
     iSongData = songData;
     TRAPD(err, DoInitL());
     if ( err != KErrNone ) {
@@ -735,29 +735,34 @@
 {
     TX_ENTRY
     switch ( aError ) {
-                case KErrCorrupt:{
-                    MMPXSource* source( iPlaybackUtility->Source() );
-                    if ( source ){
-                        CMPXCollectionPlaylist* playlist( source->PlaylistL() );
-                        if ( playlist ){
-                            MpPlaybackData* pData = playbackData();
-                            pData->setCorrupted( playlist->Path().IdOfIndex( playlist->Index() ).iId2 );
-                            
-                            if ( playlist->Index() == ( playlist->Count()-1 ) ){
-                                //reach the end of list, pop up corrupt notification
-                                emit q_ptr->corruptedStop();
-                            }
-                            else{
-                                //corrupted song, skip to next song
-                                skipForward();
-                            }
-                        }
+        case KErrNotSupported:
+        case KErrCorrupt:{
+            MMPXSource* source( iPlaybackUtility->Source() );
+            if ( source ){
+                CMPXCollectionPlaylist* playlist( source->PlaylistL() );
+                if ( playlist ){
+                    MpPlaybackData* pData = playbackData();
+                    pData->setCorrupted( playlist->Path().IdOfIndex( playlist->Index() ).iId2 );
+                           
+                    if ( playlist->Index() == ( playlist->Count()-1 ) ){
+                        //reach the end of list, pop up corrupt notification
+                        emit q_ptr->corruptedStop(true);
                     }
-                    break;
+                    else{
+                        //corrupted song; there is more song in the playlist
+                        emit q_ptr->corruptedStop(false);
+                    }
                 }
-                default:
-                    break;
+                else{
+                    // No playlist;single file playback.
+                    emit q_ptr->corruptedStop(true);
+                }
             }
+            break;
+        }
+        default:
+            break;
+    }
     TX_EXIT
 }
 
--- a/mpengine/src/mpsongscanner.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/src/mpsongscanner.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -59,7 +59,7 @@
 {
     TX_ENTRY
     connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
-            this, SIGNAL( scanStarted() ), Qt::QueuedConnection );
+            this, SLOT( handleScanStarted() ), Qt::QueuedConnection );
     connect( mMpxHarvesterWrapper, SIGNAL( scanEnded( int, int ) ),
             this, SLOT( handleScanEnded( int, int ) ), Qt::QueuedConnection );
     connect( mMpxHarvesterWrapper, SIGNAL( scanCountChanged( int ) ), 
@@ -116,12 +116,24 @@
 }
 
 /*!
+ Slot called upon notification from MPX Harvesting FW indicating start of
+ scanning process.
+ */
+void MpSongScanner::handleScanStarted()
+{
+    TX_ENTRY
+    mScanning = true;
+    emit scanStarted();
+    TX_EXIT
+}
+
+/*!
  Slot called upon notification from MPX Harvesting FW indicating end of
  scanning process.
  */
 void MpSongScanner::handleScanEnded( int numItemsAdded, int error )
 {
-    TX_ENTRY
+    TX_ENTRY_ARGS("error=" << error << ", numItemsAdded=" << numItemsAdded);
     if (error == KErrDiskFull) {
         emit scanFinished( ScanErrorDiskFull, 0 );
         mScanning = false;
--- a/mpengine/tsrc/unittest_mpengine/inc/unittest_mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/inc/unittest_mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -97,7 +97,7 @@
     }
     static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode ) {
         instance()->mEngines.append( new MpEngine() );
-        instance()->mEngines.last()->initialize( TUid::Uid( MpCommon::KMusicPlayerUid + instance()->mEngines.count() ), mode );
+        instance()->mEngines.last()->initialize( (MpCommon::KMusicPlayerUid + instance()->mEngines.count()), mode );
         return instance()->mEngines.last();
     }    
     static void close() {
--- a/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxcollectionframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxcollectionframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -33,7 +33,7 @@
     
 public:
 
-    explicit MpMpxCollectionFrameworkWrapper( TUid hostUid=TUid::Uid(MpCommon::KMusicPlayerUid),
+    explicit MpMpxCollectionFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid,
         MpSongData *songData=0, QObject *parent=0 );
     virtual ~MpMpxCollectionFrameworkWrapper();
 
--- a/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxharvesterframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxharvesterframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -28,7 +28,7 @@
     Q_OBJECT
 
 public:
-    explicit MpMpxHarvesterFrameworkWrapper( TUid hostUid = TUid::Uid( MpCommon::KMusicPlayerUid ), QObject *parent=0 );
+    explicit MpMpxHarvesterFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid, QObject *parent=0 );
     virtual ~MpMpxHarvesterFrameworkWrapper();
 
     // mock functions
--- a/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxplaybackframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/inc/mpmpxplaybackframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -36,7 +36,7 @@
 
 public:
 
-    explicit MpMpxPlaybackFrameworkWrapper( TUid hostUid=TUid::Uid(MpCommon::KMusicPlayerUid),
+    explicit MpMpxPlaybackFrameworkWrapper( quint32 clientSecureId=MpCommon::KMusicPlayerUid,
         MpSongData *songData=0, QObject *parent=0 );
     virtual ~MpMpxPlaybackFrameworkWrapper();
     
--- a/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxcollectionframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxcollectionframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -21,10 +21,10 @@
 /*!
  Constructs the utility wrapper.
  */
-MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( TUid hostUid, MpSongData *songData, QObject *parent )
+MpMpxCollectionFrameworkWrapper::MpMpxCollectionFrameworkWrapper( quint32 clientSecureId, MpSongData *songData, QObject *parent )
     : QObject( parent )
 {
-    Q_UNUSED(hostUid);
+    Q_UNUSED(clientSecureId);
     Q_UNUSED(songData);
 }
 
--- a/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxharvesterframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxharvesterframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -20,14 +20,14 @@
 /*!
  Stub function.
  */
-MpMpxHarvesterFrameworkWrapper::MpMpxHarvesterFrameworkWrapper( TUid hostUid, QObject *parent )
+MpMpxHarvesterFrameworkWrapper::MpMpxHarvesterFrameworkWrapper( quint32 clientSecureId, QObject *parent )
     : QObject( parent ),
       mScanRequested( false ),
       mScanning( false ),
       mScanCount( -1 ),
       mCheckSystemEventsRequested( false )
 {
-    Q_UNUSED( hostUid );
+    Q_UNUSED( clientSecureId );
 }
 
 
--- a/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxplaybackframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpengine/stub/src/mpmpxplaybackframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -30,10 +30,10 @@
 /*!
  Constructs the utility wrapper.
  */
-MpMpxPlaybackFrameworkWrapper::MpMpxPlaybackFrameworkWrapper( TUid hostUid, MpSongData *songData, QObject *parent )
+MpMpxPlaybackFrameworkWrapper::MpMpxPlaybackFrameworkWrapper( quint32 clientSecureId, MpSongData *songData, QObject *parent )
     : QObject(parent)
 {
-    Q_UNUSED(hostUid);
+    Q_UNUSED(clientSecureId);
     Q_UNUSED(songData);
 }
 
--- a/mpengine/tsrc/unittest_mpenginefactory/stub/inc/mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpenginefactory/stub/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -35,7 +35,7 @@
 
 private:
     explicit MpEngine();
-    void initialize( TUid hostUid, EngineMode mode);
+    void initialize( quint32 clientSecureId, EngineMode mode);
 
 public:
     virtual ~MpEngine();
--- a/mpengine/tsrc/unittest_mpenginefactory/stub/src/mpengine.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpenginefactory/stub/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -33,8 +33,8 @@
 /*!
  Initialize engine
  */
-void MpEngine::initialize( TUid hostUid, EngineMode mode )
+void MpEngine::initialize( quint32 clientSecureId, EngineMode mode )
 {
-    Q_UNUSED( hostUid );
+    Q_UNUSED( clientSecureId );
     Q_UNUSED( mode );
 }
--- a/mpengine/tsrc/unittest_mpmpxcollectionframeworkwrapper/src/unittest_mpmpxcollectionframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxcollectionframeworkwrapper/src/unittest_mpmpxcollectionframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -119,7 +119,7 @@
  */
 void TestMpMpxCollectionFrameworkWrapper::init()
 {
-    mTest = new MpMpxCollectionFrameworkWrapper(TUid::Uid(MpCommon::KMusicPlayerUid), mSongData);
+    mTest = new MpMpxCollectionFrameworkWrapper(MpCommon::KMusicPlayerUid, mSongData);
     mTestPrivate = mTest->d_ptr;
 }
 
@@ -803,6 +803,7 @@
     testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralEvent,TMPXCollectionMessage::EPathChanged);
     testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralType,EMcPathChangedByOpen);
     testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralData,EMcItemOpened);
+    testMessage->SetTObjectValueL<TMPXChangeEventType>(KMPXMessageChangeEventType,EMPXItemDeleted);
     mTestPrivate->DoHandleCollectionMessageL(*testMessage);
     QCOMPARE(spy.count(), 1);
 
--- a/mpengine/tsrc/unittest_mpmpxisolatedcollectionhelper/src/unittest_mpmpxisolatedcollectionhelper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxisolatedcollectionhelper/src/unittest_mpmpxisolatedcollectionhelper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -112,7 +112,7 @@
     QCOMPARE(mTest->iIncrementalOpenUtil->iStop,TBool(ETrue));
     QCOMPARE(mTest->iIncrementalOpenUtil->iStart,TBool(ETrue));
     QCOMPARE(mTest->iFirstIncrementalOpen,TBool(ETrue));
-    QCOMPARE(mTest->iIncrementalOpenUtil->iDirection,CMPXCollectionOpenUtility::EFetchNormal);
+    QCOMPARE(mTest->iIncrementalOpenUtil->iDirection,CMPXCollectionOpenUtility::EFetchDown);
     QCOMPARE(mTest->iIncrementalOpenUtil->iChunkSize, KIncrementalFetchBlockSize);
     QCOMPARE((int)mTest->iIncrementalOpenUtil->iPath, (int)path);
     QCOMPARE(mTest->iOpenMode, CMpMpxIsolatedCollectionHelper::DefaultMode );
@@ -122,7 +122,7 @@
     QCOMPARE(mTest->iIncrementalOpenUtil->iStop,TBool(ETrue));
     QCOMPARE(mTest->iIncrementalOpenUtil->iStart,TBool(ETrue));
     QCOMPARE(mTest->iFirstIncrementalOpen,TBool(ETrue));
-    QCOMPARE(mTest->iIncrementalOpenUtil->iDirection,CMPXCollectionOpenUtility::EFetchNormal);
+    QCOMPARE(mTest->iIncrementalOpenUtil->iDirection,CMPXCollectionOpenUtility::EFetchDown);
     QCOMPARE(mTest->iIncrementalOpenUtil->iChunkSize, KIncrementalFetchBlockSize);
     QCOMPARE((int)mTest->iIncrementalOpenUtil->iPath, (int)path);
     QCOMPARE(mTest->iOpenMode, CMpMpxIsolatedCollectionHelper::RestorePathMode );
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/inc/unittest_mpmpxplaybackframeworkwrapper.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/inc/unittest_mpmpxplaybackframeworkwrapper.h	Fri Sep 17 08:28:52 2010 +0300
@@ -56,6 +56,7 @@
     void testSetShuffle();
     void testSetRepeat();
     void testHandlePlaybackMessage();
+    void testHandlePlaybackError();
     void testHandleProperty();
     void testHandleMedia();
     void testHandleMediaDetails();
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/src/unittest_mpmpxplaybackframeworkwrapper.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/src/unittest_mpmpxplaybackframeworkwrapper.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -107,7 +107,7 @@
  */
 void TestMpMpxPlaybackFrameworkWrapper::init()
 {
-    mTest = new MpMpxPlaybackFrameworkWrapper(TUid::Uid(MpCommon::KMusicPlayerUid), mSongData);
+    mTest = new MpMpxPlaybackFrameworkWrapper(MpCommon::KMusicPlayerUid, mSongData);
     mTestPrivate = mTest->d_ptr;
 }
 
@@ -271,6 +271,23 @@
 }
 
 /*!
+ Tests handlePlaybackError
+ */
+void TestMpMpxPlaybackFrameworkWrapper::testHandlePlaybackError()
+{
+    mTestPrivate->iPlaybackUtility->iReturnSource = true;
+    mTestPrivate->DoHandlePlaybackErrorL(-20);
+    QCOMPARE(mTestPrivate->iPlaybackUtility->iCmd, EPbCmdNext);
+    QCOMPARE(mTestPrivate->iPlaybackData->mCorrupted, true);
+    QSignalSpy spy(mTest, SIGNAL(corruptedStop()));
+    mTestPrivate->iPlaybackData->mCorrupted = false;
+    mTestPrivate->iPlaybackUtility->iSetPlaylistEnd = true;
+    mTestPrivate->DoHandlePlaybackErrorL(-20);
+    QCOMPARE(mTestPrivate->iPlaybackData->mCorrupted, true);
+    QCOMPARE(spy.count(), 1);    
+}
+
+/*!
  Tests handleProperty
  */
 void TestMpMpxPlaybackFrameworkWrapper::testHandleProperty()
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpplaybackdata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpplaybackdata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -72,6 +72,7 @@
     QString                  currentUri;
     TBool                    mMediaReady;
     bool                     mRealAudio;
+    bool                     mCorrupted;
     int                      mAlbumId;
     int                      mId;
 
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpxplaybackutility.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/inc/mpxplaybackutility.h	Fri Sep 17 08:28:52 2010 +0300
@@ -76,8 +76,10 @@
     CMPXCommand*            iCMPXCmd;
     TMPXPlaybackState       iState;
     RArray<TMPXAttribute>*  iAttrs;
+    CMPXCollectionPlaylist* iCurrentPlaylist;
     bool                    iInitialized;
     bool                    iReturnSource;
+    bool                    iSetPlaylistEnd;
 };
 
 #endif      // MMPXPLAYBACKUTILITY_H
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpplaybackdata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpplaybackdata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -34,6 +34,7 @@
       mPlaybackState(MpPlaybackData::Stopped),
       mMediaReady(EFalse),
       mRealAudio( false ),
+      mCorrupted( false ),
       mAlbumId( 0 ),
       mId( 0 )
 {
@@ -278,6 +279,7 @@
     mAlbumId = 0;
     mId = 0;
     mRealAudio = false;
+    mCorrupted = false;
 }
 
 /*!
@@ -285,7 +287,8 @@
 */
 void MpPlaybackData::setCorrupted( int id )
 {
-
+    Q_UNUSED(id);
+    mCorrupted = true;
 }
 
 //end of file
--- a/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpxplaybackutility.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpengine/tsrc/unittest_mpmpxplaybackframeworkwrapper/stub/src/mpxplaybackutility.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <Qt>
 #include <mpxcollectionplaylist.h>
+#include <mpxcollectionpath.h>
 #include <mptrace.h>
 
 #include "stub/inc/mpxplaybackutility.h"
@@ -32,7 +33,9 @@
                                            iState(EPbStateNotInitialised),
                                            iAttrs(0),
                                            iInitialized(false),
-                                           iReturnSource(true)
+                                           iReturnSource(true),
+                                           iSetPlaylistEnd(false),
+                                           iCurrentPlaylist(0)
 {
 }
 
@@ -144,8 +147,21 @@
 */
 CMPXCollectionPlaylist* MMPXPlaybackUtility::PlaylistL()
 {
-    CMPXCollectionPlaylist* temp = CMPXCollectionPlaylist::NewL();
-    return temp;
+    CMPXCollectionPath *testPath = CMPXCollectionPath::NewL();
+    RArray<TMPXItemId> pathItems;
+    CleanupStack::PushL(testPath);
+    testPath->AppendL(5);
+    for (int i = 0; i < 5; i++ ) {
+        pathItems.AppendL( TMPXItemId( 300 + i ) );
+    }
+    testPath->AppendL( pathItems.Array() );
+    //Create testPlaylist
+    iCurrentPlaylist = CMPXCollectionPlaylist::NewL( *testPath );
+    if (iSetPlaylistEnd){
+        iCurrentPlaylist->SetToLast();
+    }
+    CleanupStack::PopAndDestroy( testPath );
+    return iCurrentPlaylist;
 }
 
 /*!
--- a/mpserviceplugins/audioeffects/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/audioeffects/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,7 @@
 DEFAULT
 
 PRJ_EXPORTS
+../rom/mpxaudioeffects.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxaudioeffects.iby)
 
 PRJ_MMPFILES
 mpxaudioeffectengine.mmp
--- a/mpserviceplugins/localaudio/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/localaudio/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,8 @@
 DEFAULT
 
 PRJ_EXPORTS
+../rom/mpxlocalaudioplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxlocalaudioplugin.iby)
+
 
 PRJ_MMPFILES
 mpxlocalaudioplayback.mmp
--- a/mpserviceplugins/m3uplaylistplugin/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/m3uplaylistplugin/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,8 @@
 DEFAULT
 
 PRJ_EXPORTS
+../rom/mpxm3uplaylistplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxm3uplaylistplugin.iby)
+
 
 PRJ_MMPFILES
 mpxm3uplaylistparsers.mmp
--- a/mpserviceplugins/mpxinmemoryplugin/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/mpxinmemoryplugin/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,8 @@
 DEFAULT
 
 PRJ_EXPORTS
+../rom/mpxinmemplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxinmemplugin.iby)
+
 
 PRJ_MMPFILES
 mpxinmemoryplugin.mmp
\ No newline at end of file
--- a/mpserviceplugins/mpxsqlitedbcommon/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/mpxsqlitedbcommon/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,8 @@
 DEFAULT
 
 PRJ_EXPORTS
+../rom/mpxsqlitedbcommon.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxsqlitedbcommon.iby)
+
 
 PRJ_MMPFILES
 mpxsqlitedbcommon.mmp
--- a/mpserviceplugins/mpxsqlitedbhgplugin/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/mpxsqlitedbhgplugin/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -23,6 +23,10 @@
 
 PRJ_EXPORTS
 
+../rom/mpxsqlitedbhgplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxsqlitedbhgplugin.iby)
+../rom/mpxsqlitedbhgpluginrsc.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxsqlitedbhgpluginrsc.iby)
+
+
 PRJ_EXTENSIONS
 START EXTENSION s60/mifconv
 OPTION TARGETFILE mpxdbhgplugin.mif
--- a/mpserviceplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -1063,14 +1063,11 @@
 // ----------------------------------------------------------------------------
 //
 TBool CMPXDbAlbum::NeedToUpdateArt(const TDesC& aDeletedSongArt, const TDesC& aCurrentAlbumArt)
-    {    
-    if (aDeletedSongArt.Length() == 0)
-        {
-        // Deleted song's art has default album art
-        return EFalse;
-        }
+    { 
+    TBool needToUpdateArt = EFalse;
+    
 #ifdef ABSTRACTAUDIOALBUM_INCLUDED
-    else
+    TBool isNonEmbedded = EFalse;
     if (aDeletedSongArt.Length() > 0)
         {
         TParsePtrC parse(aDeletedSongArt);
@@ -1080,20 +1077,21 @@
         if (ext.CompareF(KAbstractAlbumExt) == 0) 
             {     
             // Deleted song's art is Non-embedded album art
-            return EFalse;
+            isNonEmbedded = ETrue;
             }
         }
-    else
-#endif   
-    if (aDeletedSongArt.Length() > 0 && aCurrentAlbumArt.Length() > 0 && aDeletedSongArt.CompareF(aCurrentAlbumArt) == 0)
+    if (!isNonEmbedded)
         {
-        // Deleted song's art is Embedded album art and it is the same as Album's current art
-        return ETrue;
+#endif   // ABSTRACTAUDIOALBUM_INCLUDED
+        if (aDeletedSongArt.Length() > 0 && aCurrentAlbumArt.Length() > 0 && aDeletedSongArt.CompareF(aCurrentAlbumArt) == 0)
+            {
+            // Deleted song's art is Embedded album art and it is the same as Album's current art
+            needToUpdateArt = ETrue;
+            }
+#ifdef ABSTRACTAUDIOALBUM_INCLUDED            
         }
-    else
-        {
-        return EFalse;
-        }
+#endif // ABSTRACTAUDIOALBUM_INCLUDED
+    return needToUpdateArt;
     }
 
 // ----------------------------------------------------------------------------
--- a/mpserviceplugins/mpxsqlitepodcastdbplugin/group/bld.inf	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpserviceplugins/mpxsqlitepodcastdbplugin/group/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -23,6 +23,10 @@
 
 PRJ_EXPORTS
 
+../rom/mpxsqlitepodcastdbplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxsqlitepodcastdbplugin.iby)
+../rom/mpxsqlitepodcastdbpluginrsc.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxsqlitepodcastdbpluginrsc.iby)
+
+
 PRJ_EXTENSIONS
 START EXTENSION s60/mifconv
 OPTION TARGETFILE mpxpodcastdbplugin.mif
--- a/mpviewplugins/mpcollectionviewplugin/inc/mpcollectioncontainer.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/inc/mpcollectioncontainer.h	Fri Sep 17 08:28:52 2010 +0300
@@ -47,7 +47,7 @@
 signals:
 
     void itemActivated( int index );
-    void itemLongPressed( int index, const QPointF &coords );
+    void itemLongPressed( const QModelIndex &index, const QPointF &coords );
     void findAlbumSongs( int index );
     void playAlbumSongs( int albumIndex, int songIndex );
     void shuffleEnabled( bool enabled );
--- a/mpviewplugins/mpcollectionviewplugin/inc/mpcollectionpopuphandler.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/inc/mpcollectionpopuphandler.h	Fri Sep 17 08:28:52 2010 +0300
@@ -19,6 +19,7 @@
 #define MPCOLLECTIONPOPUPHANDLER_H
 
 #include <QObject>
+#include <QModelIndex>
 #include "mpmpxcollectionviewdefs.h"
 
 class MpCollectionView;
@@ -38,15 +39,16 @@
     MpCollectionPopupHandler( MpCollectionView *parent );
     virtual ~MpCollectionPopupHandler();
 
-    void openDefaultViewContextMenu( int index, const QPointF &coords );
-    void openFetchViewContextMenu( int index, const QPointF &coords );
+    void openDefaultViewContextMenu( const QModelIndex &index, const QPointF &coords );
+    void openFetchViewContextMenu( const QModelIndex &index, const QPointF &coords );
     void openRenamePlaylistContainerDialog( const QString &currentName );
     void openRenamePlaylistItemDialog( const QString &currentName );
     void openAddSongsToPlaylist( QAbstractItemModel* model );
     void openAddSongsToPlaylistFromTBone();
     void openDeleteSongs( QAbstractItemModel* model );
     void openAddToCurrentPlaylist( MpMpxCollectionData* collectionData );
-    void openCreateNewPlaylist( MpMpxCollectionData* collectionData );
+    void openCreateNewPlaylist( MpMpxCollectionData* collectionData, bool isolated );
+    void openCreateNewPlaylistFromTBone();
     void openArrangeSongs();
     void cancelOngoingPopup(  bool onlyContextMenu );
 
@@ -74,16 +76,17 @@
     void handleOperationEnded( bool success );
 
     void outstandingPopupClosing();
+    void inputDialogChanged( QString text );
+    void requestDelete();
 
 private:
     void setOutstandingPopup( HbPopup *popup );
     void clearOutstandingPopup( HbPopup *popup );    
     void launchAddToPlaylistDialog( QList<int> &selection );
     void queryNewPlaylistName(const QStringList &playlists, const char *handler );
-    void getText(const QString &label, const QString &text, const char *handler );
-    void getModelIndexes( const QString &label, QAbstractItemModel* model, const char *handler );
+    void getText(const QString &label, const QString &text, const QString &confirmationActionLabel, const char *handler );
+    void getModelIndexes( const QString &label, const QString &confirmationActionLabel, QAbstractItemModel* model, const char *handler );
     void launchArrangeSongsDialog();
-    void requestDelete( QList<int> &selection );
     void launchProgressDialog( const char *id );
     void connectExternalEvents();
 
--- a/mpviewplugins/mpcollectionviewplugin/inc/mpcollectionview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/inc/mpcollectionview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -53,7 +53,7 @@
     void activateView();
     void deactivateView();
     bool isActivated();    
-    void openItem( int index );
+    void openItem( const QModelIndex &index );
     void showItemDetails( int index );
 
 signals:
@@ -84,6 +84,7 @@
 
     void shufflePlayAll();
     void addToPlaylist();
+    void createNewPlaylist();
     void deleteSongs();
     void renameCurrentPlaylistContainer();
 
@@ -94,7 +95,7 @@
     void prepareToAddToPlaylist();
     void handleIsolatedCollectionOpened( MpMpxCollectionData* collectionData );
     void arrangeSongs();
-    void openContextMenu( int index, const QPointF &coords );
+    void openContextMenu( const QModelIndex &index, const QPointF &coords );
 
     void handleUsbBlocked( bool blocked );
     void handleLibraryAboutToUpdate();
--- a/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.css	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.css	Fri Sep 17 08:28:52 2010 +0300
@@ -15,18 +15,6 @@
   zvalue: 0;
 }
 
-HgMediawall#albumWall::centeritem
-{
-  size-policy: fixed fixed;
-  fixed-height: 24.5un;
-  fixed-width: 24.5un;
-  left:0un;
-  right:0un;
-  top:-var(hb-param-margin-gene-screen);
-  bottom:0un;
-  zvalue: 2;
-}
-
 HgMediawall#albumWall::title
 {
   text-height: var(hb-param-text-height-primary);
@@ -37,8 +25,8 @@
   text-wrap-mode:no-wrap;
   left:-var(hb-param-margin-gene-screen);
   right:var(hb-param-margin-gene-screen);
-  top:0un;
-  bottom:var(hb-param-margin-middle-vertical);
+  top:-var(hb-param-margin-gene-screen);
+  bottom:var(hb-param-margin-gene-middle-vertical);
   zvalue: 2;
 }
 
@@ -52,12 +40,23 @@
   text-wrap-mode:no-wrap;
   left:-var(hb-param-margin-gene-screen);
   right:var(hb-param-margin-gene-screen);
-  top:0un;
+  top:-var(hb-param-margin-gene-middle-vertical);
+  bottom:var(hb-param-margin-gene-middle-vertical);
+  zvalue: 2;
+}
+
+HgMediawall#albumWall::centeritem
+{
+  size-policy: fixed fixed;
+  fixed-height: 24.5un;
+  fixed-width: 24.5un;
+  left:0un;
+  right:0un;
+  top:-var(hb-param-margin-gene-middle-vertical);
   bottom:1.5un;
   zvalue: 2;
 }
 
-
 /*Artist Albums TBone*/
 HgMediawall#artistAlbumWall
 {
@@ -75,18 +74,6 @@
   zvalue: 0;
 }
 
-HgMediawall#artistAlbumWall::centeritem
-{
-  size-policy: fixed fixed;
-  fixed-height: 24.5un;
-  fixed-width: 24.5un;
-  left:0un;
-  right:0un;
-  top:-var(hb-param-margin-gene-screen);
-  bottom:0un;
-  zvalue: 2;
-}
-
 HgMediawall#artistAlbumWall::title
 {
   text-height: var(hb-param-text-height-primary);
@@ -97,8 +84,8 @@
   text-wrap-mode:no-wrap;
   left:-var(hb-param-margin-gene-screen);
   right:var(hb-param-margin-gene-screen);
-  top:0un;
-  bottom:var(hb-param-margin-middle-vertical);
+  top:-var(hb-param-margin-gene-screen);
+  bottom:var(hb-param-margin-gene-middle-vertical);
   zvalue: 2;
 }
 
@@ -112,8 +99,18 @@
   text-wrap-mode:no-wrap;
   left:-var(hb-param-margin-gene-screen);
   right:var(hb-param-margin-gene-screen);
-  top:0un;
+  top:-var(hb-param-margin-gene-middle-vertical);
+  bottom:var(hb-param-margin-gene-middle-vertical);
+  zvalue: 2;
+}
+HgMediawall#artistAlbumWall::centeritem
+{
+  size-policy: fixed fixed;
+  fixed-height: 24.5un;
+  fixed-width: 24.5un;
+  left:0un;
+  right:0un;
+  top:-var(hb-param-margin-gene-middle-vertical);
   bottom:1.5un;
   zvalue: 2;
 }
-
--- a/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.hgmediawall.widgetml	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall.hgmediawall.widgetml	Fri Sep 17 08:28:52 2010 +0300
@@ -5,14 +5,14 @@
     TOP content
         ^
         |
-    centeritem
-
       title
+        ^
         |
-        v
     description
+        ^
         |
-        v
+    centeritem
+    
   BOTTOM content
 
 
@@ -24,17 +24,18 @@
     <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP"/>
     <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT"/>
     <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT"/> 
-    
-    <meshitem src="centeritem" srcEdge="TOP" dst="content" dstEdge="TOP"/>
-    <meshitem src="centeritem" srcEdge="CENTERH" dst="content" dstEdge="CENTERH"/>
-       
-    <meshitem src="title" srcEdge="BOTTOM" dst="description" dstEdge="TOP"/>
+         
+    <meshitem src="title" srcEdge="TOP" dst="content" dstEdge="TOP"/>
     <meshitem src="title" srcEdge="LEFT" dst="content" dstEdge="LEFT"/>
     <meshitem src="title" srcEdge="RIGHT" dst="content" dstEdge="RIGHT"/>
        
-    <meshitem src="description" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM"/>
+    <meshitem src="description" srcEdge="TOP" dst="title" dstEdge="BOTTOM"/>
     <meshitem src="description" srcEdge="LEFT" dst="content" dstEdge="LEFT"/>
     <meshitem src="description" srcEdge="RIGHT" dst="content" dstEdge="RIGHT"/>   
+    
+    <meshitem src="centeritem" srcEdge="TOP" dst="description" dstEdge="BOTTOM"/>
+    <meshitem src="centeritem" srcEdge="CENTERH" dst="content" dstEdge="CENTERH"/>
+    
   </layout>
 
 </hbwidget>
--- a/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall_color.css	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/resources/tbonemediawall_color.css	Fri Sep 17 08:28:52 2010 +0300
@@ -1,21 +1,21 @@
 /*Albums TBone*/
 HgMediawall#albumWall::title
 {
-    color: #FFFFFF; /* media wall reflection is 50% darker than original image, white will work best even for white images.*/
+    color: var(qtc_view_normal)
 }
 
 HgMediawall#albumWall::description
 {
-    color: #FFFFFF; /* media wall reflection is 50% darker than original image, white will work best even for white images.*/
+    color: var(qtc_view_normal_secondary)
 }
 
 /*Artist Albums TBone*/
 HgMediawall#artistAlbumWall::title
 {
-    color: #FFFFFF; /* media wall reflection is 50% darker than original image, white will work best even for white images.*/
+    color: var(qtc_view_normal)
 }
 
 HgMediawall#artistAlbumWall::description
 {
-    color: #FFFFFF; /* media wall reflection is 50% darker than original image, white will work best even for white images.*/
+    color: var(qtc_view_normal_secondary)
 }
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainer.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainer.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -42,7 +42,7 @@
  */
 
 /*!
-    \fn void itemLongPressed( int index, const QPointF &coords );
+    \fn void itemLongPressed( const QModelIndex &index, const QPointF &coords );
 
     This signal is emitted when an item of the container with \a index is long pressed.
  */
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontaineralbums.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontaineralbums.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -192,6 +192,9 @@
             emit findAlbumSongs(mCurrentAlbumIndex);
         }
     }
+    else if( mCollectionContext == ECollectionContextAlbums ) {
+        mInfoBar->setHeading(hbTrId("txt_mus_subhead_albums_1l").arg(mCollectionData->count()));
+    }
     else {
         MpCollectionListContainer::dataReloaded();
     }
@@ -298,7 +301,7 @@
             defaultIcon.setSize(mTBone->itemSize());
             mTBone->setDefaultImage( defaultIcon.pixmap().toImage() );
             mTBone->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
-            mTBone->enableReflections(true);
+            mTBone->enableReflections( false );
             connect( mTBone, SIGNAL(scrollingStarted()), this, SLOT(scrollingStarted()) );
             connect( mTBone, SIGNAL(animationAboutToEnd(QModelIndex)), this, SLOT(albumCentered(QModelIndex)) );
         }
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerartists.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerartists.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -259,6 +259,9 @@
             emit findAlbumSongs(mCurrentAlbumIndex);
         }
     }
+    else if( mCollectionContext == ECollectionContextArtists ){
+        mInfoBar->setHeading(hbTrId("txt_mus_subhead_artist_1l").arg(mCollectionData->count()));
+    }
     else {
         MpCollectionListContainer::dataReloaded();
     }
@@ -385,7 +388,7 @@
                 defaultIcon.setSize(mTBone->itemSize());
                 mTBone->setDefaultImage( defaultIcon.pixmap().toImage() );
                 mTBone->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
-                mTBone->enableReflections(true);
+                mTBone->enableReflections( false );
                 connect( mTBone, SIGNAL(scrollingStarted()), this, SLOT(scrollingStarted()) );
                 connect( mTBone, SIGNAL(animationAboutToEnd(QModelIndex)), this, SLOT(albumCentered(QModelIndex)) );
                 }
@@ -402,7 +405,7 @@
                         artist = hbTrId("txt_mus_subtitle_unknown_all");
                     }
                     else {
-                        artist = HbParameterLengthLimiter(hbTrId("txt_mus_subtitle_1_all")).arg(artist);
+                        artist = HbParameterLengthLimiter("txt_mus_subtitle_1_all").arg(artist);
                     }
                     mInfoBar->setHeading(artist);
                 }
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerfactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerfactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -73,7 +73,7 @@
         mCurrentContainer = new MpCollectionContainerAllSongs(mDocumentLoader);
         mCurrentContainer->initialize();
         connect( mCurrentContainer, SIGNAL(itemActivated(int)), mView, SLOT(openIndex(int)) );
-        connect( mCurrentContainer, SIGNAL(itemLongPressed(int, QPointF)), mView, SLOT(openContextMenu(int, QPointF)) );
+        connect( mCurrentContainer, SIGNAL(itemLongPressed(QModelIndex, QPointF)), mView, SLOT(openContextMenu(QModelIndex, QPointF)) );
         connect( mCurrentContainer, SIGNAL(shuffleEnabled(bool)), mView, SLOT(setShuffleAction(bool)) );
         break;
     case ECollectionContextArtists:
@@ -85,7 +85,7 @@
             mCurrentContainer = new MpCollectionContainerArtists(mDocumentLoader);
             mCurrentContainer->initialize();
             connect( mCurrentContainer, SIGNAL(itemActivated(int)), mView, SLOT(openIndex(int)) );
-            connect( mCurrentContainer, SIGNAL(itemLongPressed(int, QPointF)), mView, SLOT(openContextMenu(int, QPointF)) );
+            connect( mCurrentContainer, SIGNAL(itemLongPressed(QModelIndex, QPointF)), mView, SLOT(openContextMenu(QModelIndex, QPointF)) );
             connect( mCurrentContainer, SIGNAL(findAlbumSongs(int)), mView, SLOT(findAlbumSongs(int)) );
             connect( mCurrentContainer, SIGNAL(playAlbumSongs(int, int)), mView, SLOT(playAlbumSongs(int, int)) );
             connect( mCurrentContainer, SIGNAL(shuffleEnabled(bool)), mView, SLOT(setShuffleAction(bool)) );
@@ -97,7 +97,7 @@
             mCurrentContainer = new MpCollectionContainerAlbums(mDocumentLoader);
             mCurrentContainer->initialize();
             connect( mCurrentContainer, SIGNAL(itemActivated(int)), mView, SLOT(openIndex(int)) );
-            connect( mCurrentContainer, SIGNAL(itemLongPressed(int, QPointF)), mView, SLOT(openContextMenu(int, QPointF)) );
+            connect( mCurrentContainer, SIGNAL(itemLongPressed(QModelIndex, QPointF)), mView, SLOT(openContextMenu(QModelIndex, QPointF)) );
             connect( mCurrentContainer, SIGNAL(findAlbumSongs(int)), mView, SLOT(findAlbumSongs(int)) );
             connect( mCurrentContainer, SIGNAL(playAlbumSongs(int, int)), mView, SLOT(playAlbumSongs(int, int)) );
             connect( mCurrentContainer, SIGNAL(shuffleEnabled(bool)), mView, SLOT(setShuffleAction(bool)) );
@@ -109,7 +109,7 @@
             mCurrentContainer = new MpCollectionContainerPlaylists(mDocumentLoader);
             mCurrentContainer->initialize();
             connect( mCurrentContainer, SIGNAL(itemActivated(int)), mView, SLOT(openIndex(int)) );
-            connect( mCurrentContainer, SIGNAL(itemLongPressed(int, QPointF)), mView, SLOT(openContextMenu(int, QPointF)) );
+            connect( mCurrentContainer, SIGNAL(itemLongPressed(QModelIndex, QPointF)), mView, SLOT(openContextMenu(QModelIndex, QPointF)) );
             connect( mCurrentContainer, SIGNAL(shuffleEnabled(bool)), mView, SLOT(setShuffleAction(bool)) );
         }
         break;
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerplaylists.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectioncontainerplaylists.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -21,6 +21,7 @@
 #include <hblistview.h>
 #include <hbgroupbox.h>
 #include <hblabel.h>
+#include <hbparameterlengthlimiter.h>
 
 #include "mpcollectioncontainerplaylists.h"
 #include "mpcollectiondatamodel.h"
@@ -108,7 +109,7 @@
     MpCollectionListContainer::dataReloaded();
     if ( mCollectionContext == ECollectionContextPlaylistSongs ) {
         // Playlist could have been renamed.
-        QString details = mCollectionData->collectionTitle();
+        QString details = HbParameterLengthLimiter("txt_mus_subhead_1_2l").arg(mCollectionData->collectionTitle()).arg(mCollectionData->count());
         mInfoBar->setHeading(details);
         if ( mCollectionData->count() > 1 ) {
             emit shuffleEnabled(true);
@@ -117,6 +118,10 @@
             emit shuffleEnabled(false);
         }
     }
+    else if ( mCollectionContext == ECollectionContextPlaylists ) {
+        mInfoBar->setHeading(hbTrId("txt_mus_subhead_playlists_1l").arg(mCollectionData->count()));
+    }
+    
     TX_EXIT
 }
 
@@ -160,7 +165,7 @@
                 details = hbTrId("txt_mus_subtitle_select_song");
             }
             else {
-                details = hbTrId("txt_mus_subhead_1_2l").arg(mCollectionData->collectionTitle()).arg(mCollectionData->count()); 
+                details = HbParameterLengthLimiter("txt_mus_subhead_1_2l").arg(mCollectionData->collectionTitle()).arg(mCollectionData->count()); 
             }
             mInfoBar->setHeading(details);
         }
@@ -171,7 +176,7 @@
     }
     else {
     
-        mInfoBar->setHeading(hbTrId("txt_mus_subhead_1_2l").arg(mCollectionData->collectionTitle()).arg(0));
+        mInfoBar->setHeading(HbParameterLengthLimiter("txt_mus_subhead_1_2l").arg(mCollectionData->collectionTitle()).arg(0));
 
         // Call empty list from base class    
         setupEmptyListContainer();
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectionlistcontainer.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectionlistcontainer.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -112,7 +112,7 @@
     TX_ENTRY
     if ( mLongPressEnabled ) {
         mLongPressedIndex = listViewItem->modelIndex().row();
-        emit MpCollectionContainer::itemLongPressed(mLongPressedIndex, coords);
+        emit MpCollectionContainer::itemLongPressed(listViewItem->modelIndex(), coords);
     }
     TX_EXIT
 }
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectionpopuphandler.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectionpopuphandler.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -34,7 +34,6 @@
 #include "mpcollectionpopuphandler.h"
 #include "mptrace.h"
 
-const int KNullIndex = -1;
 const int KSongsToDisplayProgressDlg = 100;
 
 // Popups launched by this class
@@ -74,11 +73,12 @@
         virtual ~MpPopupHandlerPermanentData();
         void clear();
     public:
-        MpMpxCollectionData         *mIsolatedCollectionData;        // Not own
-        QAbstractItemModel          *mAbstractItemModel;             // Own
+        MpMpxCollectionData         *mCollectionData;      // ownership depends on mIsolatedOperation
+        QAbstractItemModel          *mAbstractItemModel;   // ownership depends on use case, parented.
         QList<int>                  mSelectedItems;
         QString                     mOriginalName;
-        int                         mContextMenuIndex;
+        QModelIndex                 mContextMenuModelIndex;
+        bool                        mIsolatedOperation;
 };
 
 /*!
@@ -86,9 +86,10 @@
  */
 MpPopupHandlerPermanentData::MpPopupHandlerPermanentData( QObject *parent )
     : QObject( parent ),
-      mIsolatedCollectionData( 0 ),
+      mCollectionData( 0 ),
       mAbstractItemModel( 0 ),
-      mContextMenuIndex( KNullIndex )
+      mContextMenuModelIndex(),
+      mIsolatedOperation( false )
 {
       TX_ENTRY
       mSelectedItems.clear();
@@ -115,15 +116,18 @@
     TX_ENTRY
     mSelectedItems.clear();
     mOriginalName.clear();
-    mContextMenuIndex = KNullIndex;
-    if ( mIsolatedCollectionData ) {
-        MpEngineFactory::sharedEngine()->releaseIsolatedCollection();
-        mIsolatedCollectionData = 0;
+    mContextMenuModelIndex = QModelIndex();
+    if ( mIsolatedOperation ) {
+        mIsolatedOperation = false;
+        if ( mCollectionData ) {
+            MpEngineFactory::sharedEngine()->releaseIsolatedCollection();
+            mCollectionData = 0;
+        }
     }
-    if ( mAbstractItemModel ) {
-        delete mAbstractItemModel;
-        mAbstractItemModel = 0;
-    }
+
+    //deleted by parenting if owned
+    mAbstractItemModel = 0;
+
     //clearing any child Objects.
     foreach (QObject* child, children()) {
         child->deleteLater();
@@ -174,7 +178,7 @@
 /*!
  Default view context menu.
  */
-void MpCollectionPopupHandler::openDefaultViewContextMenu( int index, const QPointF &coords )
+void MpCollectionPopupHandler::openDefaultViewContextMenu( const QModelIndex &index, const QPointF &coords )
 {
     TX_ENTRY
 
@@ -218,7 +222,7 @@
                 contextMenu = new HbMenu();
                 action = contextMenu->addAction( hbTrId( "txt_common_menu_open" ) );
                 action->setObjectName( KOpen );
-                if ( !mMpEngine->collectionData()->isAutoPlaylist( index ) ) {
+                if ( !mMpEngine->collectionData()->isAutoPlaylist( index.row() ) ) {
                     action = contextMenu->addAction( hbTrId( "txt_common_menu_delete" ) );
                     action->setObjectName(KDelete);
                     action->setEnabled( !usbBlocked );
@@ -244,7 +248,7 @@
         }
 
         if ( contextMenu ) {
-            mPermanentData->mContextMenuIndex = index;
+            mPermanentData->mContextMenuModelIndex = index;
             contextMenu->setPreferredPos( coords );
             contextMenu->setObjectName( KContextMenu );
             contextMenu->setAttribute( Qt::WA_DeleteOnClose );
@@ -259,9 +263,9 @@
 /*!
  Fetch view context menu
  */
-void MpCollectionPopupHandler::openFetchViewContextMenu( int index, const QPointF &coords )
+void MpCollectionPopupHandler::openFetchViewContextMenu( const QModelIndex &index, const QPointF &coords )
 {
-    TX_ENTRY_ARGS( "index=" << index );
+    TX_ENTRY_ARGS( "index=" << index.row() );
 
     if ( mView->isActivated() ) {
 
@@ -283,7 +287,7 @@
         }
 
         if ( contextMenu ) {
-            mPermanentData->mContextMenuIndex = index;
+            mPermanentData->mContextMenuModelIndex = index;
             contextMenu->setPreferredPos( coords );
             contextMenu->setAttribute( Qt::WA_DeleteOnClose );
             contextMenu->setObjectName( KContextMenu );
@@ -302,7 +306,9 @@
 {
     TX_ENTRY_ARGS( "Current name=" << currentName );
     mPermanentData->mOriginalName = currentName;
-    getText( hbTrId( "txt_mus_dialog_enter_name" ), currentName,
+    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
+             currentName,
+             hbTrId( "txt_common_button_ok" ), //TODO:replace for "rename" when string is available
              SLOT( handleRenamePlaylistContainer( HbAction* ) ) );
     TX_EXIT
 }
@@ -314,7 +320,9 @@
 {
     TX_ENTRY_ARGS( "Current name=" << currentName );
     mPermanentData->mOriginalName = currentName;
-    getText( hbTrId( "txt_mus_dialog_enter_name" ), currentName,
+    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
+             currentName,
+             hbTrId( "txt_common_button_ok" ),//TODO:replace for "rename" when string is available
              SLOT( handleRenamePlaylistItem( HbAction* ) ) );
     TX_EXIT
 }
@@ -325,7 +333,9 @@
 void MpCollectionPopupHandler::openAddSongsToPlaylist( QAbstractItemModel* model )
 {
     TX_ENTRY
-    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ), model,
+    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ),//TODO:replace for "add songs" when string is available
+                     hbTrId( "txt_common_button_add_dialog" ),
+                     model,
                      SLOT( handleAddSongsToPlayList( HbAction* ) ) );
     TX_EXIT
 }
@@ -341,7 +351,9 @@
     //this item will be deleted when clearing permanent data.
     model->setParent(mPermanentData);
     model->refreshModel();
-    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ), model,
+    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ),//TODO:replace for "add songs" when string is available
+                     hbTrId( "txt_common_button_add_dialog" ),
+                     model,
                      SLOT( handleAddSongsToPlayList( HbAction* ) ) );
     TX_EXIT
 }
@@ -352,7 +364,10 @@
 void MpCollectionPopupHandler::openDeleteSongs( QAbstractItemModel* model )
 {
     TX_ENTRY
-    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ), model, 
+    //currently we can only get here from playlistsongs, no need to check for that.
+    getModelIndexes( hbTrId( "txt_mus_title_remove_songs" ), 
+                     hbTrId( "txt_common_button_remove_dialog" ),
+                     model, 
                      SLOT( handleDeleteSongs( HbAction* ) ) );
     TX_EXIT
 }
@@ -363,13 +378,18 @@
 void MpCollectionPopupHandler::openAddToCurrentPlaylist( MpMpxCollectionData* collectionData )
 {
     TX_ENTRY
-    mPermanentData->mIsolatedCollectionData = collectionData;
+    mPermanentData->mIsolatedOperation = true;
+    mPermanentData->mCollectionData = collectionData;
     MpCollectionDataModel *collectionDataModel;
     collectionDataModel = new MpCollectionDataModel( collectionData );
+    //this item will be deleted when clearing permanent data.
+    collectionDataModel->setParent( mPermanentData );
     collectionDataModel->refreshModel();
     mPermanentData->mAbstractItemModel = collectionDataModel;
 
-    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ), collectionDataModel, 
+    getModelIndexes( hbTrId( "txt_mus_title_select_songs" ),//TODO:replace for "add songs" when string is available
+                     hbTrId( "txt_common_button_add_dialog" ),
+                     collectionDataModel,
                      SLOT( handleAddToCurrentPlaylist( HbAction* ) ) );
     TX_EXIT
 }
@@ -377,16 +397,36 @@
 /*!
  Request to create a new play list and then add songs to it.
  */
-void MpCollectionPopupHandler::openCreateNewPlaylist( MpMpxCollectionData* collectionData )
+void MpCollectionPopupHandler::openCreateNewPlaylist( MpMpxCollectionData* collectionData, bool isolated )
 {
     TX_ENTRY
-    mPermanentData->mIsolatedCollectionData = collectionData;
-
+    mPermanentData->mIsolatedOperation = isolated;
+    mPermanentData->mCollectionData = collectionData;
     MpCollectionDataModel *collectionDataModel;
+    //this item will be deleted when clearing permanent data.
     collectionDataModel = new MpCollectionDataModel( collectionData );
+    collectionDataModel->setParent( mPermanentData );
     collectionDataModel->refreshModel();
     mPermanentData->mAbstractItemModel = collectionDataModel;
+    QStringList playlists;
+    mMpEngine->findPlaylists( playlists );
+    queryNewPlaylistName( playlists, SLOT( handleCreateNewPlaylistGetTextFinished( HbAction* ) ) );
+    TX_EXIT
+}
 
+/*!
+ Request to create a new playlist from TBone
+ */
+void MpCollectionPopupHandler::openCreateNewPlaylistFromTBone( )
+{
+    TX_ENTRY
+    mPermanentData->mIsolatedOperation = false;
+    MpCollectionTBoneListDataModel *model;
+    model = new MpCollectionTBoneListDataModel( mMpEngine->collectionData() );
+    //this item will be deleted when clearing permanent data.
+    model->setParent(mPermanentData);
+    model->refreshModel();
+    mPermanentData->mAbstractItemModel = model;
     QStringList playlists;
     mMpEngine->findPlaylists( playlists );
     queryNewPlaylistName( playlists, SLOT( handleCreateNewPlaylistGetTextFinished( HbAction* ) ) );
@@ -418,7 +458,7 @@
         }
         else {
             mOutstandingPopup->close();
-            //Delete/Clear permanent data until current popup gets deleted
+            //Delete/Clear permanent data when current popup is deleted
             mPermanentData->setParent( mOutstandingPopup );
             //Generate new permanent data for future popups
             mPermanentData = new MpPopupHandlerPermanentData( this );
@@ -439,24 +479,25 @@
     if ( selectedAction ) {
         QString objectName = selectedAction->objectName();
         QList<int> selection;
-        selection.append( mPermanentData->mContextMenuIndex );
+        selection.append( mPermanentData->mContextMenuModelIndex.row() );
         if ( objectName == KOpen ) {
-            mView->openItem( mPermanentData->mContextMenuIndex );
+            mView->openItem( mPermanentData->mContextMenuModelIndex );
         }
         if ( objectName == KAdd ) {
             launchAddToPlaylistDialog( selection );
         }
         else if ( objectName == KDelete ) {
-            requestDelete( selection );
+            mPermanentData->mSelectedItems = selection;
+            requestDelete();
         }
         else if ( objectName == KRenamePlayList ) {
             QString currentName;
             currentName = mMpEngine->collectionData()->itemData( 
-                    mPermanentData->mContextMenuIndex, MpMpxCollectionData::Title );
+                    mPermanentData->mContextMenuModelIndex.row(), MpMpxCollectionData::Title );
             openRenamePlaylistItemDialog( currentName );
         }
         else if ( objectName == KDetails ) {
-            mView->showItemDetails( mPermanentData->mContextMenuIndex );
+            mView->showItemDetails( mPermanentData->mContextMenuModelIndex.row() );
         }
     }
     TX_EXIT
@@ -470,7 +511,7 @@
     TX_ENTRY
     if ( selectedAction ) {
         // Start the playback process. View will switch to playbackview.
-        mMpEngine->previewItem( mPermanentData->mContextMenuIndex );
+        mMpEngine->previewItem( mPermanentData->mContextMenuModelIndex.row() );
     }        
     TX_EXIT
 }
@@ -519,16 +560,8 @@
         QString objectName = selectedAction->objectName();
         if ( objectName == KOk ) {
             QString newPlaylistName = dialog->value().toString();
-            if ( newPlaylistName.length() ) {
-                //Create new playlist with given name
-                mMpEngine->createPlaylist( newPlaylistName, mPermanentData->mSelectedItems );
-            }
-            else {
-                //No valid name, prompt for one again.
-                getText( hbTrId( "txt_mus_dialog_enter_name" ), newPlaylistName,
-                         SLOT( handleAddToPlaylistGetTextFinished( HbAction* ) ) );
-                operationCompleted = false;
-            }
+            //Create new playlist with given name
+            mMpEngine->createPlaylist( newPlaylistName, mPermanentData->mSelectedItems );
         }
         else {
             // user decided to not provide a new name, go back to playlist list selection
@@ -556,29 +589,17 @@
     TX_ENTRY
     HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
     clearOutstandingPopup( dialog );
-    bool operationCompleted( true );
 
     if ( selectedAction ) {
         QString objectName = selectedAction->objectName();
         if ( objectName == KOk ) {
             QString newPlaylistName = dialog->value().toString();
-            if ( newPlaylistName.length() ) {
-                if ( newPlaylistName != mPermanentData->mOriginalName ) {
-                    mMpEngine->renamePlaylist( newPlaylistName );
-                }
-            }
-            else {
-                //No valid name, prompt for one again.
-                getText( hbTrId( "txt_mus_dialog_enter_name" ), newPlaylistName,
-                         SLOT( handleRenamePlaylistContainer( HbAction* ) ) );
-                operationCompleted = false;
+            if ( newPlaylistName != mPermanentData->mOriginalName ) {
+                mMpEngine->renamePlaylist( newPlaylistName );
             }
         }
     }
-
-    if ( operationCompleted ) {
-        mPermanentData->clear();
-    }
+    mPermanentData->clear();
     TX_EXIT
 }
 
@@ -590,29 +611,17 @@
     TX_ENTRY
     HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
     clearOutstandingPopup( dialog );
-    bool operationCompleted( true );
 
     if ( selectedAction ) {
         QString objectName = selectedAction->objectName();
         if ( objectName == KOk ) {
             QString newPlaylistName = dialog->value().toString();
-            if ( newPlaylistName.length() ) {
-                if ( newPlaylistName != mPermanentData->mOriginalName ) {
-                    mMpEngine->renamePlaylist( newPlaylistName, mPermanentData->mContextMenuIndex );
+            if ( newPlaylistName != mPermanentData->mOriginalName ) {
+                mMpEngine->renamePlaylist( newPlaylistName, mPermanentData->mContextMenuModelIndex.row() );
                 }
-            }
-            else {
-                //No valid name, prompt for one again.
-                getText( hbTrId( "txt_mus_dialog_enter_name" ), newPlaylistName,
-                         SLOT( handleRenamePlaylistItem( HbAction* ) ) );
-                operationCompleted = false;
-            }
         }
     }
-
-    if ( operationCompleted ) {
-        mPermanentData->clear();
-    }
+    mPermanentData->clear();
     TX_EXIT
 }
 
@@ -639,7 +648,10 @@
             }
         }
         else {
-            mPermanentData->clear();
+            //Delete/Clear permanent data when current dialog is deleted
+            mPermanentData->setParent( dialog );
+            //Generate new permanent data for future popups
+            mPermanentData = new MpPopupHandlerPermanentData( this );
         }
     }
 
@@ -663,21 +675,22 @@
     HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
     clearOutstandingPopup( dialog );
 
-    if ( selectedAction ) {
-        QString objectName = selectedAction->objectName();
-        if ( objectName == KOk ) {
-            QModelIndexList selectedModelIndexes;
-            selectedModelIndexes = dialog->selectedModelIndexes();
-            if ( selectedModelIndexes.count() ) {
-                QList<int> selection;
-                for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
-                    selection.append( selectedModelIndexes.at( i ).row() );
-                }
-                requestDelete( selection );
+    if ( selectedAction && selectedAction->objectName() == KOk ) {
+        QModelIndexList selectedModelIndexes;
+        selectedModelIndexes = dialog->selectedModelIndexes();
+        if ( selectedModelIndexes.count() ) {
+            QList<int> selection;
+            for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
+                selection.append( selectedModelIndexes.at( i ).row() );
             }
+            mPermanentData->mSelectedItems = selection;
         }
+        //we have to delay the delete, so the list on the dialog does not get the update (flicker!)
+        connect( dialog, SIGNAL( destroyed() ), this, SLOT( requestDelete() ) );
     }
-
+    else {
+        mPermanentData->clear();
+    }
     //Dialog won't use CollectionView main model any more, return it to its original layout.
     MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( dialog->model() );
     if ( mpModel ) {
@@ -709,14 +722,18 @@
                     selection.append( selectedModelIndexes.at( i ).row() );
                 }
                 mMpEngine->saveToCurrentPlaylist( selection,
-                        mPermanentData->mIsolatedCollectionData );
+                        mPermanentData->mCollectionData );
             }
         }
     }
 
     //Dialog is using an isolated model which will be deleted, no need to change its layout.
-    mPermanentData->clear();
-
+    
+    //Delete/Clear permanent data when current dialog is deleted
+    mPermanentData->setParent( dialog );
+    //Generate new permanent data for future popups
+    mPermanentData = new MpPopupHandlerPermanentData( this );
+    
     TX_EXIT
 }
 
@@ -728,29 +745,17 @@
     TX_ENTRY
     HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
     clearOutstandingPopup( dialog );
-    bool operationCompleted( true );
 
-    if ( selectedAction ) {
-        QString objectName = selectedAction->objectName();
-        if ( objectName == KOk ) {
-            QString newPlaylistName = dialog->value().toString();
-            if ( newPlaylistName.length() ) {
-                //Store the new playlist name and query for the items to be added
-                mPermanentData->mOriginalName = newPlaylistName;
-                getModelIndexes( hbTrId( "txt_mus_title_select_songs" ), 
-                                 mPermanentData->mAbstractItemModel, 
-                                 SLOT( handleCreateNewPlaylistGetModelIndexesFinished( HbAction* ) ) );
-            }
-            else {
-                //No valid name, prompt for one again.
-                getText( hbTrId( "txt_mus_dialog_enter_name" ), newPlaylistName,
-                         SLOT( handleCreateNewPlaylistGetTextFinished( HbAction* ) ) );
-            }
-            operationCompleted = false;
-        }
+    if ( selectedAction && selectedAction->objectName() == KOk) {
+        QString newPlaylistName = dialog->value().toString();
+        //Store the new playlist name and query for the items to be added
+        mPermanentData->mOriginalName = newPlaylistName;
+        getModelIndexes( hbTrId( "txt_mus_title_select_songs" ),//TODO:replace for "add songs" when string is available
+                         hbTrId( "txt_common_button_add_dialog" ),
+                         mPermanentData->mAbstractItemModel, 
+                         SLOT( handleCreateNewPlaylistGetModelIndexesFinished( HbAction* ) ) );
     }
-
-    if ( operationCompleted ) {
+    else {
         mPermanentData->clear();
     }
     TX_EXIT
@@ -775,16 +780,27 @@
                 for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
                     selection.append( selectedModelIndexes.at( i ).row() );
                 }
+                mMpEngine->createPlaylist( mPermanentData->mOriginalName, selection,
+                        mPermanentData->mCollectionData );
             }
-            //Creating Playlist even when there is no selection.
-            mMpEngine->createPlaylist( mPermanentData->mOriginalName, selection,
-                    mPermanentData->mIsolatedCollectionData );
         }
     }
 
-    //Dialog is using an isolated model which will be deleted, no need to change its layout.
-    mPermanentData->clear();
+    
+    //Delete/Clear permanent data when current dialog is deleted
+    mPermanentData->setParent( dialog );
+    //Generate new permanent data for future popups
+    mPermanentData = new MpPopupHandlerPermanentData( this );
+
 
+    //Dialog won't use model any more, return it to its original layout.
+    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( dialog->model() );
+    if ( mpModel ) {
+        //setLayout() only applies for MpCollectionDataModel where we need to 
+        //decide which layout to use for the secondary text.
+        //MpCollectionTBoneListDataModel doesn't have secondary text.
+        mpModel->setLayout( ECollectionListView );
+    }
     TX_EXIT
 }
 
@@ -896,6 +912,90 @@
 }
 
 /*!
+ Slot to be called when the text on an input dialog changes.
+ */
+void MpCollectionPopupHandler::inputDialogChanged( QString text )
+{
+    if ( !mOutstandingPopup ) {
+        return;
+    }
+    //Attempt to cast the outstanding dialog as the input dialog that owns the 
+    //line edit that changed. If cast fails it means that the dialog is out of
+    //scope and the operation is not needed anymore.
+    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( mOutstandingPopup );
+    HbLineEdit *dialogLineEdit = qobject_cast<HbLineEdit *>( sender() );
+    if ( dialog && dialogLineEdit && dialog->lineEdit() == dialogLineEdit ) {
+        if ( dialog->actions().count() ) {
+            dialog->actions()[0]->setEnabled( !text.isEmpty() );
+        }
+    }
+}
+
+/*!
+ \internal
+ Slot to be called to request a delete operation upon user confirmation.
+ */
+void MpCollectionPopupHandler::requestDelete()
+{
+    TX_ENTRY
+    QString message;
+    bool needsConfirmation = true;
+    connectExternalEvents();
+
+    switch ( mMpEngine->collectionData()->context() ) {
+        case ECollectionContextAllSongs:
+        case ECollectionContextArtistAlbumsTBone:
+        case ECollectionContextArtistAllSongs:
+        case ECollectionContextAlbumsTBone:
+            message = hbTrId( "txt_mus_delete_song" );
+            break;
+        case ECollectionContextArtists:
+            message = hbTrId( "txt_mus_delete_artist" );
+            break;
+        case ECollectionContextAlbums:
+        case ECollectionContextArtistAlbums:
+            message = hbTrId( "txt_mus_delete_album" );
+            break;
+        case ECollectionContextPlaylists:
+            message = hbTrId( "txt_mus_delete_playlist" );
+            break;
+        case ECollectionContextPlaylistSongs:
+            needsConfirmation = false;
+            mMpEngine->deleteSongs( mPermanentData->mSelectedItems );
+            mPermanentData->clear();
+            break;
+        case ECollectionContextUnknown:
+        default:
+            // We shouldn't be here
+            needsConfirmation = false;
+            mPermanentData->clear();
+            TX_LOG_ARGS( "Invalid Collection Context" );
+            break;
+    }
+
+    if ( needsConfirmation ) {
+        HbAction *action;
+        HbMessageBox *dialog = new HbMessageBox( HbMessageBox::MessageTypeQuestion );
+
+        dialog->setText( message );
+        dialog->setTimeout( HbPopup::NoTimeout );
+        dialog->clearActions();
+        action = new HbAction( hbTrId( "txt_common_button_yes" ) );
+        action->setObjectName( KOk );
+        dialog->addAction( action );
+        action = new HbAction( hbTrId( "txt_common_button_no" ) );
+        action->setObjectName( KCancel );
+        dialog->addAction( action );
+        dialog->setObjectName( KRequestDeleteMessageBox );
+        dialog->setAttribute( Qt::WA_DeleteOnClose );
+        setOutstandingPopup( dialog );
+        dialog->open( this, SLOT( handleRequestDelete( HbAction* ) ) );
+    }
+
+    TX_EXIT
+}
+
+/*!
  \internal
  sets \a popup as the current outstanding popup and cancels any other previous popup.
  */
@@ -941,6 +1041,7 @@
         HbSelectionDialog *dialog = new HbSelectionDialog();
         dialog->setStringItems( playlists );
         dialog->setSelectionMode( HbAbstractItemView::SingleSelection );
+        dialog->setSelectedItems( QList< QVariant >());
         dialog->setHeadingWidget(new HbLabel( hbTrId( "txt_mus_title_select_playlist" ) ) );
         dialog->clearActions();
         action = new HbAction( hbTrId( "txt_mus_button_new" ) );
@@ -976,7 +1077,10 @@
          playlists.contains( hbTrId( "txt_mus_dialog_enter_name_entry_playlist_l1" ).arg( i ) ) ;
          i++ ) {};
     QString suggestedPlaylistName = hbTrId( "txt_mus_dialog_enter_name_entry_playlist_l1" ).arg( i );
-    getText( hbTrId( "txt_mus_dialog_enter_name" ), suggestedPlaylistName, handler );
+    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
+             suggestedPlaylistName, 
+             hbTrId( "txt_mus_button_create_new" ),
+             handler );
     TX_EXIT
 }
 
@@ -985,9 +1089,12 @@
  Launches an input text dialog.
  \a label Dialog title.
  \a text Suggested text.
+ \a confirmationActionLabel label for the first action on the dialog.
  \a handler Slot to be called when input dialog finishes.
  */
-void MpCollectionPopupHandler::getText( const QString &label, const QString &text,
+void MpCollectionPopupHandler::getText( const QString &label, 
+                                        const QString &text,
+                                        const QString &confirmationActionLabel,
                                         const char *handler )
 {
     TX_ENTRY
@@ -997,9 +1104,16 @@
     dialog->setInputMode( HbInputDialog::TextInput );
     dialog->setValue( text );
     dialog->clearActions();
-    action = new HbAction( hbTrId( "txt_common_button_ok" ) );
+    action = new HbAction( confirmationActionLabel );
     action->setObjectName( KOk );
     dialog->addAction( action );
+    
+    //we want to prevent the user from slecting an empty string.
+    HbLineEdit  * lineEdit;
+    lineEdit = dialog->lineEdit();
+    connect (lineEdit , SIGNAL(textChanged(QString)), SLOT(inputDialogChanged(QString)) );
+    action->setEnabled( !lineEdit->text().isEmpty() );
+    
     action = new HbAction( hbTrId( "txt_common_button_cancel" ) );
     action->setObjectName( KCancel );
     dialog->addAction( action );
@@ -1014,10 +1128,13 @@
  \internal
  Launches a list dialog to select items.
  \a label Dialog title.
+ \a confirmationActionLabel label for the first action on the dialog.
  \a model List model.
  \a handler Slot to be called when list dialog finishes.
  */
-void MpCollectionPopupHandler::getModelIndexes( const QString &label, QAbstractItemModel* model,
+void MpCollectionPopupHandler::getModelIndexes( const QString &label, 
+                                                const QString &confirmationActionLabel,
+                                                QAbstractItemModel* model,
                                                 const char *handler)
 {   
     TX_ENTRY
@@ -1037,7 +1154,7 @@
     }
     dialog->setModel( model );
     dialog->clearActions();
-    action = new HbAction( hbTrId( "txt_common_button_ok" ) );
+    action = new HbAction( confirmationActionLabel );
     action->setObjectName( KOk );
     dialog->addAction( action );
     action = new HbAction( hbTrId( "txt_common_button_cancel" ) );
@@ -1105,72 +1222,6 @@
 
 /*!
  \internal
- Request a delete operation always it has been confirmed.
- \a selection Items selected to be deleted.
- */
-void MpCollectionPopupHandler::requestDelete( QList<int> &selection )
-{
-    TX_ENTRY
-    QString message;
-    mPermanentData->mSelectedItems = selection;
-    bool needsConfirmation = true;
-    connectExternalEvents();
-
-    switch ( mMpEngine->collectionData()->context() ) {
-        case ECollectionContextAllSongs:
-        case ECollectionContextArtistAlbumsTBone:
-        case ECollectionContextArtistAllSongs:
-        case ECollectionContextAlbumsTBone:
-            message = hbTrId( "txt_mus_delete_song" );
-            break;
-        case ECollectionContextArtists:
-            message = hbTrId( "txt_mus_delete_artist" );
-            break;
-        case ECollectionContextAlbums:
-        case ECollectionContextArtistAlbums:
-            message = hbTrId( "txt_mus_delete_album" );
-            break;
-        case ECollectionContextPlaylists:
-            message = hbTrId( "txt_mus_delete_playlist" );
-            break;
-        case ECollectionContextPlaylistSongs:
-            needsConfirmation = false;
-            mMpEngine->deleteSongs( mPermanentData->mSelectedItems );
-            mPermanentData->clear();
-            break;
-        case ECollectionContextUnknown:
-        default:
-            // We shouldn't be here
-            needsConfirmation = false;
-            mPermanentData->clear();
-            TX_LOG_ARGS( "Invalid Collection Context" );
-            break;
-    }
-
-    if ( needsConfirmation ) {
-        HbAction *action;
-        HbMessageBox *dialog = new HbMessageBox( HbMessageBox::MessageTypeQuestion );
-
-        dialog->setText( message );
-        dialog->setTimeout( HbPopup::NoTimeout );
-        dialog->clearActions();
-        action = new HbAction( hbTrId( "txt_common_button_yes" ) );
-        action->setObjectName( KOk );
-        dialog->addAction( action );
-        action = new HbAction( hbTrId( "txt_common_button_no" ) );
-        action->setObjectName( KCancel );
-        dialog->addAction( action );
-        dialog->setObjectName( KRequestDeleteMessageBox );
-        dialog->setAttribute( Qt::WA_DeleteOnClose );
-        setOutstandingPopup( dialog );
-        dialog->open( this, SLOT( handleRequestDelete( HbAction* ) ) );
-    }
-
-    TX_EXIT
-}
-
-/*!
- \internal
  Launches a waiting progress note.
  \a content String id to display in the dialog.
  */
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -304,12 +304,10 @@
 /*!
  Opens or plays an item through collection container in order to keep track of the Artist / Album data used by infobar.
  */
-void MpCollectionView::openItem( int index )
+void MpCollectionView::openItem( const QModelIndex &index )
 {
-    TX_ENTRY_ARGS( "index = " << index );
-    QModelIndex modelIndex;
-    modelIndex = mCollectionDataModel->index( index );
-    qobject_cast<MpCollectionListContainer*>(mCollectionContainer)->itemActivated( modelIndex );
+    TX_ENTRY_ARGS( "index = " << index.row() );
+    qobject_cast<MpCollectionListContainer*>(mCollectionContainer)->itemActivated( index );
     TX_EXIT
 }
 
@@ -668,6 +666,25 @@
 }
 
 /*!
+ Slot to be called when 'New Playlist' is clicked by the user from the menu.
+ */
+void MpCollectionView::createNewPlaylist() 
+{
+    
+    switch ( mCollectionContext ) {
+        case ECollectionContextArtistAlbumsTBone:
+        case ECollectionContextAlbumsTBone:
+            mMpPopupHandler->openCreateNewPlaylistFromTBone();    
+            break;
+        default:
+            //second parameter, means it is an not an isolated collection, 
+            //ownership is  not transferred.
+            mMpPopupHandler->openCreateNewPlaylist( mCollectionData, false );
+            break;
+    }
+}
+
+/*!
  Slot to be called when 'Delete' is clicked by the user from the menu.
  */
 void MpCollectionView::deleteSongs()
@@ -740,7 +757,8 @@
             mMpPopupHandler->openAddToCurrentPlaylist( collectionData );
         }
         else if (ECollectionContextPlaylists == mCollectionContext) {
-            mMpPopupHandler->openCreateNewPlaylist( collectionData );
+            //second parameter, means it is an isolated collection, ownership is transferred.
+            mMpPopupHandler->openCreateNewPlaylist( collectionData, true );
         }
     }
     TX_EXIT
@@ -757,9 +775,9 @@
 /*!
  Slot to be called when an item is long pressed by the user.
  */
-void MpCollectionView::openContextMenu( int index, const QPointF &coords )
+void MpCollectionView::openContextMenu( const QModelIndex &index, const QPointF &coords )
 {
-    TX_ENTRY_ARGS( "index=" << index );
+    TX_ENTRY_ARGS( "index=" << index.row() );
     switch ( mViewMode ) {
         case MpCommon::DefaultView:
             mMpPopupHandler->openDefaultViewContextMenu( index, coords );
@@ -1013,11 +1031,16 @@
                 if ( count <= 1 ) {
                     mShuffleAction->setDisabled( true );
                 }
-                menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                 if ( count && !mUsbBlocked ) {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                     connect( menuAction, SIGNAL( triggered() ), this, SLOT( addToPlaylist() ) );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
+                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( createNewPlaylist() ) );
                 }
                 else {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
+                    menuAction->setDisabled( true );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
                     menuAction->setDisabled( true );
                 }
                 addDefaultMenuOptions( myMenu, true, true );
@@ -1034,11 +1057,16 @@
                 if ( !mShuffleEnabled ) {
                     mShuffleAction->setDisabled( true );
                 }
-                menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                 if ( !mUsbBlocked ) {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                     connect( menuAction, SIGNAL( triggered() ), this, SLOT( addToPlaylist() ) );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
+                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( createNewPlaylist() ) );
                 }
                 else {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
+                    menuAction->setDisabled( true );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
                     menuAction->setDisabled( true );
                 }
                 addDefaultMenuOptions( myMenu, true, true );
@@ -1049,11 +1077,16 @@
                 if ( count <= 1 ) {
                     mShuffleAction->setDisabled( true );
                 }
-                menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                 if ( !mUsbBlocked ) {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
                     connect( menuAction, SIGNAL( triggered() ), this, SLOT( addToPlaylist() ) );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
+                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( createNewPlaylist() ) );
                 }
                 else {
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_add_to_playlist" ) );
+                    menuAction->setDisabled( true );
+                    menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_new_playlist" ) );
                     menuAction->setDisabled( true );
                 }
                 addDefaultMenuOptions( myMenu, true, true );
@@ -1086,6 +1119,8 @@
                 addDefaultMenuOptions( myMenu, true, true );
                 break;
             default:
+                //if we accidentally fall in an unknown context
+                addDefaultMenuOptions( myMenu, false, true );
                 break;
         }
     }
@@ -1097,6 +1132,8 @@
                 addDefaultMenuOptions( myMenu, true, false );
                 break;
             default:
+                //if we accidentally fall in an unknown context
+                addDefaultMenuOptions( myMenu, false, true );
                 break;
         }
     }
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -16,8 +16,8 @@
 
 TEMPLATE = subdirs
 
-#SUBDIRS += unittest_mpcollectioncontainers \
-SUBDIRS += unittest_mpcollectiondocumentloader \
+SUBDIRS += unittest_mpcollectioncontainers \
+           unittest_mpcollectiondocumentloader \
            unittest_mpsnapshotwidget
 
 CONFIG += ordered
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/src/unittest_mpcollectioncontainers.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/src/unittest_mpcollectioncontainers.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -23,12 +23,15 @@
 #include <hbindexfeedback.h>
 #include <hbgroupbox.h>
 #include <hgmediawall.h>
+#include <hbparameterlengthlimiter.h>
 
 #include "mpcommondefs.h"
 #include "mpcollectiondocumentloader.h"
 #include "stub/inc/mpcollectionview.h"
 #include "stub/inc/mpmpxcollectiondata.h"
 #include "stub/inc/mpcollectiondatamodel.h"
+#include "stub/inc/mpengine.h"
+#include "stub/inc/mpenginefactory.h"
 
 #include "unittest_mpcollectioncontainers.h"
 
@@ -135,7 +138,7 @@
     QCOMPARE(mView->mContainerFactory->mCurrentContext, ECollectionContextAllSongs);
     MpCollectionContainerAllSongs *allSongs = static_cast<MpCollectionContainerAllSongs*>(mTest);
     QVERIFY(allSongs->mList == 0);
-    QVERIFY(allSongs->mInfoBar == 0);
+    QVERIFY(allSongs->mInfoBar != 0);
     QVERIFY(allSongs->mNoMusic == 0);
     QVERIFY(allSongs->mIndexFeedback != 0);
     QVERIFY(allSongs->mIndexFeedback->indexFeedbackPolicy() == HbIndexFeedback::IndexFeedbackSingleCharacter);
@@ -152,7 +155,7 @@
     QCOMPARE(mView->mContainerFactory->mCurrentContext, ECollectionContextArtists);
     MpCollectionContainerArtists *artists = static_cast<MpCollectionContainerArtists*>(mTest);
     QVERIFY(artists->mList == 0);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mNoMusic == 0);
     QVERIFY(artists->mIndexFeedback != 0);
     QVERIFY(artists->mIndexFeedback->indexFeedbackPolicy() == HbIndexFeedback::IndexFeedbackSingleCharacter);
@@ -186,7 +189,7 @@
     QCOMPARE(mView->mContainerFactory->mCurrentContext, ECollectionContextAlbums);
     MpCollectionContainerAlbums *albums = static_cast<MpCollectionContainerAlbums*>(mTest);
     QVERIFY(albums->mList == 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QVERIFY(albums->mInfoBar != 0);
     QVERIFY(albums->mNoMusic == 0);
     QVERIFY(albums->mIndexFeedback != 0);
     QVERIFY(albums->mIndexFeedback->indexFeedbackPolicy() == HbIndexFeedback::IndexFeedbackSingleCharacter);
@@ -210,7 +213,7 @@
     MpCollectionContainerPlaylists *playlists = static_cast<MpCollectionContainerPlaylists*>(mTest);
 
     QVERIFY(playlists->mList == 0);
-    QVERIFY(playlists->mInfoBar == 0);
+    QVERIFY(playlists->mInfoBar != 0);
     QVERIFY(playlists->mNoMusic == 0);
     QVERIFY(playlists->mIndexFeedback != 0);
     QVERIFY(playlists->mIndexFeedback->indexFeedbackPolicy() == HbIndexFeedback::IndexFeedbackSingleCharacter);
@@ -236,16 +239,13 @@
     QVERIFY(allSongs->mInfoBar != 0);
     QVERIFY(allSongs->mNoMusic == 0);
     QCOMPARE(allSongs->mList->itemRecycling(), true);
-    QCOMPARE(allSongs->mList->scrollingStyle(), HbListView::PanOrFlick);
-    QCOMPARE(allSongs->mList->clampingStyle(), HbListView::BounceBackClamping);
-    QCOMPARE(allSongs->mList->frictionEnabled(), true);
     QCOMPARE(allSongs->mList->longPressEnabled(), true);
     QCOMPARE(allSongs->mList->verticalScrollBarPolicy(), HbScrollArea::ScrollBarAsNeeded);
     QCOMPARE(allSongs->mList->listItemPrototype()->graphicsSize(), HbListViewItem::Thumbnail);
     QVERIFY(allSongs->mIndexFeedback->itemView() == allSongs->mList);
 
     // Normal mode. Should see count.
-    QCOMPARE(allSongs->mInfoBar->heading(), hbTrId("txt_mus_subhead_songs_l1").arg( 5 ) );
+    QCOMPARE(allSongs->mInfoBar->heading(), hbTrId("txt_mus_subhead_songs_l1").arg(5) );
 }
 
 /*!
@@ -274,7 +274,7 @@
     MpCollectionContainerAllSongs *allSongs = static_cast<MpCollectionContainerAllSongs*>(mTest);
 
     QVERIFY(allSongs->mList == 0);
-    QVERIFY(allSongs->mInfoBar == 0);
+    QCOMPARE(allSongs->mInfoBar->heading(), hbTrId("txt_mus_subhead_songs_l1").arg(0) );
     QVERIFY(allSongs->mNoMusic != 0);
 }
 
@@ -292,18 +292,16 @@
     MpCollectionContainerArtists *artists = static_cast<MpCollectionContainerArtists*>(mTest);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtists);
     QVERIFY(artists->mList != 0);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mTBone == 0);
     QVERIFY(artists->mNoMusic == 0);
     QCOMPARE(artists->mList->itemRecycling(), true);
-    QCOMPARE(artists->mList->scrollingStyle(), HbListView::PanOrFlick);
-    QCOMPARE(artists->mList->clampingStyle(), HbListView::BounceBackClamping);
-    QCOMPARE(artists->mList->frictionEnabled(), true);
     QCOMPARE(artists->mList->longPressEnabled(), true);
     QCOMPARE(artists->mList->verticalScrollBarPolicy(), HbScrollArea::ScrollBarAsNeeded);
     QCOMPARE(artists->mList->listItemPrototype()->graphicsSize(), HbListViewItem::Thumbnail);
     QVERIFY(artists->mIndexFeedback->itemView() == artists->mList);
     QVERIFY(artists->mCurrentAlbumIndex == 0);
+    QCOMPARE(artists->mInfoBar->heading(), hbTrId("txt_mus_subhead_artist_1l").arg(5));
 
     // User selects an artist - case where artist has more than 1 album
     mCollectionData->mContext = ECollectionContextArtistAlbums;
@@ -320,7 +318,7 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtistAlbumsTBone);
     QVERIFY(artists->mList != 0);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mTBone != 0);
     QVERIFY(artists->mTBoneListModel != 0);
     QVERIFY(artists->mAlbumIndexOffset == 1);
@@ -343,7 +341,7 @@
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtistAllSongs);
     QVERIFY(artists->mList != 0);
     QVERIFY(artists->mInfoBar != 0);
-    QCOMPARE(artists->mInfoBar->heading(), hbTrId("txt_mus_subtitle_1_all").arg("Title"));
+    QCOMPARE(artists->mInfoBar->heading(), QString(HbParameterLengthLimiter("txt_mus_subtitle_1_all").arg(QString("Title"))));
 
     // User selects back - navigate back to artist albums
     mCollectionData->mContext = ECollectionContextArtistAlbums;
@@ -354,7 +352,7 @@
     mCollectionData->mContext = ECollectionContextArtists;
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtists);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mCurrentAlbumIndex == 0);
 
     // User selects an artist - case where artist has 1 album
@@ -365,7 +363,7 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtistAlbumsTBone);
     QVERIFY(artists->mList != 0);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mTBone != 0);
     QVERIFY(artists->mTBoneListModel != 0);
     QVERIFY(artists->mAlbumIndexOffset == 0);
@@ -376,9 +374,10 @@
     mCollectionData->mContext = ECollectionContextArtists;
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtists);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mTBone == 0);
     QVERIFY(artists->mCurrentAlbumIndex == 0);
+    QCOMPARE(artists->mInfoBar->heading(), hbTrId("txt_mus_subhead_artist_1l").arg(1));
 }
 
 /*!
@@ -415,9 +414,10 @@
     mCollectionData->mContext = ECollectionContextArtists;
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(artists->mCollectionContext, ECollectionContextArtists);
-    QVERIFY(artists->mInfoBar == 0);
+    QVERIFY(artists->mInfoBar != 0);
     QVERIFY(artists->mTBone == 0);
     QVERIFY(artists->mCurrentAlbumIndex == 0);
+    QCOMPARE(artists->mInfoBar->heading(), hbTrId("txt_mus_subhead_artist_1l").arg(1));
 
     // User selects an artist - case where artist has more than 1 album
     mCollectionData->mCount = 5;
@@ -448,7 +448,7 @@
     MpCollectionContainerArtists *artists = static_cast<MpCollectionContainerArtists*>(mTest);
 
     QVERIFY(artists->mList == 0);
-    QVERIFY(artists->mInfoBar == 0);
+    QCOMPARE(artists->mInfoBar->heading(), hbTrId("txt_mus_subhead_artist_1l").arg(0));
     QVERIFY(artists->mTBone == 0);
     QVERIFY(artists->mNoMusic != 0);
 }
@@ -467,17 +467,15 @@
     MpCollectionContainerAlbums *albums = static_cast<MpCollectionContainerAlbums*>(mTest);
     QCOMPARE(albums->mCollectionContext, ECollectionContextAlbums);
     QVERIFY(albums->mList != 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QVERIFY(albums->mInfoBar != 0);
     QVERIFY(albums->mTBone == 0);
     QVERIFY(albums->mNoMusic == 0);
     QCOMPARE(albums->mList->itemRecycling(), true);
-    QCOMPARE(albums->mList->scrollingStyle(), HbListView::PanOrFlick);
-    QCOMPARE(albums->mList->clampingStyle(), HbListView::BounceBackClamping);
-    QCOMPARE(albums->mList->frictionEnabled(), true);
     QCOMPARE(albums->mList->longPressEnabled(), true);
     QCOMPARE(albums->mList->verticalScrollBarPolicy(), HbScrollArea::ScrollBarAsNeeded);
     QCOMPARE(albums->mList->listItemPrototype()->graphicsSize(), HbListViewItem::Thumbnail);
     QVERIFY(albums->mIndexFeedback->itemView() == albums->mList);
+    QCOMPARE(albums->mInfoBar->heading(),hbTrId("txt_mus_subhead_albums_1l").arg(5));
 
     // User selects an album
     QSignalSpy spy(mTest, SIGNAL(findAlbumSongs(int)));
@@ -486,7 +484,7 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(albums->mCollectionContext, ECollectionContextAlbumsTBone);
     QVERIFY(albums->mList != 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QVERIFY(albums->mInfoBar != 0);
     QVERIFY(albums->mTBone != 0);
     QVERIFY(albums->mTBoneListModel != 0);
     QCOMPARE(albums->mTBone->reflectionsEnabled(), false);
@@ -497,8 +495,9 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(albums->mCollectionContext, ECollectionContextAlbums);
     QVERIFY(albums->mList != 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QVERIFY(albums->mInfoBar != 0);
     QVERIFY(albums->mTBone == 0);
+    QCOMPARE(albums->mInfoBar->heading(),hbTrId("txt_mus_subhead_albums_1l").arg(5));
 }
 
 /*!
@@ -524,6 +523,7 @@
     QCOMPARE(albums->mCollectionContext, ECollectionContextAlbumsTBone);
     QVERIFY(albums->mList != 0);
     QVERIFY(albums->mInfoBar != 0);
+    QCOMPARE(albums->mInfoBar->heading(), hbTrId("txt_mus_subtitle_select_song"));
     QVERIFY(albums->mTBone != 0);
     QVERIFY(albums->mTBoneListModel != 0);
     QCOMPARE(albums->mTBone->reflectionsEnabled(), false);
@@ -536,8 +536,9 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(albums->mCollectionContext, ECollectionContextAlbums);
     QVERIFY(albums->mList != 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QVERIFY(albums->mInfoBar != 0);
     QVERIFY(albums->mTBone == 0);
+    QCOMPARE(albums->mInfoBar->heading(),hbTrId("txt_mus_subhead_albums_1l").arg(5));
 }
 
 /*!
@@ -551,7 +552,7 @@
     MpCollectionContainerAlbums *albums = static_cast<MpCollectionContainerAlbums*>(mTest);
 
     QVERIFY(albums->mList == 0);
-    QVERIFY(albums->mInfoBar == 0);
+    QCOMPARE(albums->mInfoBar->heading(),hbTrId("txt_mus_subhead_albums_1l").arg(0));
     QVERIFY(albums->mTBone == 0);
     QVERIFY(albums->mNoMusic != 0);
 }
@@ -570,16 +571,14 @@
     MpCollectionContainerPlaylists *playlists = static_cast<MpCollectionContainerPlaylists*>(mTest);
     QCOMPARE(playlists->mCollectionContext, ECollectionContextPlaylists);
     QVERIFY(playlists->mList != 0);
-    QVERIFY(playlists->mInfoBar == 0);
+    QVERIFY(playlists->mInfoBar != 0);
     QVERIFY(playlists->mNoMusic == 0);
     QCOMPARE(playlists->mList->itemRecycling(), true);
-    QCOMPARE(playlists->mList->scrollingStyle(), HbListView::PanOrFlick);
-    QCOMPARE(playlists->mList->clampingStyle(), HbListView::BounceBackClamping);
-    QCOMPARE(playlists->mList->frictionEnabled(), true);
     QCOMPARE(playlists->mList->longPressEnabled(), true);
     QCOMPARE(playlists->mList->verticalScrollBarPolicy(), HbScrollArea::ScrollBarAsNeeded);
     QCOMPARE(playlists->mList->listItemPrototype()->graphicsSize(), HbListViewItem::Thumbnail);
     QVERIFY(playlists->mIndexFeedback->itemView() == 0 );
+    QCOMPARE(playlists->mInfoBar->heading(),hbTrId("txt_mus_subhead_playlists_1l").arg(5));
 
     // User selects a playlist
     mCollectionData->mContext = ECollectionContextPlaylistSongs;
@@ -588,14 +587,15 @@
     QVERIFY(playlists->mList != 0);
     QVERIFY(playlists->mInfoBar != 0);
     QVERIFY(playlists->mNoMusic == 0);
-    QCOMPARE(playlists->mInfoBar->heading(), QString("Title"));
-
+    QCOMPARE(playlists->mInfoBar->heading(), QString(HbParameterLengthLimiter("txt_mus_subhead_1_2l").arg(QString("Title")).arg(5)));
+    
     // User selects back - navigate back to playlists
     mCollectionData->mContext = ECollectionContextPlaylists;
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(playlists->mCollectionContext, ECollectionContextPlaylists);
     QVERIFY(playlists->mList != 0);
-    QVERIFY(playlists->mInfoBar == 0);
+    QVERIFY(playlists->mInfoBar != 0);
+    QCOMPARE(playlists->mInfoBar->heading(),hbTrId("txt_mus_subhead_playlists_1l").arg(5));
 }
 
 /*!
@@ -627,7 +627,8 @@
     mTest->setDataModel(mCollectionDataModel);
     QCOMPARE(playlists->mCollectionContext, ECollectionContextPlaylists);
     QVERIFY(playlists->mList != 0);
-    QVERIFY(playlists->mInfoBar == 0);
+    QVERIFY(playlists->mInfoBar != 0);
+    QCOMPARE(playlists->mInfoBar->heading(),hbTrId("txt_mus_subhead_playlists_1l").arg(5));
 }
 
 /*!
@@ -641,7 +642,7 @@
     MpCollectionContainerPlaylists *playlists = static_cast<MpCollectionContainerPlaylists*>(mTest);
 
     QVERIFY(playlists->mList == 0);
-    QVERIFY(playlists->mInfoBar == 0);
+    QCOMPARE(playlists->mInfoBar->heading(), QString(HbParameterLengthLimiter("txt_mus_subhead_1_2l").arg(QString("Title")).arg(0)));
     QVERIFY(playlists->mNoMusic != 0);
 }
 
@@ -758,34 +759,36 @@
 */
 void TestMpCollectionContainers::testOnLongPressed()
 {
+    qRegisterMetaType<QModelIndex>("QModelIndex");
+
     mTest = mView->mContainerFactory->createContainer(ECollectionContextAllSongs);
-    QSignalSpy spy(mTest, SIGNAL(itemLongPressed( int, QPointF )));
+    QSignalSpy spy(mTest, SIGNAL(itemLongPressed( QModelIndex, QPointF )));
 
     HbListView *viewItem = new HbListView();
     static_cast<MpCollectionContainerAllSongs*>(mTest)->onLongPressed(viewItem->listItemPrototype(), QPointF());
     QCOMPARE(spy.count(), 1);
-    QCOMPARE(qvariant_cast<int>(spy.at(0).at(0)), -1);
+    QCOMPARE(qvariant_cast<int>(spy.at(0).at(0)), 0);
 
     mTest = 0;
     mTest = mView->mContainerFactory->createContainer(ECollectionContextArtists);
-    QSignalSpy spy2(mTest, SIGNAL(itemLongPressed( int, QPointF )));
+    QSignalSpy spy2(mTest, SIGNAL(itemLongPressed( QModelIndex, QPointF )));
     static_cast<MpCollectionContainerArtists*>(mTest)->onLongPressed(viewItem->listItemPrototype(), QPointF());
     QCOMPARE(spy2.count(), 1);
-    QCOMPARE(qvariant_cast<int>(spy2.at(0).at(0)), -1);
+    QCOMPARE(qvariant_cast<int>(spy2.at(0).at(0)), 0);
 
     mTest = 0;
     mTest = mView->mContainerFactory->createContainer(ECollectionContextAlbums);
-    QSignalSpy spy3(mTest, SIGNAL(itemLongPressed( int, QPointF )));
+    QSignalSpy spy3(mTest, SIGNAL(itemLongPressed( QModelIndex, QPointF )));
     static_cast<MpCollectionContainerAlbums*>(mTest)->onLongPressed(viewItem->listItemPrototype(), QPointF());
     QCOMPARE(spy3.count(), 1);
-    QCOMPARE(qvariant_cast<int>(spy3.at(0).at(0)), -1);
+    QCOMPARE(qvariant_cast<int>(spy3.at(0).at(0)), 0);
 
     mTest = 0;
     mTest = mView->mContainerFactory->createContainer(ECollectionContextPlaylists);
-    QSignalSpy spy4(mTest, SIGNAL(itemLongPressed( int, QPointF )));
+    QSignalSpy spy4(mTest, SIGNAL(itemLongPressed( QModelIndex, QPointF )));
     static_cast<MpCollectionContainerPlaylists*>(mTest)->onLongPressed(viewItem->listItemPrototype(), QPointF());
     QCOMPARE(spy4.count(), 1);
-    QCOMPARE(qvariant_cast<int>(spy4.at(0).at(0)), -1);
+    QCOMPARE(qvariant_cast<int>(spy4.at(0).at(0)), 0);
 }
 
 
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiondatamodel.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiondatamodel.h	Fri Sep 17 08:28:52 2010 +0300
@@ -23,6 +23,7 @@
 
 class MpMpxCollectionData;
 class MpCollectionAlbumArtManager;
+class MpPlaybackData;
 
 
 class MpCollectionDataModel : public QAbstractListModel
@@ -31,7 +32,8 @@
 
 public:
 
-    explicit MpCollectionDataModel( MpMpxCollectionData *data, QObject *parent=0 );
+    explicit MpCollectionDataModel( MpMpxCollectionData *data,  MpPlaybackData *playbackData = 0,
+            QObject *parent=0 );
     virtual ~MpCollectionDataModel();
 
     int rowCount(const QModelIndex &parent=QModelIndex()) const;
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiontbonelistdatamodel.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectiontbonelistdatamodel.h	Fri Sep 17 08:28:52 2010 +0300
@@ -22,6 +22,7 @@
 #include <QAbstractListModel>
 
 class MpMpxCollectionData;
+class MpPlaybackData;
 
 class MpCollectionTBoneListDataModel : public QAbstractListModel
 {
@@ -29,7 +30,8 @@
 
 public:
 
-    explicit MpCollectionTBoneListDataModel( MpMpxCollectionData *data, QObject *parent=0 );
+    explicit MpCollectionTBoneListDataModel( MpMpxCollectionData *data, MpPlaybackData *playbackData = 0,
+            QObject *parent=0 );
     virtual ~MpCollectionTBoneListDataModel();
 
     int rowCount(const QModelIndex &parent=QModelIndex()) const;
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectionview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpcollectionview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -57,7 +57,7 @@
 public slots:
 
     void openIndex( int index );
-    void openContextMenu( int index, const QPointF &coords );
+    void openContextMenu( const QModelIndex &index, const QPointF &coords );
     void findAlbumSongs( int index );
     void playAlbumSongs( int albumIndex, int songIndex );
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* 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 stub for mpplaybackview.
+*
+*/
+
+#ifndef MPENGINE_H
+#define MPENGINE_H
+
+#include <QObject>
+#include <QStringList>
+
+
+class MpPlaybackData;
+
+class MpEngine : public QObject
+{
+    Q_OBJECT
+
+  friend class MpEngineFactory;
+
+public:
+    enum EngineMode{
+        StandAlone,
+        Fetch,
+        Embedded,
+        MediaBrowsing
+    };
+    
+private:
+    explicit MpEngine();
+
+public:
+
+    virtual ~MpEngine();
+
+    MpPlaybackData *playbackData();
+    void retrieveSongDetails();
+   
+    // Equalizer related
+    void applyPreset( int preset );
+    void disableEqualizer();
+    int activePreset();
+    QStringList presetNames();
+
+public slots:
+    // Playback related
+    void stop();
+    void setShuffle(bool mode);
+    void setRepeat( bool mode);
+    void startSeekBackward();
+    void startSeekForward();
+    void stopSeeking();
+    void skipBackward();
+    void skipForward();
+    void playPause();
+    void setPosition( int position );
+
+signals:
+
+    // Equalizer related
+    void libraryUpdated();
+    void corruptedStop();
+
+private:
+    Q_DISABLE_COPY( MpEngine )
+
+public:
+    int mActivePreset;
+    int mApplyPresetCount;
+    int mDisableEquqlizerCount;
+    int retrieveSongDetailsCount;
+    int stopCount;
+    int startSeekBackwardCount;
+    int startSeekForwardCount;
+    int stopSeekingCount;
+    int skipBackwardCount;
+    int skipForwardCount;
+
+};
+
+#endif // MPENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* 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: MpEngineFactory stub for testing mpplaybackview
+*
+*/
+
+#ifndef MPENGINEFACTORY_H
+#define MPENGINEFACTORY_H
+
+#include <hbglobal.h>
+#include "mpengine.h"
+
+class MpPlaybackData;
+
+class MpEngineFactory
+{
+    
+public:
+    // Stub functions
+private:
+    explicit MpEngineFactory();
+
+public:
+    virtual ~MpEngineFactory();
+    static MpEngineFactory * instance(); 
+    static MpEngine * sharedEngine();
+    
+private:
+    Q_DISABLE_COPY( MpEngineFactory )
+    
+    MpEngine *mSharedEngine;
+  
+};
+
+
+#endif // MPENGINEFACTORY_H
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpnowplayingwidget.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpnowplayingwidget.h	Fri Sep 17 08:28:52 2010 +0300
@@ -19,9 +19,9 @@
 #define MPNOWPLAYINGWIDGET_H
 
 //includes
-#include <QObject>
+#include <hbwidget.h>
 
-class MpNowPlayingWidget : public QObject
+class MpNowPlayingWidget : public HbWidget
 {
     Q_OBJECT
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/inc/mpplaybackdata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -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: mpplaybackdata stub for testing mpmediawallview
+*
+*/
+
+#ifndef MPPLAYBACKDATA_H
+#define MPPLAYBACKDATA_H
+
+//includes
+#include <QObject>
+#include <QMetaType>
+#include <hbicon.h>
+
+class MpPlaybackData : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    enum SimplifiedState {
+        NotPlaying,
+        Playing,
+        Paused,
+        Stopped
+    };
+
+
+    explicit MpPlaybackData();
+    virtual ~MpPlaybackData();
+
+signals:
+    void playbackStateChanged();
+    void playbackInfoChanged();
+
+public:
+
+    int id();
+    void setPlaybackState( const SimplifiedState state );
+    MpPlaybackData::SimplifiedState playbackState() const;
+
+public:
+
+    MpPlaybackData::SimplifiedState mPlaybackState;
+};
+
+#endif  // MPPLAYBACKDATA_H
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiondatamodel.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiondatamodel.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -19,16 +19,18 @@
 
 #include "stub/inc/mpcollectiondatamodel.h"
 #include "stub/inc/mpmpxcollectiondata.h"
+#include "stub/inc/mpplaybackdata.h"
 #include "mptrace.h"
 
 
 /*!
  Stub function
  */
-MpCollectionDataModel::MpCollectionDataModel( MpMpxCollectionData *data, QObject *parent )
+MpCollectionDataModel::MpCollectionDataModel( MpMpxCollectionData *data, MpPlaybackData *playbackData, QObject *parent )
     : QAbstractListModel(parent),
       mCollectionData(data)
 {
+    Q_UNUSED(playbackData);
     TX_LOG
 }
 
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiontbonelistdatamodel.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectiontbonelistdatamodel.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -18,16 +18,19 @@
 
 #include "stub/inc/mpcollectiontbonelistdatamodel.h"
 #include "stub/inc/mpmpxcollectiondata.h"
+#include "stub/inc/mpplaybackdata.h"
 #include "mptrace.h"
 
 /*!
  Stub function
  */
-MpCollectionTBoneListDataModel::MpCollectionTBoneListDataModel( MpMpxCollectionData *data, QObject *parent )
+MpCollectionTBoneListDataModel::MpCollectionTBoneListDataModel( MpMpxCollectionData *data, 
+        MpPlaybackData *playbackData, QObject *parent )
     : QAbstractListModel(parent),
       mCollectionData(data),
       mRowCount(0)
 {
+    Q_UNUSED(playbackData);
     TX_LOG
 }
 
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectionview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpcollectionview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -78,7 +78,7 @@
 /*!
  Stub function
  */
-void MpCollectionView::openContextMenu( int index, const QPointF &coords )
+void MpCollectionView::openContextMenu( const QModelIndex &index, const QPointF &coords )
 {
     Q_UNUSED(index);
     Q_UNUSED(coords);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,170 @@
+/*
+* 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: Stub for MpEngine
+*
+*/
+
+#include "mpengine.h"
+#include "stub\inc\mpplaybackdata.h"
+#include "mptrace.h"
+
+
+/*!
+  Stub
+  */
+MpEngine::MpEngine()
+{
+    TX_LOG_ARGS("Stub")
+}
+
+/*!
+  Stub
+  */
+MpEngine::~MpEngine()
+{
+    TX_ENTRY_ARGS("Stub")
+}
+
+
+/*!
+  Stub
+  */
+void MpEngine::applyPreset( int preset )
+{
+    mApplyPresetCount++;
+    mActivePreset = preset;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::disableEqualizer()
+{
+    mDisableEquqlizerCount++;
+    mActivePreset = -1;
+}
+
+/*!
+  Stub
+  */
+int MpEngine::activePreset()
+{
+    return mActivePreset;
+}
+
+/*!
+  Stub
+  */
+QStringList MpEngine::presetNames()
+{
+    QStringList presets;
+    presets << "Bass Booster" << "Classic" << "Jazz" << "Pop" << "Rock" << "New Preset";
+    return presets;
+}
+
+
+/*!
+  Stub
+  */
+MpPlaybackData *MpEngine::playbackData()
+{
+    return new MpPlaybackData();
+}
+
+/*!
+  Stub
+  */
+void MpEngine::stop()
+{
+    stopCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::retrieveSongDetails()
+{
+    retrieveSongDetailsCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::setShuffle( bool mode )
+{
+    Q_UNUSED(mode)
+}
+/*!
+  Stub
+  */
+void MpEngine::setRepeat( bool mode )
+{
+    Q_UNUSED(mode)
+}
+
+/*!
+  Stub
+  */
+void MpEngine::startSeekBackward()
+{
+    startSeekBackwardCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::startSeekForward()
+{
+    startSeekForwardCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::stopSeeking()
+{
+    stopSeekingCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::skipBackward()
+{
+    skipBackwardCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::skipForward()
+{
+    skipForwardCount++;
+}
+
+/*!
+  Stub
+  */
+void MpEngine::playPause()
+{
+
+}
+
+/*!
+  Stub
+  */
+void MpEngine::setPosition(int position)
+{
+    Q_UNUSED(position)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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: MpEngineFactory stub for testing mpplaybackview
+*
+*/
+
+
+#include "stub/inc/mpenginefactory.h"
+#include "stub/inc/mpplaybackdata.h"
+#include "stub/inc/mpengine.h"
+
+
+
+/*!
+ *  Stub function
+ */
+
+/*!
+ *  Stub function
+ */
+MpEngineFactory::MpEngineFactory()
+    : mSharedEngine( 0 )
+{
+}
+
+/*!
+ *  Stub function
+ */
+MpEngineFactory::~MpEngineFactory()
+{
+}
+
+/*!
+ *  Stub function
+ */
+MpEngineFactory * MpEngineFactory::instance()
+{
+    static MpEngineFactory instance;
+    return &instance;
+}
+
+/*!
+ *  Stub function
+ */
+MpEngine *MpEngineFactory::sharedEngine()
+{
+    if ( !instance()->mSharedEngine ) {
+        instance()->mSharedEngine = new MpEngine();
+    }
+    return instance()->mSharedEngine;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/stub/src/mpplaybackdata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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: MpPlaybackData stub for testing mpnowplayingwidget
+*
+*/
+
+#include "stub/inc/mpplaybackdata.h"
+
+
+int gUpdateCounter = 0;
+
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::MpPlaybackData()
+    : mPlaybackState(NotPlaying)
+{
+    gUpdateCounter++;
+}
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::~MpPlaybackData()
+{
+}
+
+/*!
+ Stub function.
+ */
+int MpPlaybackData::id()
+{
+    return 0;
+}
+
+/*!
+ Stub function.
+ */
+void MpPlaybackData::setPlaybackState(MpPlaybackData::SimplifiedState state)
+{
+    mPlaybackState=state;
+}
+
+/*!
+ Stub function.
+ */
+MpPlaybackData::SimplifiedState MpPlaybackData::playbackState() const
+{
+    return mPlaybackState;
+}
--- a/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/unittest_mpcollectioncontainers.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpcollectionviewplugin/tsrc/unittest_mpcollectioncontainers/unittest_mpcollectioncontainers.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -44,8 +44,11 @@
            stub/inc/mpmpxcollectiondata.h \
            stub/inc/mpcollectionview.h \
     	   stub/inc/hgmediawall.h \
-	   stub/inc/mpnowplayingwidget.h
-
+	   stub/inc/mpnowplayingwidget.h\
+	   stub/inc/mpplaybackdata.h \
+	   stub/inc/mpengine.h \
+	   stub/inc/mpenginefactory.h
+	  
 SOURCES += src/unittest_mpcollectioncontainers.cpp \
            ../../src/mpcollectioncontainerfactory.cpp \
            ../../src/mpcollectioncontainer.cpp \
@@ -60,7 +63,11 @@
            stub/src/mpmpxcollectiondata.cpp \
            stub/src/mpcollectionview.cpp \
 	   stub/src/hgmediawall.cpp \
-	   stub/src/mpnowplayingwidget.cpp 
+	   stub/src/mpnowplayingwidget.cpp \
+	   stub/src/mpplaybackdata.cpp \
+	   stub/src/mpengine.cpp \
+	   stub/src/mpenginefactory.cpp
+	  
 
 RESOURCES += ../../resources/mpcollectionviewresources.qrc
 
--- a/mpviewplugins/mpdetailsviewplugin/tsrc/UT_ALL_mpdetailsviewplugin.pkg	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"UT_ALL_mpdetailsviewplugin"},(0xEab0059a),1,0,0
-
-; Localised Vendor name
-%{"Vendor"}
-
-; Unique Vendor name
-:"Vendor"
-
-; Executable and default resource files
-
-"/epoc32/release/armv5/udeb/unittest_mpdetailsview.exe"    - "!:\sys\bin\unittest_mpdetailsview.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpdetailsview_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpdetailsview_reg.rsc"
-
-"/epoc32/release/armv5/udeb/unittest_mpdetailsviewplugin.exe"    - "!:\sys\bin\unittest_mpdetailsviewplugin.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpdetailsviewplugin_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpdetailsviewplugin_reg.rsc"
-
-"/epoc32/release/armv5/udeb/unittest_mpquerymanager.exe"    - "!:\sys\bin\unittest_mpquerymanager.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpquerymanager_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpquerymanager_reg.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpdetailsviewplugin/tsrc/sis/UT_ALL_mpdetailsviewplugin.pkg	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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
+#{"UT_ALL_mpdetailsviewplugin"},(0xEab0059a),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Executable and default resource files
+
+"/epoc32/release/armv5/udeb/unittest_mpdetailsview.exe"    - "!:\sys\bin\unittest_mpdetailsview.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpdetailsview_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpdetailsview_reg.rsc"
+
+"/epoc32/release/armv5/udeb/unittest_mpdetailsviewplugin.exe"    - "!:\sys\bin\unittest_mpdetailsviewplugin.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpdetailsviewplugin_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpdetailsviewplugin_reg.rsc"
+
+"/epoc32/release/armv5/udeb/unittest_mpquerymanager.exe"    - "!:\sys\bin\unittest_mpquerymanager.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/unittest_mpquerymanager_reg.rsc"    - "!:\private\10003a3f\import\apps\unittest_mpquerymanager_reg.rsc"
--- a/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -32,8 +32,8 @@
 public:
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance();
-    
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode = MpEngine::StandAlone );
     static MpEngine *sharedEngine();
     static void close();
 	
--- a/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpdetailsview/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -54,10 +54,10 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid /*hostUid*/ , MpEngine::EngineMode /*mode*/ )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 /*clientSecureId*/ , MpEngine::EngineMode /*mode*/ )
 {
     TX_LOG_ARGS("MpEngineFactory::createSharedEngine() Stub")
     if ( !instance()->mSharedEngine ) {
--- a/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpquerymanager/src/unittest_mpquerymanager.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_mpquerymanager/src/unittest_mpquerymanager.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -61,14 +61,17 @@
 
     TestMpQueryManager tv;
 
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\unittest_testmpquerymanager.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_testmpquerymanager.txt";
 
-    int res = QTest::qExec(&tv, 3, pass);
-
-    return res;
+        return QTest::qExec(&tv, 3, pass);
+    }
 }
 
 //Constructor
--- a/mpviewplugins/mpmediawallviewplugin/inc/mpmediawallview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/inc/mpmediawallview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -29,7 +29,6 @@
 class HbLabel;
 class MpMediaWallDocumentLoader;
 class HbAction;
-class HbIcon;
 class MpPlaybackData;
 class QParallelAnimationGroup;
 class QPropertyAnimation;
@@ -58,8 +57,6 @@
     void containerContentsChanged();
     void libraryAboutToUpdate();
     void libraryUpdated();
-    void sendToBackground();
-    void updatePlayPauseAction();
     void hideTracksList();
     void showTrackList();
     void dismissListClosingAnimation();
@@ -80,14 +77,8 @@
     HgMediawall                  *mMediaWallWidget;        // own - parented
     HbLabel                      *mNoMusic;                // own - parented
     MpMediaWallDocumentLoader    *mDocumentLoader;         // own
-    QGraphicsWidget              *mPlayPauseContainer;     // own - parented
-    HbIcon                       *mPlayIcon;               // own
-    HbIcon                       *mPauseIcon;              // own
-    HbAction                     *mPlayPauseAction;        // own - parented
     bool                         mLibraryUpdating;
     MpPlaybackData               *mPlaybackData;           // not own
-    bool                         mActivated;
-    bool                         mIconUpdateNedded;
     QParallelAnimationGroup      *mListShowAnimationGroup; // own - parented
     QPropertyAnimation           *mListShowListAnimation;  // own - parented
     QPropertyAnimation           *mCoverShowListAnimation; // own - parented
--- a/mpviewplugins/mpmediawallviewplugin/inc/mpreflectioneffect.h	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* 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:  reflection effect for Music Player Media Wall.
-*
-*/
-#ifndef MPREFLECTIONEFFECT_H
-#define MPREFLECTIONEFFECT_H
-
-#include <QGraphicsEffect>
-
-class MpReflectionEffect: public QGraphicsEffect
-{
-    Q_OBJECT
-
-public:
-    MpReflectionEffect(QObject *parent = 0);
-    ~MpReflectionEffect();
-
-    QRectF boundingRectFor(const QRectF &rect) const;
-
-protected:
-    void draw(QPainter *painter);
-
-private:
-    Q_DISABLE_COPY(MpReflectionEffect)
-};
-
-#endif // MPREFLECTIONEFFECT_H
-
-// EOF
--- a/mpviewplugins/mpmediawallviewplugin/inc/mptracklistwidget.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/inc/mptracklistwidget.h	Fri Sep 17 08:28:52 2010 +0300
@@ -35,6 +35,7 @@
     HbListView *list(); 
 
 
+
 signals:
 
     void closed();
@@ -44,6 +45,8 @@
     void mousePressEvent( QGraphicsSceneMouseEvent *event );
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
     void gestureEvent(QGestureEvent *event);
+    void paint( QPainter *painter, const QStyleOptionGraphicsItem *option, 
+            QWidget *widget = 0 );
     QSwipeGesture::SwipeDirection swipeAngleToDirection( int angle );
     
 private:
--- a/mpviewplugins/mpmediawallviewplugin/mpmediawallviewplugin.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/mpmediawallviewplugin.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -47,13 +47,11 @@
            inc/mpmediawallviewplugin.h \
            inc/mpmediawallview.h \
            inc/mpmediawalldocumentloader.h \
-           inc/mptracklistwidget.h \
-           inc/mpreflectioneffect.h
+           inc/mptracklistwidget.h
 SOURCES += src/mpmediawallviewplugin.cpp \
            src/mpmediawallview.cpp \
            src/mpmediawalldocumentloader.cpp \
-           src/mptracklistwidget.cpp \
-           src/mpreflectioneffect.cpp
+           src/mptracklistwidget.cpp
 RESOURCES += resources/mpmediawallviewresources.qrc
 
 DOCML += resources/mediawall.docml
--- a/mpviewplugins/mpmediawallviewplugin/resources/mediawall.docml	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/resources/mediawall.docml	Fri Sep 17 08:28:52 2010 +0300
@@ -4,25 +4,8 @@
     <widget name="container" type="HbWidget">
         
         <widget name="mediawalContainer" type="HbWidget"/>
-        
-        <!-- for some reason we cannot hide the hbtoolbutton, suing a container to be able to hide -->
-        <widget name="playPauseButtonContainer" type="HbWidget">
-            <widget name="playPauseButton" type="HbToolButton">
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="var(hb-param-touch-area-gene-primary-small)" type="FIXED" width="var(hb-param-touch-area-gene-primary-medium)"/>
-            </widget>
-        </widget>
-        
-        <widget name="navigationButton" type="HbToolButton">
-            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-            <sizehint height="var(hb-param-touch-area-gene-primary-small)" type="FIXED" width="var(hb-param-touch-area-gene-primary-medium)"/>
-        </widget>
-        
+               
         <layout type="anchor" >
-            <anchoritem dst="playPauseButtonContainer" dstEdge="LEFT" spacing="0.0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="playPauseButtonContainer" dstEdge="TOP" spacing="0.0" src="" srcEdge="TOP"/>
-            <anchoritem dst="navigationButton" dstEdge="RIGHT" spacing="0.0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="navigationButton" dstEdge="TOP" spacing="0.0" src="" srcEdge="TOP"/>
             <anchoritem dst="mediawalContainer" dstEdge="LEFT" spacing="0.0" src="" srcEdge="LEFT"/>
             <anchoritem dst="mediawalContainer" dstEdge="TOP" spacing="0.0" src="" srcEdge="TOP"/>
             <anchoritem dst="mediawalContainer" dstEdge="RIGHT" spacing="0.0" src="" srcEdge="RIGHT"/>
--- a/mpviewplugins/mpmediawallviewplugin/resources/mpcustomlistitem.hblistviewitem.widgetml	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/resources/mpcustomlistitem.hblistviewitem.widgetml	Fri Sep 17 08:28:52 2010 +0300
@@ -14,12 +14,12 @@
     -->
     <layout name="mpmwtracklist-1" type="mesh">
    
-        <meshitem src="text-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)"/>
-        <meshitem src="text-1" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-middle-vertical)"/>
+        <meshitem src="text-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)"/>
+        <meshitem src="text-1" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)"/>
         <meshitem src="text-1" srcEdge="RIGHT" dst="icon-2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
-        <meshitem src="text-1" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-middle-vertical)" />
+        <meshitem src="text-1" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)" />
           
-        <meshitem src="icon-2" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
+        <meshitem src="icon-2" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-widget-scroll-bar-interactive-width)" />
         <meshitem src="icon-2" srcEdge="CENTERV" dst="text-1" dstEdge="CENTERV" />
           
         <meshitem src="text-2" srcEdge="LEFT" dst="" dstEdge="LEFT"/>
@@ -41,10 +41,10 @@
             text-1: connected from TOP to item TOP and BOTTOM to item BOTTOM
     -->
     <layout name="mpmwtracklist-2" type="mesh">
-        <meshitem src="text-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-middle-horizontal)"/>
-        <meshitem src="text-1" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-middle-vertical)"/>
-        <meshitem src="text-1" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
-        <meshitem src="text-1" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-middle-vertical)" />
+        <meshitem src="text-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)"/>
+        <meshitem src="text-1" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)"/>
+        <meshitem src="text-1" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-widget-scroll-bar-interactive-width)" />
+        <meshitem src="text-1" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="expr((var(hb-param-touch-area-gene-primary-small)-var(hb-param-text-height-secondary))/2)" />
           
         <meshitem src="text-2" srcEdge="LEFT" dst="" dstEdge="LEFT"/>
         <meshitem src="text-3" srcEdge="LEFT" dst="" dstEdge="LEFT"/>
--- a/mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall.css	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall.css	Fri Sep 17 08:28:52 2010 +0300
@@ -22,9 +22,9 @@
   text-line-count-min:1;
   text-line-count-max:1;
   text-wrap-mode:no-wrap;
-  left:-expr(var(hb-param-touch-area-gene-primary-medium)+var(hb-param-margin-gene-left));
-  right:expr(var(hb-param-touch-area-gene-primary-medium)+var(hb-param-margin-gene-right));
-  top:0un;
+  left:-var(hb-param-margin-gene-screen);
+  right:var(hb-param-margin-gene-screen);
+  top:-var(hb-param-margin-gene-middle-vertical);
   bottom:0un;
   zvalue: 2;
 }
@@ -37,9 +37,9 @@
   text-line-count-min:1;
   text-line-count-max:1;
   text-wrap-mode:no-wrap;
-  left:-expr(var(hb-param-touch-area-gene-primary-medium)+var(hb-param-margin-gene-left));
-  right:expr(var(hb-param-touch-area-gene-primary-medium)+var(hb-param-margin-gene-right));
-  top:0un;
+  left:-var(hb-param-margin-gene-screen);
+  right:var(hb-param-margin-gene-screen);
+  top:-var(hb-param-margin-gene-middle-vertical);
   bottom:0un;
   zvalue: 2;
 }
@@ -47,11 +47,11 @@
 HgMediawall#MPmediaWallWidget::centeritem
 {
   size-policy: fixed fixed;
-  fixed-height: 41un;
-  fixed-width: 41un;
+  fixed-height: expr(var(hb-param-screen-short-edge)-var(hb-param-text-height-primary)-var(hb-param-text-height-secondary)-4*var(hb-param-margin-gene-middle-vertical)-var(hb-param-widget-scroll-bar-indicative-width));
+  fixed-width:  expr(var(hb-param-screen-short-edge)-var(hb-param-text-height-primary)-var(hb-param-text-height-secondary)-4*var(hb-param-margin-gene-middle-vertical)-var(hb-param-widget-scroll-bar-indicative-width));
   left:0un;
   right:0un;
-  top:0un;
+  top:-var(hb-param-margin-gene-middle-vertical);
   bottom:0un;
   zvalue: 2;
 }
--- a/mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall_color.css	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/resources/mpcustommediawall_color.css	Fri Sep 17 08:28:52 2010 +0300
@@ -1,9 +1,9 @@
 HgMediawall#MPmediaWallWidget::title
 {
-    color: var(qtg_view_normal);
+    color: var(qtc_view_normal);
 }
 
 HgMediawall#MPmediaWallWidget::description
 {
-    color: var(qtg_view_normal_secondary);
+    color: var(qtc_view_normal_secondary);
 }
--- a/mpviewplugins/mpmediawallviewplugin/src/mpmediawalldocumentloader.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/src/mpmediawalldocumentloader.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -16,7 +16,6 @@
 */
 
 #include <hgmediawall.h>
-#include <hbtoolbutton.h>
 
 #include "mpmediawalldocumentloader.h"
 #include "mptrace.h"
@@ -45,12 +44,6 @@
         TX_EXIT
         return object;
     }
-    else if ( type == HbToolButton::staticMetaObject.className() ) {
-        QObject *object = new HbToolButton();
-        object->setObjectName(name);
-        TX_EXIT
-        return object;
-    }
 
     TX_EXIT
     return HbDocumentLoader::createObject(type, name);
--- a/mpviewplugins/mpmediawallviewplugin/src/mpmediawallview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/src/mpmediawallview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -23,12 +23,10 @@
 #include <hbapplication.h>
 #include <hbscrollbar.h>
 #include <hblabel.h>
-#include <hbtoolbutton.h>
 #include <hblistview.h>
 #include <hbstyleloader.h>
 #include <hbmessagebox.h>
 
-
 #include <hgmediawall.h>
 
 #include "mpmediawallview.h"
@@ -42,7 +40,6 @@
 #include "mptracklistwidget.h"
 #include "mpcollectiontbonelistdatamodel.h"
 #include "mptrace.h"
-#include "mpreflectioneffect.h"
 
 const char*MUSIC_MEDIAWALL_DOCML = ":/mediawallviewdocml/mediawall.docml";
 
@@ -71,14 +68,8 @@
       mMediaWallWidget( 0 ),
       mNoMusic( 0 ),
       mDocumentLoader( 0 ),
-      mPlayPauseContainer( 0 ),
-      mPlayIcon( 0 ),
-      mPauseIcon( 0 ),
-      mPlayPauseAction( 0 ),
       mLibraryUpdating( false ),
       mPlaybackData( 0 ),
-      mActivated( false ),
-      mIconUpdateNedded( false ),
       mListShowAnimationGroup( 0 ),
       mListShowListAnimation( 0 ),
       mCoverShowListAnimation( 0 ),
@@ -101,8 +92,6 @@
     TX_ENTRY
     //delete not parented objects
     delete mDocumentLoader;
-    delete mPlayIcon;
-    delete mPauseIcon;
     TX_EXIT
 }
 
@@ -121,36 +110,16 @@
     if ( ok ) {
         QGraphicsWidget *widget;
         
-        //Setup fake softkey to hide the app
-        widget = mDocumentLoader->findWidget( QString( "navigationButton" ) );
-        HbAction  *action;
-        action = new HbAction( Hb::BackNaviAction, this );
-        connect( action, SIGNAL( triggered( bool ) ), this, SLOT( sendToBackground() ) );
-        qobject_cast<HbToolButton*>( widget )->setAction( action );
         
-        //Setup the play/pause command button
-        widget = mDocumentLoader->findWidget( QString( "playPauseButton" ) );
-        mPauseIcon = new HbIcon( "qtg_mono_pause" );
-        mPlayIcon = new HbIcon( "qtg_mono_play" );
-        mPlayPauseAction = new HbAction( HbIcon() , QString(), this );  
         mPlaybackData = MpEngineFactory::sharedEngine()->playbackData();
-        qobject_cast<HbToolButton*>( widget )->setAction( mPlayPauseAction );
-        //we need this widget to hide the play pause button, for some reason it does not want to hide.
-        mPlayPauseContainer = mDocumentLoader->findWidget( QString( "playPauseButtonContainer" ) );
-        updatePlayPauseAction();
-        connect( mPlaybackData, SIGNAL( playbackStateChanged() ),
-                 this, SLOT( updatePlayPauseAction() ) );
-        connect( mPlayPauseAction, SIGNAL( triggered( bool ) ),
-                 MpEngineFactory::sharedEngine(), SLOT( playPause() ) );
-
-        
+               
         //Get the main container and set as widget.
         widget = mDocumentLoader->findWidget( QString( "container" ) );
         setWidget( widget );
         
         mEngine = MpEngineFactory::createIsolatedEngine( MpEngine::MediaBrowsing );
         mCollectionData = mEngine->collectionData();
-        mModel = new MpCollectionDataModel( mCollectionData, mPlaybackData, this );
+        mModel = new MpCollectionDataModel( mCollectionData, 0, this );
         
         connect( mCollectionData, SIGNAL( contextChanged( TCollectionContext ) ), 
                  this, SLOT( contextOpened( TCollectionContext ) ) );
@@ -164,19 +133,17 @@
         TX_LOG_ARGS( "Error: invalid xml file." );
         Q_ASSERT_X( ok, "MpCollectionView::initializeView", "invalid xml file" );
     }
-    
-    mAlbumCover = new MpAlbumCoverWidget( this );
-    mAlbumCover->setGraphicsEffect( new MpReflectionEffect(mAlbumCover) );
-    mAlbumCover->setDefaultIcon( HbIcon( "qtg_large_album_art" ) );
-    mAlbumCover->hide();
-    
+       
     mTrackList = new MpTrackListWidget( this );
-    mTrackList->setGraphicsEffect( new MpReflectionEffect(mTrackList) );
     MpCollectionTBoneListDataModel *model = new MpCollectionTBoneListDataModel(mCollectionData, mPlaybackData, mTrackList );
     model->enablePlaybackIndicatorEnable(true);
     mTrackList->list()->setModel( model );
     mTrackList->hide();
     
+    mAlbumCover = new MpAlbumCoverWidget( this );
+    mAlbumCover->setDefaultIcon( HbIcon( "qtg_large_album_art" ) );
+    mAlbumCover->hide();
+    
     connect(mAlbumCover,SIGNAL(clicked()),this, SLOT(hideTracksList()));
     connect(mTrackList->list(), SIGNAL(activated(QModelIndex)), this, SLOT(listItemActivated(QModelIndex)));
     connect(mTrackList,SIGNAL(closed()),this, SLOT(hideTracksList()));
@@ -194,11 +161,6 @@
 void MpMediaWallView::activateView()
 {
     TX_ENTRY
-    mActivated = true;
-    if ( mIconUpdateNedded ) {
-        updatePlayPauseAction();
-        mIconUpdateNedded = false;
-    }
     scrollToNowPlaying();   
     TX_EXIT
 }
@@ -209,7 +171,6 @@
 void MpMediaWallView::deactivateView()
 {
     TX_ENTRY
-    mActivated = false;
     dismissListClosingAnimation();
     TX_EXIT
 }
@@ -241,8 +202,6 @@
                 widget = mDocumentLoader->findWidget(QString("MPmediaWallWidget"));
                 mMediaWallWidget = qobject_cast<HgMediawall*>(widget);
                 //set these items as children of the media wall so they show behind the scrollbar.
-                mTrackList->setParentItem(mMediaWallWidget);
-                mAlbumCover->setParentItem(mMediaWallWidget);
                 mModel->refreshModel();
                 setUpMediaWallWidget();
             }
@@ -256,8 +215,6 @@
     else {
         if ( mMediaWallWidget ) {
             //Take ownership of these items to prevent delete from media wall widget.
-            mTrackList->setParentItem( this );
-            mAlbumCover->setParentItem( this );
             delete mMediaWallWidget;
             mMediaWallWidget = 0;
             
@@ -310,47 +267,6 @@
 }
 
 /*!
- Slot to be called to send to background.
- */
-void MpMediaWallView::sendToBackground()
-{
-    TX_ENTRY
-    emit command( MpCommon::SendToBackground );
-    TX_EXIT
-}
-
-/*!
- Slot to update teh play pause action icon.
- */
-void MpMediaWallView::updatePlayPauseAction()
-{
-    if ( !mActivated ) {
-        mIconUpdateNedded = true;
-        return;
-    }
-    TX_ENTRY
-    switch ( mPlaybackData->playbackState() ) {
-        case MpPlaybackData::Playing:
-            TX_LOG_ARGS( "MpPlaybackData::Playing" )
-            mPlayPauseAction->setIcon( *mPauseIcon );
-            mPlayPauseContainer->show();
-            break;
-        case MpPlaybackData::Paused:
-        case MpPlaybackData::Stopped:
-            TX_LOG_ARGS( "MpPlaybackData::Paused" )
-            mPlayPauseAction->setIcon( *mPlayIcon );
-            mPlayPauseContainer->show();
-            break;
-        case MpPlaybackData::NotPlaying:
-            mPlayPauseContainer->hide();       
-            break;
-        default:
-            break;
-    }
-    TX_EXIT
-}
-
-/*!
  Slot called to start the album and list opening animation.
  */
 void MpMediaWallView::showTrackList()
@@ -396,19 +312,23 @@
  */
 void MpMediaWallView::listItemActivated( const QModelIndex &index )
 {
-    if (!mCollectionData->hasAlbumSongProperty(index.row(), MpMpxCollectionData::Corrupted)) {
-        int albumIndex = mMediaWallWidget->currentIndex().row();
-        //We are playing on the shared engine, but we pass the collection data that
-        //points to albums on media wall, this is used to construct the playlist.
-        MpEngineFactory::sharedEngine()->playAlbumSongs( albumIndex, index.row(), mCollectionData );
-    }
-    else{
+    if (mCollectionData->hasAlbumSongProperty(index.row(), MpMpxCollectionData::Corrupted)) {
         //pop up corrupted note
         HbMessageBox *messageBox = new HbMessageBox( hbTrId( "txt_mus_info_file_is_corrupt" ), HbMessageBox::MessageTypeInformation );
         messageBox->setAttribute( Qt::WA_DeleteOnClose );
         messageBox->setIcon( HbIcon( QString("qtg_small_fail") ) ); 
         messageBox->show();   
     }
+    else if	( (mPlaybackData->playbackState() != MpPlaybackData::NotPlaying ) 
+        && ( mPlaybackData->id() == mCollectionData->albumSongId( index.row() ) ) ) {
+         MpEngineFactory::sharedEngine()->playPause();
+    }
+    else {
+        int albumIndex = mMediaWallWidget->currentIndex().row();
+        //We are playing on the shared engine, but we pass the collection data that
+        //points to albums on media wall, this is used to construct the playlist.
+        MpEngineFactory::sharedEngine()->playAlbumSongs( albumIndex, index.row(), mCollectionData );
+    }
 }
 
 /*!
@@ -429,7 +349,7 @@
     HbIcon defaultIcon( "qtg_large_album_art" );
     defaultIcon.setSize(mMediaWallWidget->itemSize());
     mMediaWallWidget->setDefaultImage( defaultIcon.pixmap().toImage() );
-    mMediaWallWidget->enableReflections( true );
+    mMediaWallWidget->enableReflections( false );
     mMediaWallWidget->setModel( mModel );
     scrollToDefault();
     mMediaWallWidget->setTitleFontSpec( HbFontSpec( HbFontSpec::Primary ) );
--- a/mpviewplugins/mpmediawallviewplugin/src/mpreflectioneffect.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
-* 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: Reflection effect for Music Player Media Wall.
-*
-*/
-
-#include <QPainter>
-#include <QGraphicsItem>
-#include <hbinstance.h>
-
-#include "mpreflectioneffect.h"
-
-
-/*!
-    \class MpReflectionEffect
-    \brief The MpReflectionEffect class provides a reflection effect.
-
-    Renders the source with a reflection.
-*/
-
-/*!
-    Constructs a new MpReflectionEffect instance.
-    The \a parent parameter is passed to QGraphicsEffect's constructor.
-*/
-MpReflectionEffect::MpReflectionEffect(QObject *parent)
-    : QGraphicsEffect( parent )
-{
-}
-
-/*!
-    Destroys the effect.
-*/
-MpReflectionEffect::~MpReflectionEffect()
-{
-}
-
-/*!
-    \reimp
-*/
-QRectF MpReflectionEffect::boundingRectFor(const QRectF &rect) const
-{
-    QRectF retRect = rect;
-    //this bounding rect is in device cordinates, correcting based on current transform.
-    if ( hbInstance->allMainWindows()[0]->orientation() == Qt::Horizontal ) {
-#ifdef __WINS__        
-        retRect.adjust(0,0,retRect.width(),0); //wincw with forced rotation is to the right.
-#else
-        retRect.adjust(-retRect.width(),0,0,0);//currently hardware rotations is to the left.
-#endif
-    } else {
-        retRect.adjust(0,0,0,retRect.height());
-    }
-    
-    return retRect;
-}
-
-/*!
-    \reimp
-*/
-void MpReflectionEffect::draw(QPainter *painter)
-{
-    //currently sourceBoundingRect returns somehing like boundingRectFor and 
-    //wrong rect for widgets with scroll area. As a workaround we can get the
-    //original bounding rect assuming that the widget using the effect is the 
-    //effect parent.
-    QGraphicsItem * sourceItem;
-    sourceItem = qobject_cast<QGraphicsItem *>( parent() );
-    QPixmap pixmap;
-    QPoint offset;
-    pixmap = sourcePixmap( Qt::LogicalCoordinates,&offset, QGraphicsEffect::NoPad );
-    painter->drawPixmap( offset, pixmap );
-    if ( sourceItem ) {
-        painter->save();
-        painter->scale( 1, -1 );
-        //for some reson tranlation does not work, translating cordinates by hand.
-        QPointF reflectionOffset( 0.0, - 2.0 * sourceItem->boundingRect().height() );
-        painter->drawPixmap( offset + reflectionOffset, pixmap );
-        QRectF reflectionRect;
-        reflectionRect.setTopLeft( reflectionOffset );
-        reflectionRect.setHeight ( sourceItem->boundingRect().height() );
-        reflectionRect.setWidth( pixmap.width() );
-        painter->fillRect( reflectionRect, QColor::fromRgbF( 0, 0, 0, 0.5f ) );
-        painter->restore();
-    }
-}
-
-// EOF
--- a/mpviewplugins/mpmediawallviewplugin/src/mptracklistwidget.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/src/mptracklistwidget.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -28,12 +28,15 @@
 #include <hbframeitem.h>
 #include <hbmainwindow.h>
 #include <hbstyleloader.h>
+#include <hbscrollbar.h>
+#include <hbcolorscheme.h>
 
 
 #include "mptracklistwidget.h"
 
 
 const int swipeAngleTolerance = 30; // angle is from 0 to 360
+const int tracklistOutlineSize = 1; //
 
 /*!
     \class MpTrackListWidget
@@ -56,20 +59,25 @@
  */
 MpTrackListWidget::MpTrackListWidget( QGraphicsItem *parent ) : HbWidget( parent ) 
 {
+    setFlag( QGraphicsItem::ItemHasNoContents, false );
     // Register the custorm css path for the list items.
-    HbStyleLoader::registerFilePath(":/css/mpcustomlistitem.css");
-    HbStyleLoader::registerFilePath(":/css/mpcustomlistitem.hblistviewitem.widgetml");    
+    HbStyleLoader::registerFilePath( ":/css/mpcustomlistitem.css" );
+    HbStyleLoader::registerFilePath( ":/css/mpcustomlistitem.hblistviewitem.widgetml" );    
     mList = new HbListView( this );
     // set layout name that matches the custom list item layout.
-    mList->setLayoutName("mpmwtracklist");
+    mList->setLayoutName( "mpmwtracklist" );
+    HbScrollBar *scrollbar = mList->verticalScrollBar();
+    scrollbar->show();
+    scrollbar->setInteractive( true );
+    mList->setVerticalScrollBarPolicy( HbScrollArea::ScrollBarAlwaysOn );
     
     //grab the gesture for close.
     grabGesture(Qt::SwipeGesture);
     
     mFrameItem = new HbFrameItem( this );
-    mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::NinePieces );
-    mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_multimedia_trans" );  
-    mFrameItem->setZValue(-1);
+    mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece );
+    mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_popup_c" );  //replace for qtg_graf_mediawall_list_bg when available.
+    mFrameItem->setFlag(QGraphicsItem::ItemStacksBehindParent);
 }
 
 /*!
@@ -93,8 +101,7 @@
 void MpTrackListWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
 {
     mFrameItem->setGeometry( rect() );
-    qreal margin = 0.0;
-    style()->parameter(QString("var(hb-param-margin-gene-middle-vertical)"), margin);
+    qreal margin = tracklistOutlineSize;
     mList->setGeometry( rect().adjusted( margin, margin, -margin, -margin ) );
     HbWidget::resizeEvent( event );
 }
@@ -143,6 +150,20 @@
 }
 
 /*!
+    \reimp
+ */
+void MpTrackListWidget::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
+{
+    Q_UNUSED( widget )
+    Q_UNUSED( option )
+    painter->save();
+    qreal outlineWidth(tracklistOutlineSize);
+    painter->setPen(QPen(HbColorScheme::color("qtc_view_normal_secondary"), outlineWidth,Qt::SolidLine,Qt::FlatCap,Qt::MiterJoin));
+    painter->drawRect( rect().adjusted(outlineWidth/2,outlineWidth/2,-outlineWidth/2,-outlineWidth/2) );
+    painter->restore();
+}
+
+/*!
     Maps swipe \a angle to QSwipeGesture::SwipeDirection based on a tolerance 
     parameter and orientation. This funtions helps to identify a swipe even 
     if it is not sharp movement from 180 to 0 degrees on the righ swipe 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -16,9 +16,10 @@
 
 TEMPLATE = subdirs
 
-SUBDIRS += unittest_mpmediawalldocumentloader
-SUBDIRS += unittest_mpmediawallview
-SUBDIRS += unittest_mpmediawallviewplugin
+SUBDIRS += unittest_mpmediawalldocumentloader \
+           unittest_mpmediawallview \
+           unittest_mpmediawallviewplugin \
+           unittest_mptracklistwidget
 
 CONFIG += ordered
 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/inc/unittest_mpmediawalldocumentloader.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/inc/unittest_mpmediawalldocumentloader.h	Fri Sep 17 08:28:52 2010 +0300
@@ -42,7 +42,6 @@
 
 private slots:
     void testCreateHgMediawall();
-    void testCreateHbToolButton();
     void testCreateQObject();
 
 private:
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/src/unittest_mpmediawalldocumentloader.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawalldocumentloader/src/unittest_mpmediawalldocumentloader.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -16,7 +16,6 @@
 */
 
 #include <qnamespace.h>
-#include <hbtoolbutton.h>
 
 #include "stub/inc/hgmediawall.h"
 #include "unittest_mpmediawalldocumentloader.h"
@@ -107,22 +106,6 @@
 }
 
 /*!
- Tests the correct creation of HbToolButton.
- */
-void TestMpMediaWallDocumentLoader::testCreateHbToolButton()
-{
-    cleanup();
-    init();
-    QObject *theObject;
-    theObject = mTest->createObject(QString("HbToolButton"),QString("myHbToolButton"));
-    QCOMPARE(theObject->metaObject()->className(),"HbToolButton");
-    QCOMPARE(theObject->objectName(),QString("myHbToolButton"));
-    QVERIFY(qobject_cast<HbToolButton*>(theObject));
-    delete theObject;
-
-}
-
-/*!
  Tests the correct creation of QObject, this should be pased to the
  base class and base class should return a named object.
  */
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/inc/unittest_mpmediawallview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/inc/unittest_mpmediawallview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -43,13 +43,11 @@
 private slots:
 
     void testInitializeView();
-    void testActivateView();
-    void testDeactivateView();
-    void testSendToBackground();    
+    void testDeactivateView();   
     void testContextOpened();
     void testContainerContentsChanged();
     void testLibraryUpdated();
-    void testUpdatePlayPauseAction();
+    void testListItemActivated();
 
 private:
     MpMediaWallView *mTest;
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/src/unittest_mpmediawallview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/src/unittest_mpmediawallview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -22,6 +22,10 @@
 
 #include "unittest_mpmediawallview.h"
 #include "stub/inc/mpplaybackdata.h"
+#include "stub/inc/mpengine.h"
+#include "stub/inc/mpenginefactory.h"
+#include "stub/inc/hbmessagebox.h"
+
 
 // Do this so we can access all member variables.
 #define private public
@@ -31,6 +35,7 @@
 // Do this so we can access all memeber functions
 #include "../../src/mpmediawallview.cpp"
 
+
 /*!
  Make our test case a stand-alone executable that runs all the test functions.
  */
@@ -112,9 +117,6 @@
     QVERIFY(!mTest->mAlbumCover);
     QVERIFY(!mTest->mTrackList);
     QVERIFY(!mTest->mPlaybackData);
-    QVERIFY(!mTest->mPauseIcon);
-    QVERIFY(!mTest->mPlayIcon);
-    QVERIFY(!mTest->mPlayPauseContainer);
 
     //test member variables are initialized
     mTest->initializeView();
@@ -124,58 +126,23 @@
     QVERIFY(mTest->mAlbumCover);
     QVERIFY(mTest->mTrackList);
     QVERIFY(mTest->mPlaybackData);
-    QVERIFY(mTest->mPauseIcon);
-    QVERIFY(mTest->mPlayIcon);
-    QVERIFY(mTest->mPlayPauseContainer);
 
 }
 
 /*!
- Test ActivateView
- */
-void TestMpMediaWallView::testActivateView()
-{
-
-    //Create playbackdata and set to playing state
-    mTest->mPlaybackData = new MpPlaybackData();    
-    mTest->mPlaybackData->setPlaybackState(MpPlaybackData::Playing);
-
-    mTest->mIconUpdateNedded=false;
-    mTest->mActivated=false;
-
-    mTest->activateView();
-    QCOMPARE(mTest->mActivated, true );
-}
-
-/*!
  Test DeActivateView
  */
 void TestMpMediaWallView::testDeactivateView()
 {
     mTest->initializeView();
-    mTest->mActivated = true;
     mTest->mShowingSongsList = true;
     mTest->setUpListAnimation();
     mTest->deactivateView();
-    QCOMPARE(mTest->mActivated, false);
     QCOMPARE(mTest->mShowingSongsList, false);
 
 }
 
 /*!
-  Test SendToBackground
-  */
-void TestMpMediaWallView::testSendToBackground()
-{
-    //test that signal gets emitted
-    QSignalSpy spy( mTest, SIGNAL(command(int)) );
-    mTest->sendToBackground();
-    QCOMPARE(spy.count(), 1);
-    QCOMPARE(spy.at(0).at(0), QVariant(MpCommon::SendToBackground));
-
-}
-
-/*!
   Test ContextOpened
   */
 /*  test case fails because potential problem in docml
@@ -239,24 +206,52 @@
 }
 
 /*!
-  Test UpdatePlayPauseAction
+  Test listItemActivated
   */
-void TestMpMediaWallView::testUpdatePlayPauseAction()
+void TestMpMediaWallView::testListItemActivated()
 {
-    //test icon gets updated correctly
-    mTest->initializeView();
-    mTest->mActivated = true;
     
-    mTest->mPlaybackData->setPlaybackState( MpPlaybackData::Paused );
-    mTest->updatePlayPauseAction();
-    HbIcon temp = mTest->mPlayPauseAction->icon();
-    QVERIFY( mTest->mPlayPauseAction->icon() ==  HbIcon( "qtg_mono_play" ));
+    if ( MpEngineFactory::instance()->mSharedEngine ) {
+        delete MpEngineFactory::instance()->mSharedEngine;
+    }
+    MpEngineFactory::instance()->mSharedEngine = new MpEngine();
+    mTest->initializeView();
+
+    //Test with corrupted song
+    mTest->mCollectionData->mAlbumSongProperty = true;
+    MpEngineFactory::sharedEngine()->mPlayPauseCount = 0;
+    MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount = 0;
+    mTest->listItemActivated(QModelIndex());
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayPauseCount == 0);
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount == 0);
 
-    mTest->mPlaybackData->setPlaybackState( MpPlaybackData::Playing );
-    mTest->updatePlayPauseAction();
-    QVERIFY( mTest->mPlayPauseAction->icon() ==  HbIcon( "qtg_mono_pause" ));
+    //Test select nowplaying item that is playing.
+    mTest->mCollectionData->mAlbumSongProperty = false;
+    mTest->mPlaybackData->mPlaybackState = MpPlaybackData::Playing;
+    mTest->mPlaybackData->mSongId = 1234;
+    mTest->mCollectionData->mArbitraryAlbumSongId = 1234;
+    MpEngineFactory::sharedEngine()->mPlayPauseCount = 0;
+    MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount = 0;
+    mTest->listItemActivated(QModelIndex());
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayPauseCount == 1);
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount == 0);
 
-    mTest->mPlaybackData->setPlaybackState( MpPlaybackData::Stopped );
-    mTest->updatePlayPauseAction();
-    QVERIFY( mTest->mPlayPauseAction->icon() ==  HbIcon( "qtg_mono_play" ));
+    //Test select nowplaying item that is not initialized.
+    mTest->mCollectionData->mAlbumSongProperty = false;
+    mTest->mPlaybackData->mPlaybackState = MpPlaybackData::NotPlaying;
+    MpEngineFactory::sharedEngine()->mPlayPauseCount = 0;
+    MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount = 0;
+    mTest->listItemActivated(QModelIndex());
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayPauseCount == 0);
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount == 1);
+        
+    //Test select an item that is not playing.
+    mTest->mCollectionData->mAlbumSongProperty = false;
+    mTest->mCollectionData->mArbitraryAlbumSongId = 4321;
+    MpEngineFactory::sharedEngine()->mPlayPauseCount = 0;
+    MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount = 0;
+    mTest->listItemActivated(QModelIndex());
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayPauseCount == 0);
+    QVERIFY(MpEngineFactory::sharedEngine()->mPlayAlbumSongsCount == 1);
 }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/hbmessagebox.h	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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: hbmessagebox stub for testing mpmediawallview
+*
+*/
+
+#ifndef HBMESSAGEBOX_H
+#define HBMESSAGEBOX_H
+
+#include <QObject>
+#include <qglobal.h>
+#include <QMetaObject>
+#include <hbicon.h>
+
+//  FORWARD DECLARATIONS
+class QGraphicsItem;
+class HbIcon;
+
+/*!
+     Stub HbMessageBox class.
+ */
+class HbMessageBox : public QObject
+{
+    Q_OBJECT
+
+public: // Data types
+
+    enum MessageBoxType {
+        MessageTypeNone,
+        MessageTypeInformation,
+        MessageTypeQuestion,
+        MessageTypeWarning
+    };
+
+public:
+
+    HbMessageBox(const QString &text, MessageBoxType type = MessageTypeNone, QGraphicsItem *parent = 0)
+    {
+        Q_UNUSED(text);
+        Q_UNUSED(type);
+        Q_UNUSED(parent);
+        mMessageDisplayed = false;
+    }
+
+    ~HbMessageBox()
+    {
+    }
+
+    void setAttribute(Qt::WidgetAttribute att, bool on = true)
+    {
+        Q_UNUSED(att);
+        Q_UNUSED(on);
+    }
+
+    void setIcon(const HbIcon &icon)
+    {
+        Q_UNUSED(icon);
+    }
+
+    void show()
+    {
+        mMessageDisplayed = true;
+    }
+
+public:
+    bool    mMessageDisplayed;
+};
+
+#endif // HBMESSAGEBOX_H
+
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpcollectiondatamodel.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpcollectiondatamodel.h	Fri Sep 17 08:28:52 2010 +0300
@@ -32,7 +32,8 @@
 
 public:
 
-    explicit MpCollectionDataModel( MpMpxCollectionData *data, MpPlaybackData *playbackData = 0, QObject *parent=0 );
+    explicit MpCollectionDataModel( MpMpxCollectionData *data, MpPlaybackData *playbackData = 0,
+	        QObject *parent=0 );
     virtual ~MpCollectionDataModel();
 
     int rowCount(const QModelIndex &parent=QModelIndex()) const;
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -41,7 +41,6 @@
         MediaBrowsing
     };
     
-private:
 
     enum UsbBlockingState {
         USB_NotConnected,          // Not connected
@@ -49,7 +48,6 @@
         USB_Synchronizing          // Connected in MassStorage mode or MTP mode and synchronizing
     };
 
-private:
     explicit MpEngine();
 
 public:
@@ -111,8 +109,9 @@
 public:
     //for stubs
     int mOpenCollectionCalled;
+    int mPlayPauseCount;
+    int mPlayAlbumSongsCount;
 
-private:
 
     Q_DISABLE_COPY( MpEngine )
 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -26,19 +26,19 @@
 
 class MpEngineFactory
 {
-private:
+public:
     explicit MpEngineFactory();
 
-public:
+
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance();
-    
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode = MpEngine::StandAlone );
     static MpEngine *sharedEngine();
     static MpEngine *createIsolatedEngine( MpEngine::EngineMode mode );
     static void close();
 	
-private:       
+   
     MpEngine    *mSharedEngine;
     QList<MpEngine *>    mEngines;
 };
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpmpxcollectiondata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpmpxcollectiondata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -58,8 +58,8 @@
     void setContext( TCollectionContext context );
     int itemIndex( int itemUniqueId );    
     bool setCurrentAlbum( int index );
+    int albumSongId(int index);
     bool hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type ) const;
-
     const CMPXMedia& containerMedia();
 
 public:
@@ -71,6 +71,8 @@
     int                     mCurrentAlbumIndex;
     bool                    mCurrentAlbumAvailable;
     bool                    mReturnCollectionTitle;
+    int                     mArbitraryAlbumSongId;
+    bool                    mAlbumSongProperty;
 
 };
 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpplaybackdata.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpplaybackdata.h	Fri Sep 17 08:28:52 2010 +0300
@@ -44,6 +44,7 @@
     // Stub functions
     void emitPlaybackStateChanged();
     void setPlaybackState(MpPlaybackData::SimplifiedState state);
+    int id();
 
 signals:
     void playbackStateChanged();
@@ -56,10 +57,10 @@
     MpPlaybackData::SimplifiedState playbackState() const;
 
 
-private:
     QString                  mArtist;
     QString                  mTitle;
     SimplifiedState          mPlaybackState;
+    int                      mSongId;
 
 };
 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/inc/mpreflectioneffect.h	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* 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:  stub for mpreflectioneffect
-*
-*/
-#ifndef MPREFLECTIONEFFECT_H
-#define MPREFLECTIONEFFECT_H
-
-#include <QGraphicsEffect>
-
-class MpReflectionEffect: public QGraphicsEffect
-{
-    Q_OBJECT
-
-public:
-    MpReflectionEffect(QObject *parent = 0);
-    ~MpReflectionEffect();
-
-    QRectF boundingRectFor(const QRectF &rect) const;
-
-protected:
-    void draw(QPainter *painter);
-
-private:
-    Q_DISABLE_COPY(MpReflectionEffect)
-};
-
-#endif // MPREFLECTIONEFFECT_H
-
-// EOF
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpengine.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -21,7 +21,9 @@
 #include "mpmpxcollectiondata.h"
 
 
-MpEngine::MpEngine() : mOpenCollectionCalled(0)
+MpEngine::MpEngine() : mOpenCollectionCalled(0),
+    mPlayAlbumSongsCount(0),
+    mPlayPauseCount(0)
 {
     TX_LOG_ARGS("Stub")
 }
@@ -146,6 +148,7 @@
     Q_UNUSED(albumIndex)
     Q_UNUSED(songIndex)
     Q_UNUSED(collectionData)
+    mPlayAlbumSongsCount++;
     TX_ENTRY_ARGS("Stub")
 }
 
@@ -191,6 +194,7 @@
 void MpEngine::playPause()
 {
     TX_ENTRY_ARGS("Stub")
+    mPlayPauseCount++;
 }
 
 void MpEngine::stop()
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -54,10 +54,10 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid /*hostUid*/ , MpEngine::EngineMode /*mode*/ )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 /*clientSecureId*/ , MpEngine::EngineMode /*mode*/ )
 {
     TX_LOG_ARGS("MpEngineFactory::createSharedEngine() Stub")
     if ( !instance()->mSharedEngine ) {
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpmpxcollectiondata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpmpxcollectiondata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -31,7 +31,9 @@
       mCount(0),
       mCurrentAlbumIndex(-1),
       mCurrentAlbumAvailable(false),
-      mReturnCollectionTitle(true)
+      mReturnCollectionTitle(true),
+      mArbitraryAlbumSongId(0),
+      mAlbumSongProperty(false)
 {
 }
 
@@ -97,9 +99,16 @@
 /*!
  Stub function.
 */
+int MpMpxCollectionData::albumSongId(int index)
+{
+    Q_UNUSED(index);
+    return mArbitraryAlbumSongId;
+}
 bool MpMpxCollectionData::hasAlbumSongProperty( int index, MpMpxCollectionData:: DataProperty type ) const
 {
-
+    Q_UNUSED(index);
+    Q_UNUSED(type);
+    return mAlbumSongProperty;
 }
 
 /*!
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpplaybackdata.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpplaybackdata.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -25,7 +25,8 @@
  Stub function.
  */
 MpPlaybackData::MpPlaybackData()
-    : mPlaybackState(NotPlaying)
+    : mPlaybackState(NotPlaying),
+      mSongId(0)
 {
     gUpdateCounter++;
 }
@@ -77,7 +78,19 @@
    emit playbackStateChanged();
 }
 
- void MpPlaybackData::setPlaybackState(MpPlaybackData::SimplifiedState state)
- {
+/*!
+ Stub function.
+ */
+void MpPlaybackData::setPlaybackState(MpPlaybackData::SimplifiedState state)
+{
      mPlaybackState=state;
- }
+}
+
+/*!
+ Stub function.
+ */
+int MpPlaybackData::id()
+{
+    return mSongId;
+}
+ 
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mpreflectioneffect.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* 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: stub for mpreflectioneffects
-*
-*/
-
-#include "mpreflectioneffect.h"
-
-/*!
-    Stub
-*/
-MpReflectionEffect::MpReflectionEffect(QObject *parent)
-    : QGraphicsEffect( parent )
-{
-}
-
-/*!
-    Stub
-*/
-MpReflectionEffect::~MpReflectionEffect()
-{
-}
-
-/*!
-    Stub
-*/
-QRectF MpReflectionEffect::boundingRectFor(const QRectF &rect) const
-{
-    Q_UNUSED(rect)
-    return QRectF();
-}
-
-/*!
-    Stub
-*/
-void MpReflectionEffect::draw(QPainter *painter)
-{
-    Q_UNUSED(painter)
-}
-
-// EOF
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mptracklistwidget.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/stub/src/mptracklistwidget.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -26,7 +26,7 @@
 
 
 #include "mptracklistwidget.h"
-#include "mpreflectioneffect.h"
+
 
 /*!
     Stub.
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/unittest_mpmediawallview.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpmediawallview/unittest_mpmediawallview.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -34,32 +34,31 @@
 
 # Input
 HEADERS += inc/unittest_mpmediawallview.h \
-            ../../inc/mpmediawallview.h \            
+           ../../inc/mpmediawallview.h \
            ../../../../inc/mpviewbase.h \
            stub/inc/hgmediawall.h \
-            stub/inc/mpengine.h \
-            stub/inc/mpenginefactory.h \
-            stub/inc/mpmpxcollectiondata.h \
-            stub/inc/mpcollectiondatamodel.h \
-            stub/inc/mpplaybackdata.h \
-            stub/inc/mpalbumcoverwidget.h \
-            stub/inc/mpmediawalldocumentloader.h \
-            stub/inc/mptracklistwidget.h \
-            stub/inc/mpcollectiontbonelistdatamodel.h \
-            stub/inc/mpreflectioneffect.h
+           stub/inc/mpengine.h \
+           stub/inc/mpenginefactory.h \
+           stub/inc/mpmpxcollectiondata.h \
+           stub/inc/mpcollectiondatamodel.h \
+           stub/inc/mpplaybackdata.h \
+           stub/inc/mpalbumcoverwidget.h \
+           stub/inc/mpmediawalldocumentloader.h \
+           stub/inc/mptracklistwidget.h \
+           stub/inc/mpcollectiontbonelistdatamodel.h \
+           stub/inc/hbmessagebox.h
 
-SOURCES += src/unittest_mpmediawallview.cpp \               
-                stub/src/hgmediawall.cpp \
-                stub/src/mpengine.cpp \
-                stub/src/mpenginefactory.cpp \
-                stub/src/mpmpxcollectiondata.cpp \
-                stub/src/mpcollectiondatamodel.cpp \
-                stub/src/mpplaybackdata.cpp \
-                stub/src/mpalbumcoverwidget.cpp \
-                stub/src/mpmediawalldocumentloader.cpp \
-                stub/src/mptracklistwidget.cpp \
-                stub/src/mpcollectiontbonelistdatamodel.cpp \
-                stub/src/mpreflectioneffect.cpp
+SOURCES += src/unittest_mpmediawallview.cpp \
+           stub/src/hgmediawall.cpp \
+           stub/src/mpengine.cpp \
+           stub/src/mpenginefactory.cpp \
+           stub/src/mpmpxcollectiondata.cpp \
+           stub/src/mpcollectiondatamodel.cpp \
+           stub/src/mpplaybackdata.cpp \
+           stub/src/mpalbumcoverwidget.cpp \
+           stub/src/mpmediawalldocumentloader.cpp \
+           stub/src/mptracklistwidget.cpp \
+           stub/src/mpcollectiontbonelistdatamodel.cpp
 
 
 RESOURCES += ../../resources/mpmediawallviewresources.qrc
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/inc/unittest_mpreflectioneffect.h	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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: Unit test for MpReflectionEffect
-*
-*/
-
-#ifndef TESTMPREFLECTIONEFFECT_H
-#define TESTMPREFLECTIONEFFECT_H
-
-#include <QtTest/QtTest>
-
-class MpReflectionEffect;
-
-class TestMpReflectionEffect : public QObject
-{
-    Q_OBJECT
-
-public:
-
-    TestMpReflectionEffect();
-    virtual ~TestMpReflectionEffect();
-
-public slots:
-    void initTestCase();
-    void cleanupTestCase();
-    void init();
-    void cleanup();
-
-private:
-    MpReflectionEffect          *mTest;
-};
-
-#endif  // TESTMPREFLECTIONEFFECT_H
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/src/unittest_mpreflectioneffect.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +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: Unit test for MpReflectionEffect
-*
-*/
-
-#include <hbinstance.h>
-#include "unittest_mpreflectioneffect.h"
-
-/*!
- * Nothing valuable to test for following functions
- * boundingRectFor() 
- * draw()
- * 
- */
-
-// Do this so we can access all member variables.
-#define private public
-#include "mpreflectioneffect.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);
-    TestMpReflectionEffect 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_mpreflectioneffect.txt";
-
-        return QTest::qExec(&tv, 3, pass);
-    }
-}
-
-TestMpReflectionEffect::TestMpReflectionEffect()
-    : mTest(0)
-{
-}
-
-TestMpReflectionEffect::~TestMpReflectionEffect()
-{
-    delete mTest;
-}
-
-/*!
- Called before the first testfunction is executed.
- */
-void TestMpReflectionEffect::initTestCase()
-{
-}
-
-/*!
- Called after the last testfunction was executed.
- */
-void TestMpReflectionEffect::cleanupTestCase()
-{
-}
-
-/*!
- Called before each testfunction is executed.
- */
-void TestMpReflectionEffect::init()
-{
-    mTest = new MpReflectionEffect( new QObject() ); 
-}
-
-/*!
- Called after every testfunction.
- */
-void TestMpReflectionEffect::cleanup()
-{
-    delete mTest;
-    mTest = 0;
-}
-
-
-// End of file
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mpreflectioneffect/unittest_mpreflectioneffect.pro	Thu Sep 02 20:24:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +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: mpreflectioneffect unit test project file.
-#
-
-TEMPLATE = app
-CONFIG += qtestlib hb symbian_test
-TARGET = unittest_mpreflectioneffect
-TARGET.CAPABILITY = CAP_APPLICATION
-
-DEPENDPATH += .
-INCLUDEPATH += . \
-			   ../../inc \
-               ../../../../inc
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
-
-HEADERS += inc/unittest_mpreflectioneffect.h \
-		   ../../inc/mpreflectioneffect.h \	
-
-
-SOURCES += src/unittest_mpreflectioneffect.cpp \
-		   ../../src/mpreflectioneffect.cpp \
-
--- a/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mptracklistwidget/inc/unittest_mptracklistwidget.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpmediawallviewplugin/tsrc/unittest_mptracklistwidget/inc/unittest_mptracklistwidget.h	Fri Sep 17 08:28:52 2010 +0300
@@ -15,8 +15,8 @@
 *
 */
 
-#ifndef TESTMPREFLECTIONEFFECT_H
-#define TESTMPREFLECTIONEFFECT_H
+#ifndef TESTMPTRACKLISTWIDGET_H
+#define TESTMPTRACKLISTWIDGET_H
 
 #include <QtTest/QtTest>
 
@@ -45,4 +45,4 @@
     MpTrackListWidget          *mTest;
 };
 
-#endif  // TESTMPREFLECTIONEFFECT_H
+#endif  // TESTMPTRACKLISTWIDGET_H
--- a/mpviewplugins/mpplaybackviewplugin/inc/mpplaybackview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/inc/mpplaybackview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -101,8 +101,6 @@
 
     HbIcon                  *mPlayIcon;         // Own
     HbIcon                  *mPauseIcon;        // Own
-    HbIcon                  *mShuffleOnIcon;    // Own
-    HbIcon                  *mShuffleOffIcon;   // Own
 
     HbAction                *mPlayPauseAction;  // Not own
     HbAction                *mRepeatAction;     // Not own
--- a/mpviewplugins/mpplaybackviewplugin/src/mpplaybackview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/src/mpplaybackview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -65,8 +65,6 @@
       mActivated( false ),
       mPlayIcon( 0 ),
       mPauseIcon( 0 ),
-      mShuffleOnIcon( 0 ),
-      mShuffleOffIcon( 0 ),
       mTimer(0),
       mSeeking(false)
 
@@ -83,8 +81,6 @@
     delete mSoftKeyBack;
     delete mPlayIcon;
     delete mPauseIcon;
-    delete mShuffleOnIcon;
-    delete mShuffleOffIcon;
     delete mEqualizerWidget;
     TX_EXIT
 }
@@ -288,7 +284,7 @@
 void MpPlaybackView::shuffleChanged( bool shuffle )
 {
     mShuffle = shuffle;
-    mShuffleAction->setIcon( mShuffle ? *mShuffleOnIcon : *mShuffleOffIcon );
+    mShuffleAction->setChecked( mShuffle );
 }
 
 /*!
@@ -352,12 +348,11 @@
     QActionGroup *actionsGroup = new QActionGroup( myToolBar );
 
     if ( mViewMode == MpCommon::DefaultView || mViewMode == MpCommon::EmbeddedView ) {
-        mShuffleOnIcon = new HbIcon( "qtg_mono_shuffle" );
-        mShuffleOffIcon = new HbIcon( "qtg_mono_shuffle_off" );
         mShuffleAction = new HbAction( actionsGroup );
         mShuffle = MpSettingsManager::shuffle();
-        mShuffleAction->setIcon( mShuffle ? *mShuffleOnIcon : *mShuffleOffIcon );
-        mShuffleAction->setCheckable( false );
+        mShuffleAction->setIcon( HbIcon( "qtg_mono_shuffle" ) );
+        mShuffleAction->setCheckable( true );
+        mShuffleAction->setChecked( mShuffle );
         
         if ( mViewMode == MpCommon::DefaultView ) {
             connect( mShuffleAction, SIGNAL( triggered( bool ) ),
@@ -587,8 +582,8 @@
         mEqualizerWidget = new MpEqualizerWidget();
         mEqualizerWidget->prepareDialog();
     }
-	
-	mEqualizerWidget->show();
+    
+    mEqualizerWidget->show();
 
     TX_EXIT
 }
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -20,6 +20,7 @@
            unittest_mpplaybackdocumentloader \
            unittest_mpplaybackviewplugin \
            unittest_mpplaybackview
+#           unittest_mpplaybackwidget
 
 CONFIG += ordered
 
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -32,8 +32,8 @@
 public:
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance();
-    
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode = MpEngine::StandAlone );
     static MpEngine *sharedEngine();
     static void close();
 	
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpequalizerwidget/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -52,12 +52,12 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid hostUid , MpEngine::EngineMode mode )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 clientSecureId , MpEngine::EngineMode mode )
 {
-    Q_UNUSED( hostUid );
+    Q_UNUSED( clientSecureId );
     Q_UNUSED( mode );
     if ( !instance()->mSharedEngine ) {
         instance()->mSharedEngine = new MpEngine();
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/inc/unittest_mpplaybackview.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/inc/unittest_mpplaybackview.h	Fri Sep 17 08:28:52 2010 +0300
@@ -45,6 +45,7 @@
 
 private slots:
 //Test Cases
+    void testInitializeView();
     void testActivateView();
     void testDeactivateView();
     void testShuffleEnabled();
@@ -63,6 +64,7 @@
     void testHandleSongSelected();
     void testShowEqualizerDialog();
     void testCloseEqualizerDialog();
+    void testShowCorruptedNote();
 
     void testSeekForward();
     void testSeekRewind();
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/src/unittest_mpplaybackview.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/src/unittest_mpplaybackview.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -21,10 +21,14 @@
 #include <QTranslator>
 #include <QLocale>
 
+#include "stub/inc/mpengine.h"
+#include "stub/inc/mpenginefactory.h"
 #include "stub/inc/mpequalizerwidget.h"
+#include "stub/inc/mpplaybackdata.h"
+#include "stub/inc/mpplaybackwidget.h"
+#include "stub/inc/mpsettingsmanager.h"
+#include "stub/inc/mpviewbase.h"
 #include "mpcommondefs.h"
-#include "stub/inc/mpviewbase.h"
-#include "stub/inc/mpsettingsmanager.h"
 #include "unittest_mpplaybackview.h"
 
 // Do this so we can access all member variables.
@@ -75,14 +79,14 @@
 void TestMpPlaybackView::initTestCase()
 {
 
-}   
+}
 
 /*!
  Called after the last testfunction was executed.
  */
 void TestMpPlaybackView::cleanupTestCase()
 {
-QCoreApplication::processEvents();
+    QCoreApplication::processEvents();
 }
 
 /*!
@@ -99,19 +103,21 @@
  */
 void TestMpPlaybackView::cleanup()
 {
-    mTest->mMpEngine->retrieveSongDetailsCount = 0;
-    mTest->mMpEngine->stopCount = 0;
-    mTest->mEqualizerWidget->showEqualizerWidgetCount = 0;
-    mTest->mEqualizerWidget->closeEqualizerWidgetCount = 0;
-    mTest->mMpEngine->startSeekBackwardCount = 0;
-    mTest->mMpEngine->startSeekForwardCount = 0;
-    mTest->mMpEngine->stopSeekingCount = 0;
-    mTest->mMpEngine->skipBackwardCount = 0;
-    mTest->mMpEngine->skipForwardCount = 0;
     delete mTest;
     mTest = 0;
+    MpEngineFactory::close();
 }
 
+/*!
+Test initializeView
+ */
+void TestMpPlaybackView::testInitializeView()
+{
+    QVERIFY( mTest->mSoftKeyBack );
+    QVERIFY( mTest->mMpEngine );
+    QVERIFY( mTest->mPlaybackData );
+    QVERIFY( mTest->mPlaybackWidget );
+}
 
 /*!
 Test ActivateView
@@ -119,10 +125,9 @@
 void TestMpPlaybackView::testActivateView()
 {
     QCOMPARE( mTest->mActivated, false );
-    mTest->activateView();    
+    mTest->activateView();
     QCOMPARE( mTest->mActivated, true );
     QVERIFY( mTest->navigationAction() == mTest->mSoftKeyBack );
-
 }
 
 /*!
@@ -193,23 +198,23 @@
 void TestMpPlaybackView::testBack()
 {
     //test Stop() gets called in MpEngine
-    mTest->mMpEngine->stopCount=0;
+    mTest->mMpEngine->mStopCount=0;
     mTest->mViewMode = MpCommon::EmbeddedView;
     mTest->back();
-    QCOMPARE(mTest->mMpEngine->stopCount,1);
+    QCOMPARE(mTest->mMpEngine->mStopCount,1);
 
     mTest->mViewMode = MpCommon::FetchView;
     mTest->back();
-    QCOMPARE(mTest->mMpEngine->stopCount,2);
+    QCOMPARE(mTest->mMpEngine->mStopCount,2);
 
     QSignalSpy spy(mTest, SIGNAL(command(int)));
-    mTest->mMpEngine->stopCount = 0;   
+    mTest->mMpEngine->mStopCount = 0;   
     mTest->mViewMode = MpCommon::DefaultView;
 
     mTest->back();
     QCOMPARE(spy.count(), 1);
     QCOMPARE(spy.at(0).at(0), QVariant(MpCommon::ActivateCollectionView));
-    QCOMPARE(mTest->mMpEngine->stopCount,0);
+    QCOMPARE(mTest->mMpEngine->mStopCount,0);
 }
 
 /*!
@@ -229,12 +234,12 @@
 void TestMpPlaybackView::testPlaybackStateChanged()
 {
     //test signal slot connection
-    mTest->mMpEngine->stopCount=0;
+    mTest->mMpEngine->mStopCount=0;
     mTest->mViewMode = MpCommon::FetchView;
     mTest->mPlaybackData->setPlaybackState(MpPlaybackData::Stopped);
 
     mTest->mPlaybackData->triggerStateUpdate(MpPlaybackData::Stopped);
-    QCOMPARE(mTest->mMpEngine->stopCount,1);
+    QCOMPARE(mTest->mMpEngine->mStopCount,1);
 }
 
 /*!
@@ -246,7 +251,7 @@
     mTest->flip();
     QCOMPARE(spy.count(), 1);
     QCOMPARE(spy.at(0).at(0), QVariant(MpCommon::ActivateDetailsView));
-    QCOMPARE(mTest->mMpEngine->retrieveSongDetailsCount,1);
+    QCOMPARE(mTest->mMpEngine->mRetrieveSongDetailsCount, 1);
 }
 
 /*!
@@ -260,12 +265,12 @@
     mTest->toggleShuffle();
     mTest->shuffleChanged(true); //simulate signal
     QCOMPARE(mTest->shuffleEnabled(), true);
-    QVERIFY(mTest->mShuffleAction->icon() == *mTest->mShuffleOnIcon);
+    QVERIFY(mTest->mShuffleAction->isChecked());
 
     mTest->toggleShuffle();
     mTest->shuffleChanged(false);
     QCOMPARE(mTest->shuffleEnabled(), false);
-    QVERIFY(mTest->mShuffleAction->icon() == *mTest->mShuffleOffIcon);
+    QVERIFY(!mTest->mShuffleAction->isChecked());
 }
 
 /*!
@@ -292,14 +297,14 @@
   */
 void TestMpPlaybackView::testHandleSongSelected()
 {
-    mTest->mMpEngine->stopCount=0;
+    mTest->mMpEngine->mStopCount=0;
     mTest->mPlaybackData->setUri("testUri");
 
     QSignalSpy spy(mTest, SIGNAL(songSelected(QString)));
     mTest->handleSongSelected();
     QCOMPARE(spy.count(), 1);
     QCOMPARE(spy.at(0).at(0), QVariant("testUri"));
-    QCOMPARE(mTest->mMpEngine->stopCount,1);
+    QCOMPARE(mTest->mMpEngine->mStopCount,1);
 }
 
 /*!
@@ -307,7 +312,6 @@
   */
 void TestMpPlaybackView::testShowEqualizerDialog()
 {
-    mTest->mEqualizerWidget->showEqualizerWidgetCount = 0;
     mTest->showEqualizerDialog();
     QCOMPARE(mTest->mEqualizerWidget->showEqualizerWidgetCount,1);
 }
@@ -317,24 +321,37 @@
   */
 void TestMpPlaybackView::testCloseEqualizerDialog()
 {
-    mTest->mEqualizerWidget->closeEqualizerWidgetCount = 0;
+    // Equalizer no displayed before, closeEqualizerDialog should do nothing.
+    mTest->closeEqualizerDialog();
+    QVERIFY(!mTest->mEqualizerWidget);
+
+    // Equalizer previously displyaed
+    mTest->showEqualizerDialog();
     mTest->closeEqualizerDialog();
     QCOMPARE(mTest->mEqualizerWidget->closeEqualizerWidgetCount,1);
 }
 
+/*!
+    Test showCorruptedNote
+  */
+void TestMpPlaybackView::testShowCorruptedNote()
+{
+    mTest->showCorruptedNote();
+    QCOMPARE(mTest->mMpEngine->mStopCount, 1);
+}
 
 /*!
     Test StartRewindTimer and startSeekRewind
   */
 void TestMpPlaybackView::testSeekRewind()
 {    
-    mTest->mMpEngine->startSeekBackwardCount = 0;
+    mTest->mMpEngine->mStartSeekBackwardCount = 0;
     mTest->mSeeking = false;
 
     mTest->startRewindTimer();
     QTest::qWait(2000); // wait for timer to fire and call startSeekRewind()
 
-    QCOMPARE(mTest->mMpEngine->startSeekBackwardCount,1);
+    QCOMPARE(mTest->mMpEngine->mStartSeekBackwardCount,1);
     QCOMPARE(mTest->mSeeking,true);
 }
 
@@ -343,13 +360,13 @@
   */
 void TestMpPlaybackView::testSeekForward()
 {
-    mTest->mMpEngine->startSeekForwardCount = 0;
+    mTest->mMpEngine->mStartSeekForwardCount = 0;
     mTest->mSeeking = false;
 
     mTest->startForwardTimer();
     QTest::qWait(2000); // wait for timer to fire and call startSeekForward()
 
-    QCOMPARE(mTest->mMpEngine->startSeekForwardCount,1);
+    QCOMPARE(mTest->mMpEngine->mStartSeekForwardCount,1);
     QCOMPARE(mTest->mSeeking,true);
 }
 
@@ -360,11 +377,11 @@
 {
     mTest->mSeeking = true;
     mTest->endRewind();
-    QCOMPARE(mTest->mMpEngine->stopSeekingCount,1);
+    QCOMPARE(mTest->mMpEngine->mStopSeekingCount,1);
     QCOMPARE(mTest->mSeeking,false);
     
     mTest->endRewind();
-    QCOMPARE(mTest->mMpEngine->skipBackwardCount,1);
+    QCOMPARE(mTest->mMpEngine->mSkipBackwardCount,1);
     QCOMPARE(mTest->mSeeking,false);
 }
 
@@ -375,11 +392,11 @@
 {
     mTest->mSeeking = true;
     mTest->endForward();
-    QCOMPARE(mTest->mMpEngine->stopSeekingCount,1);
+    QCOMPARE(mTest->mMpEngine->mStopSeekingCount,1);
     QCOMPARE(mTest->mSeeking,false);
     
     mTest->endForward();
-    QCOMPARE(mTest->mMpEngine->skipForwardCount,1);
+    QCOMPARE(mTest->mMpEngine->mSkipForwardCount,1);
     QCOMPARE(mTest->mSeeking,false);    
 }
 
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpengine.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpengine.h	Fri Sep 17 08:28:52 2010 +0300
@@ -46,7 +46,7 @@
     virtual ~MpEngine();
 
     MpPlaybackData *playbackData();
-    void retrieveSongDetails();
+    void retrieveSongDetails( int index = -1 );
    
     // Equalizer related
     void applyPreset( int preset );
@@ -71,6 +71,7 @@
 
     // Equalizer related
     void libraryUpdated();
+    void corruptedStop();
 
 private:
     Q_DISABLE_COPY( MpEngine )
@@ -79,13 +80,13 @@
     int mActivePreset;
     int mApplyPresetCount;
     int mDisableEquqlizerCount;
-    int retrieveSongDetailsCount;
-    int stopCount;
-    int startSeekBackwardCount;
-    int startSeekForwardCount;
-    int stopSeekingCount;
-    int skipBackwardCount;
-    int skipForwardCount;
+    int mRetrieveSongDetailsCount;
+    int mStopCount;
+    int mStartSeekBackwardCount;
+    int mStartSeekForwardCount;
+    int mStopSeekingCount;
+    int mSkipBackwardCount;
+    int mSkipForwardCount;
 
 };
 
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -36,7 +36,8 @@
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance(); 
     static MpEngine * sharedEngine();
-    
+    static void close();
+
 private:
     Q_DISABLE_COPY( MpEngineFactory )
     
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpengine.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -23,7 +23,17 @@
 /*!
   Stub
   */
-MpEngine::MpEngine()
+MpEngine::MpEngine() :
+    mActivePreset(-1),
+    mApplyPresetCount(0),
+    mDisableEquqlizerCount(0),
+    mRetrieveSongDetailsCount(0),
+    mStopCount(0),
+    mStartSeekBackwardCount(0),
+    mStartSeekForwardCount(0),
+    mStopSeekingCount(0),
+    mSkipBackwardCount(0),
+    mSkipForwardCount(0)
 {
     TX_LOG_ARGS("Stub")
 }
@@ -87,15 +97,18 @@
   */
 void MpEngine::stop()
 {
-    stopCount++;
+    mStopCount++;
 }
 
 /*!
   Stub
   */
-void MpEngine::retrieveSongDetails()
+void MpEngine::retrieveSongDetails( int index )
 {
-    retrieveSongDetailsCount++;
+    if ( index == -1 ) {
+        // Retrieve song details of currently playing song
+        mRetrieveSongDetailsCount++;
+    }
 }
 
 /*!
@@ -118,7 +131,7 @@
   */
 void MpEngine::startSeekBackward()
 {
-    startSeekBackwardCount++;
+    mStartSeekBackwardCount++;
 }
 
 /*!
@@ -126,7 +139,7 @@
   */
 void MpEngine::startSeekForward()
 {
-    startSeekForwardCount++;
+    mStartSeekForwardCount++;
 }
 
 /*!
@@ -134,7 +147,7 @@
   */
 void MpEngine::stopSeeking()
 {
-    stopSeekingCount++;
+    mStopSeekingCount++;
 }
 
 /*!
@@ -142,7 +155,7 @@
   */
 void MpEngine::skipBackward()
 {
-    skipBackwardCount++;
+    mSkipBackwardCount++;
 }
 
 /*!
@@ -150,7 +163,7 @@
   */
 void MpEngine::skipForward()
 {
-    skipForwardCount++;
+    mSkipForwardCount++;
 }
 
 /*!
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -60,3 +60,14 @@
     }
     return instance()->mSharedEngine;
 }
+
+/*!
+ Closes all engines created on this process.
+ */
+void MpEngineFactory::close()
+{
+    if ( instance()->mSharedEngine ) {
+        delete instance()->mSharedEngine;
+        instance()->mSharedEngine = 0;
+    }
+}
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpequalizerwidget.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/stub/src/mpequalizerwidget.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -30,6 +30,8 @@
  Constructs the Equalizer widget.
  */
 MpEqualizerWidget::MpEqualizerWidget() :
+    showEqualizerWidgetCount( 0 ),
+    closeEqualizerWidgetCount( 0 ),
     mMpEngine(0)
 {
     TX_ENTRY    
--- a/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/unittest_mpplaybackview.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpplaybackviewplugin/tsrc/unittest_mpplaybackview/unittest_mpplaybackview.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -34,7 +34,7 @@
 
 HEADERS += inc/unittest_mpplaybackview.h \
     ../../inc/mpplaybackview.h \
-    ../../../../inc/mpviewbase.h \
+    stub\inc\mpviewbase.h \
     stub\inc\mpengine.h \
     stub\inc\mpenginefactory.h \
     stub\inc\mpplaybackwidget.h \
--- a/mpviewplugins/mpsettingsviewplugin/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpsettingsviewplugin/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -18,7 +18,7 @@
 
 SUBDIRS += unittest_mpsettingsviewplugin \
            unittest_mpsettingsaudioeffectswidget \
-	   unittest_mpsettingsview
-					 
+           unittest_mpsettingsview
+
 CONFIG += ordered
 
--- a/mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/inc/mpenginefactory.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/inc/mpenginefactory.h	Fri Sep 17 08:28:52 2010 +0300
@@ -32,8 +32,8 @@
 public:
     virtual ~MpEngineFactory();
     static MpEngineFactory * instance();
-    
-    static MpEngine *createSharedEngine( TUid uid = TUid::Uid( MpCommon::KMusicPlayerUid ), MpEngine::EngineMode mode = MpEngine::StandAlone );
+
+    static MpEngine *createSharedEngine( quint32 clientSecureId=MpCommon::KMusicPlayerUid, MpEngine::EngineMode mode = MpEngine::StandAlone );
     static MpEngine *sharedEngine();
     static void close();
 	
--- a/mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/src/mpenginefactory.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/mpviewplugins/mpsettingsviewplugin/tsrc/unittest_mpsettingsaudioeffectswidget/stub/src/mpenginefactory.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -49,12 +49,12 @@
 }
 
 /*!
- Returns an instance to an engine with \a hostUid, and \a mode, if the shared engine is 
+ Returns an instance to an engine with \a clientSecureId, and \a mode, if the shared engine is
  already created parameters are ignored.
  */
-MpEngine *MpEngineFactory::createSharedEngine( TUid hostUid , MpEngine::EngineMode mode )
+MpEngine *MpEngineFactory::createSharedEngine( quint32 clientSecureId, MpEngine::EngineMode mode )
 {
-    Q_UNUSED( hostUid );
+    Q_UNUSED( clientSecureId );
     Q_UNUSED( mode );
     if ( !instance()->mSharedEngine ) {
         instance()->mSharedEngine = new MpEngine();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+../mpcollectionviewplugin/rom/mpcollectionviewplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpcollectionviewplugin.iby)
+../mpplaybackviewplugin/rom/mpplaybackviewplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpplaybackviewplugin.iby)
+../mpsettingsviewplugin/rom/mpsettingsviewplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpsettingsviewplugin.iby)
+../mpdetailsviewplugin/rom/mpdetailsviewplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpdetailsviewplugin.iby)
+../mpmediawallviewplugin/rom/mpmediawallviewplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpmediawallviewplugin.iby)
--- a/musicservices/bwins/musicservicesu.def	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/bwins/musicservicesu.def	Fri Sep 17 08:28:52 2010 +0300
@@ -7,12 +7,12 @@
 	?contextTitle@MusicServices@@QBE?AVQString@@XZ @ 6 NONAME ; class QString MusicServices::contextTitle(void) const
 	??0MusicServices@@QAE@XZ @ 7 NONAME ; MusicServices::MusicServices(void)
 	??_EMusicServices@@UAE@I@Z @ 8 NONAME ; MusicServices::~MusicServices(unsigned int)
-	?itemSelected@MusicServices@@QAEXVQString@@@Z @ 9 NONAME ; void MusicServices::itemSelected(class QString)
-	?playReady@MusicServices@@IAEXABVXQSharableFile@@@Z @ 10 NONAME ; void MusicServices::playReady(class XQSharableFile const &)
-	?tr@MusicServices@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString MusicServices::tr(char const *, char const *, int)
-	?tr@MusicServices@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString MusicServices::tr(char const *, char const *)
-	?getStaticMetaObject@MusicServices@@SAABUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const & MusicServices::getStaticMetaObject(void)
-	?serviceActive@MusicServices@@IAEXVTUid@@@Z @ 14 NONAME ; void MusicServices::serviceActive(class TUid)
+	?serviceActive@MusicServices@@IAEXI@Z @ 9 NONAME ; void MusicServices::serviceActive(unsigned int)
+	?itemSelected@MusicServices@@QAEXVQString@@@Z @ 10 NONAME ; void MusicServices::itemSelected(class QString)
+	?playReady@MusicServices@@IAEXABVXQSharableFile@@@Z @ 11 NONAME ; void MusicServices::playReady(class XQSharableFile const &)
+	?tr@MusicServices@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString MusicServices::tr(char const *, char const *, int)
+	?tr@MusicServices@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString MusicServices::tr(char const *, char const *)
+	?getStaticMetaObject@MusicServices@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & MusicServices::getStaticMetaObject(void)
 	?metaObject@MusicServices@@UBEPBUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const * MusicServices::metaObject(void) const
 	?setCurrentService@MusicServices@@QAEXW4MusicService@1@@Z @ 16 NONAME ; void MusicServices::setCurrentService(enum MusicServices::MusicService)
 	?staticMetaObject@MusicServices@@2UQMetaObject@@B @ 17 NONAME ; struct QMetaObject const MusicServices::staticMetaObject
--- a/musicservices/eabi/musicservicesu.def	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/eabi/musicservicesu.def	Fri Sep 17 08:28:52 2010 +0300
@@ -2,7 +2,7 @@
 	_ZN13MusicServices11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
 	_ZN13MusicServices11qt_metacastEPKc @ 2 NONAME
 	_ZN13MusicServices12itemSelectedE7QString @ 3 NONAME
-	_ZN13MusicServices13serviceActiveE4TUid @ 4 NONAME
+	_ZN13MusicServices13serviceActiveEj @ 4 NONAME
 	_ZN13MusicServices14currentServiceEv @ 5 NONAME
 	_ZN13MusicServices16staticMetaObjectE @ 6 NONAME DATA 16
 	_ZN13MusicServices17setCurrentServiceENS_12MusicServiceE @ 7 NONAME
--- a/musicservices/inc/musicservices.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/inc/musicservices.h	Fri Sep 17 08:28:52 2010 +0300
@@ -62,9 +62,9 @@
 
 signals:
 
-    void playReady( const QString& aFileName );
+    void playReady( const QString& uri );
     void playReady( const XQSharableFile& file );
-    void serviceActive( TUid hostUid );
+    void serviceActive( quint32 clientSecureId );
 
 private:
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/musicservices/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,22 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+musicservices.iby CORE_APP_LAYER_IBY_EXPORT_PATH(musicservices.iby)
--- a/musicservices/src/getmusicservice.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/src/getmusicservice.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -23,8 +23,6 @@
 #include "mptrace.h"
 
 
-
-
 /*!
  Constructs music fetcher service
  */
@@ -114,8 +112,7 @@
    //TODO: change to string constant when available
     mTitle = requestInfo().info("WindowTitle").toString();
     mServiceApp->setCurrentService( MusicServices::EUriFetcher );
-    TUid uid = TUid::Uid( requestInfo().clientSecureId() ); 
-    emit mServiceApp->serviceActive( uid );
+    emit mServiceApp->serviceActive( requestInfo().clientSecureId() );
     connect(this, SIGNAL( clientDisconnected() ), qApp, SLOT( quit() ) );
     mRequestIndex = setCurrentRequestAsync();
  
--- a/musicservices/src/musicservices.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/src/musicservices.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -31,9 +31,9 @@
 */
 
 /*!
-    \fn void playReady( const QString& aFileName )
+    \fn void playReady( const QString& uri )
 
-    This signal is emitted when the play service has been loaded and playback of aFilenName should start
+    This signal is emitted when the play service has been loaded and playback of \a uri should start.
 
  */
 
@@ -45,9 +45,9 @@
  */
 
 /*!
-    \fn void serviceActive()
+    \fn void serviceActive( quint32 clientSecureId )
 
-    This signal is emitted when the requested service has been detected and view initialization should continue
+    This signal is emitted when the requested service has been detected and view initialization should continue.
 
  */
 
@@ -95,7 +95,6 @@
  */
 QString MusicServices::contextTitle() const
 {
-
     if( mCurrentService == MusicServices::EUriFetcher ) {
         return mFetchService->contextTitle();
     }
@@ -106,8 +105,6 @@
         Q_ASSERT_X(false, "MusicServices::contexTitle", "undefined service");
         return QString();
     }
-    
-    
 }
 
 /*!
@@ -124,6 +121,5 @@
     else if ( mCurrentService == MusicServices::EPlayback ) {
         mPlayService->complete( list );
     }
-    
 }
 
--- a/musicservices/src/playmusicservice.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/src/playmusicservice.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -122,8 +122,7 @@
     uri.replace(QString("/"),QString("\\"));
     mTitle = requestInfo().info("WindowTitle").toString();
     mServiceApp->setCurrentService( MusicServices::EPlayback );
-    TUid uid = TUid::Uid(requestInfo().clientSecureId()); 
-    emit mServiceApp->serviceActive( uid );
+    emit mServiceApp->serviceActive( requestInfo().clientSecureId() );
     emit mServiceApp->playReady( uri );
     connect(this, SIGNAL( clientDisconnected() ), qApp, SLOT( quit() ) );
     mRequestIndex = setCurrentRequestAsync();
@@ -186,8 +185,7 @@
     TX_ENTRY
     mTitle = requestInfo().info("WindowTitle").toString();
     mServiceApp->setCurrentService( MusicServices::EPlayback );
-    TUid uid = TUid::Uid(requestInfo().clientSecureId()); 
-    emit mServiceApp->serviceActive( uid );
+    emit mServiceApp->serviceActive( requestInfo().clientSecureId() );
     emit mServiceApp->playReady( file );
     connect(this, SIGNAL( clientDisconnected() ), qApp, SLOT( quit() ) );
     mRequestIndex = setCurrentRequestAsync();
--- a/musicservices/tsrc/unittest_musicservices/src/unittest_musicservices.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicservices/tsrc/unittest_musicservices/src/unittest_musicservices.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -15,8 +15,7 @@
 *
 */
 
-#include <hbapplication.h>
-#include <hbmainwindow.h>
+#include <qnamespace.h>
 
 
 #include "unittest_musicservices.h"
@@ -34,19 +33,20 @@
  */
 int main(int argc, char *argv[])
 {
-    HbApplication app(argc, argv);
-    HbMainWindow window;
-
+	  QApplication app(argc, argv);
     TestMusicServices tv;
 
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\unittest_musicservices.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_musicservices.txt";
 
-    int res = QTest::qExec(&tv, 3, pass);
-
-    return res;
+        return QTest::qExec(&tv, 3, pass);
+    }
 }
 
 TestMusicServices::TestMusicServices()
--- a/musicwidgetplugin/inc/musicwidget.h	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicwidgetplugin/inc/musicwidget.h	Fri Sep 17 08:28:52 2010 +0300
@@ -109,8 +109,8 @@
     
     /**
      * MpEngine slots
-     */    
-    void libraryAboutToUpdate();
+     */
+    void libraryUpdateStarted();
     void libraryUpdated();
     void usbBlocked( bool blocked );    
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/musicwidgetplugin/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+musicwidgetplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(musicwidgetplugin.iby)
+//  musicwidgetplugin_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(musicwidgetplugin_resources.iby)
+
+// #ifdef MARM
+// START EXTENSION app-services/buildstubsis
+// OPTION SRCDIR rom
+// OPTION SISNAME musicwidgetplugin_stub
+// END
+// #endif
+
+
--- a/musicwidgetplugin/src/musicwidget.cpp	Thu Sep 02 20:24:03 2010 +0300
+++ b/musicwidgetplugin/src/musicwidget.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -132,7 +132,7 @@
     setupUi();
     
     // Connect to MP engine and playback data
-    mMpEngine = MpEngineFactory::createSharedEngine();
+    mMpEngine = MpEngineFactory::createSharedEngine(MpCommon::KMusicPlayerUid, MpEngine::HomeScreen );
     Q_ASSERT_X(mMpEngine, "music_widget", "no music player engine");
     TX_LOG_ARGS("got mp engine")
     
@@ -176,7 +176,7 @@
     QObject::connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextSong()));
 
     // MpEngine
-    QObject::connect(mMpEngine, SIGNAL(libraryAboutToUpdate()), this, SLOT(libraryAboutToUpdate()));
+    QObject::connect(mMpEngine, SIGNAL(libraryUpdateStarted()), this, SLOT(libraryUpdateStarted()));
     QObject::connect(mMpEngine, SIGNAL(libraryUpdated()), this, SLOT(libraryUpdated()));
     QObject::connect(mMpEngine, SIGNAL(usbBlocked(bool)), this, SLOT(usbBlocked(bool)));
 
@@ -615,7 +615,7 @@
 /*!
  MpEngine related
  */
-void MusicWidget::libraryAboutToUpdate()
+void MusicWidget::libraryUpdateStarted()
 {
     TX_LOG
     //Refresh Library start
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+ <package id="musicplayer" name="Music Player Apps" levels="plugins support engine app">
+    <!-- move the rom .pri files into their components and uncomment the units -->
+  <collection id="mpdata " name="Music Player Data" level="support">
+   <component id="mpdata_rom" filter="s60" name="Music Player Data ROM" introduced="^4" class="config">
+    <unit bldFile="mpdata/rom"/>
+   </component>
+   <component id="mpdata_build" filter="s60" name="Music Player Data Build" introduced="^4">
+    <unit bldFile="mpdata" qt:proFile="mpdata.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpdata_test" name="Music Player Data Test" filter="s60,test,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="mpdata/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="mpengine " name="Music Player Engine" level="engine">
+   <component id="mpengine_rom" filter="s60" name="Music Player Engine ROM" introduced="^4" class="config">
+    <unit bldFile="mpengine/rom"/>
+   </component>
+   <component id="mpengine_build" filter="s60" name="Music Player Engine Build" introduced="^4">
+    <unit bldFile="mpengine" qt:proFile="mpengine.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpengine_test" name="Music Player Engine Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="mpengine/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="musicplayer_utilities " name="Music Player Utilities" level="support">
+   <component id="mpnowplayingbanner" filter="s60" name="MP Now Playing Banner" introduced="^4">
+    <unit bldFile="utilities/mpnowplayingbanner" qt:proFile="mpnowplayingbanner.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpsettingsmanager" filter="s60" name="MP Settings Manager" introduced="^4">
+    <unit bldFile="utilities/mpsettingsmanager" qt:proFile="mpsettingsmanager.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpalbumcoverwidget" filter="s60" name="MP Album Cover Widget" introduced="^4">
+    <unit bldFile="utilities/mpalbumcoverwidget" qt:proFile="mpalbumcoverwidget.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpmediacontroller" filter="s60" name="MP Media Controller" introduced="^4">
+    <unit bldFile="utilities/mpmediacontroller" qt:proFile="mpmediacontroller.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpapplicationmonitor" filter="s60" name="MP Application Monitor" introduced="^4">
+    <unit bldFile="utilities/mpapplicationmonitor" qt:proFile="mpapplicationmonitor.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>      
+   <component id="musicplayer_utilities_test" name="Music Player Utilities Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="utilities/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+   <component id="musicplayer_utilities_rom" name="Music Player Utilities ROM" filter="s60" class="config">
+     <unit bldFile="utilities/rom"/>
+   </component>
+  </collection>
+  <collection id="musicservices " name="Music Services" level="support">
+   <component id="musicservices_rom" filter="s60" name="Music Services ROM" introduced="^4" class="config">
+    <unit bldFile="musicservices/rom"/>
+   </component>
+   <component id="musicservices_build" filter="s60" name="Music Services Build" introduced="^4">
+    <unit bldFile="musicservices" qt:proFile="musicservices.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="musicservices_test" name="Music Services Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="musicservices/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="musicplayer_app " name="Music Player Application" level="app">
+   <component id="musicplayer_app_rom" filter="s60" name="Music Player Application ROM" introduced="^4" class="config">
+    <unit bldFile="app/rom"/>
+   </component>
+   <component id="musicplayer_app_build" filter="s60" name="Music Player Application Build" introduced="^4">
+    <unit bldFile="app" qt:proFile="app.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="musicplayer_app_test" name="Music Player Application Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="app/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="mpviewplugins" name="Music Player View Plugins" level="plugins">
+   <component id="mpcollectionviewplugin" filter="s60" name="MP Collection View Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpviewplugins/mpcollectionviewplugin" qt:proFile="mpcollectionviewplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpplaybackviewplugin" filter="s60" name="MP Playback View Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpviewplugins/mpplaybackviewplugin" qt:proFile="mpplaybackviewplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpsettingsviewplugin" filter="s60" name="MP Settings View Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpviewplugins/mpsettingsviewplugin" qt:proFile="mpsettingsviewplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpdetailsviewplugin" filter="s60" name="MP Details View Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpviewplugins/mpdetailsviewplugin" qt:proFile="mpdetailsviewplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpmediawallviewplugin" filter="s60" name="MP Media Wall View Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpviewplugins/mpmediawallviewplugin" qt:proFile="mpmediawallviewplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="mpviewplugins_rom" name="Music Player View Plugins ROM" filter="s60" class="config">
+     <unit bldFile="mpviewplugins/rom"/>
+   </component>
+   <component id="mpviewplugins_test" name="Music Player View Plugins Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="mpviewplugins/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="musicwidgetplugin" name="Music Widget Plugin" level="plugins">
+   <component id="musicwidgetplugin_rom" filter="s60" name="Music Widget Plugin ROM" introduced="^4" class="config">
+    <unit bldFile="musicwidgetplugin/rom"/>
+   </component>
+   <component id="musicwidgetplugin_build" filter="s60" name="Music Widget Plugin" introduced="^4" class="plugin">
+    <unit bldFile="musicwidgetplugin" qt:proFile="musicwidgetplugin.pro" qt:qmakeArgs="-r -config rom"/>
+   </component>
+   <component id="musicwidgetplugin_test" name="Music Widget Plugin Test" filter="s60,qt_unit_test,pref_test,TA_MUSICPLAYER">
+     <unit bldFile="musicwidgetplugin/tsrc" qt:proFile="tsrc.pro"/>
+   </component>
+  </collection>
+  <collection id="mpserviceplugins" name="Music Player Service Plugins" level="plugins">
+   <component id="audioeffects" filter="s60" name="Audio Effects" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/audioeffects/group"/>
+   </component>
+   <component id="localaudio" filter="s60" name="Local Audio" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/localaudio/group"/>
+   </component>
+   <component id="mpxsqlitedbcommon" filter="s60" name="MPX SQLite Database Common" introduced="^4">
+    <unit bldFile="mpserviceplugins/mpxsqlitedbcommon/group"/>
+   </component>
+   <component id="mpxsqlitedbhgplugin" filter="s60" name="MPX SQLite Database Hg Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/mpxsqlitedbhgplugin/group"/>
+   </component>
+   <component id="mpxsqlitepodcastdbplugin" filter="s60" name="MPX SQLlite Podcast Database Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/mpxsqlitepodcastdbplugin/group"/>
+   </component>
+   <component id="mpxinmemoryplugin" filter="s60" name="MPX In-Memory Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/mpxinmemoryplugin/group"/>
+   </component>
+   <component id="m3uplaylistplugin" filter="s60" name="M3U Playlist Plugin" introduced="^4" class="plugin">
+    <unit bldFile="mpserviceplugins/m3uplaylistplugin/group"/>
+   </component>
+  </collection>
+ </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="app"/>
--- a/qtmusicplayer.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/qtmusicplayer.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -25,6 +25,7 @@
     include(utilities/mpnowplayingbanner/rom/rom.pri)
     include(utilities/mpalbumcoverwidget/rom/rom.pri)
     include(utilities/mpmediacontroller/rom/rom.pri)
+    include(utilities/mpapplicationmonitor/rom/rom.pri)
     include(mpviewplugins/mpcollectionviewplugin/rom/rom.pri)
     include(mpviewplugins/mpplaybackviewplugin/rom/rom.pri)
     include(mpviewplugins/mpsettingsviewplugin/rom/rom.pri)
--- a/sis/musicplayer_stub.pkg	Thu Sep 02 20:24:03 2010 +0300
+++ b/sis/musicplayer_stub.pkg	Fri Sep 17 08:28:52 2010 +0300
@@ -37,6 +37,7 @@
 ""-"z:\sys\bin\mpsettingsmanager.dll"
 ""-"z:\sys\bin\mpalbumcoverwidget.dll"
 ""-"z:\sys\bin\mpmediacontroller.dll"
+""-"z:\sys\bin\mpapplicationmonitor.dll"
 ""-"z:\sys\bin\mpdata.dll"
 ""-"z:\sys\bin\mpengine.dll"
 ""-"z:\sys\bin\musicservices.dll"
--- a/sis/musicplayer_udeb.pkg	Thu Sep 02 20:24:03 2010 +0300
+++ b/sis/musicplayer_udeb.pkg	Fri Sep 17 08:28:52 2010 +0300
@@ -247,6 +247,7 @@
 "\epoc32\release\armv5\udeb\mpsettingsmanager.dll"    - "!:\sys\bin\mpsettingsmanager.dll"
 "\epoc32\release\armv5\udeb\mpalbumcoverwidget.dll"   - "!:\sys\bin\mpalbumcoverwidget.dll"
 "\epoc32\release\armv5\udeb\mpmediacontroller.dll"    - "!:\sys\bin\mpmediacontroller.dll"
+"\epoc32\release\armv5\udeb\mpapplicationmonitor.dll" - "!:\sys\bin\mpapplicationmonitor.dll"
 "\epoc32\release\armv5\udeb\mpdata.dll"               - "!:\sys\bin\mpdata.dll"
 "\epoc32\release\armv5\udeb\mpengine.dll"             - "!:\sys\bin\mpengine.dll"
 "\epoc32\release\armv5\udeb\musicservices.dll"        - "!:\sys\bin\musicservices.dll"
--- a/sis/musicplayer_urel.pkg	Thu Sep 02 20:24:03 2010 +0300
+++ b/sis/musicplayer_urel.pkg	Fri Sep 17 08:28:52 2010 +0300
@@ -247,6 +247,7 @@
 "\epoc32\release\armv5\urel\mpsettingsmanager.dll"    - "!:\sys\bin\mpsettingsmanager.dll"
 "\epoc32\release\armv5\urel\mpalbumcoverwidget.dll"   - "!:\sys\bin\mpalbumcoverwidget.dll"
 "\epoc32\release\armv5\urel\mpmediacontroller.dll"    - "!:\sys\bin\mpmediacontroller.dll"
+"\epoc32\release\armv5\urel\mpapplicationmonitor.dll" - "!:\sys\bin\mpapplicationmonitor.dll"
 "\epoc32\release\armv5\urel\mpdata.dll"               - "!:\sys\bin\mpdata.dll"
 "\epoc32\release\armv5\urel\mpengine.dll"             - "!:\sys\bin\mpengine.dll"
 "\epoc32\release\armv5\urel\musicservices.dll"        - "!:\sys\bin\musicservices.dll"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/bwins/mpapplicationmonitoru.def	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,16 @@
+EXPORTS
+	?applicationStatusChanged@MpApplicationMonitor@@IAEX_N@Z @ 1 NONAME ; void MpApplicationMonitor::applicationStatusChanged(bool)
+	?staticMetaObject@MpApplicationMonitor@@2UQMetaObject@@B @ 2 NONAME ; struct QMetaObject const MpApplicationMonitor::staticMetaObject
+	??1MpApplicationMonitor@@UAE@XZ @ 3 NONAME ; MpApplicationMonitor::~MpApplicationMonitor(void)
+	?trUtf8@MpApplicationMonitor@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString MpApplicationMonitor::trUtf8(char const *, char const *, int)
+	?qt_metacall@MpApplicationMonitor@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 5 NONAME ; int MpApplicationMonitor::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isApplicationRunning@MpApplicationMonitor@@QAE_NXZ @ 6 NONAME ; bool MpApplicationMonitor::isApplicationRunning(void)
+	?qt_metacast@MpApplicationMonitor@@UAEPAXPBD@Z @ 7 NONAME ; void * MpApplicationMonitor::qt_metacast(char const *)
+	?metaObject@MpApplicationMonitor@@UBEPBUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const * MpApplicationMonitor::metaObject(void) const
+	?trUtf8@MpApplicationMonitor@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString MpApplicationMonitor::trUtf8(char const *, char const *)
+	?tr@MpApplicationMonitor@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString MpApplicationMonitor::tr(char const *, char const *, int)
+	?tr@MpApplicationMonitor@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString MpApplicationMonitor::tr(char const *, char const *)
+	??_EMpApplicationMonitor@@UAE@I@Z @ 12 NONAME ; MpApplicationMonitor::~MpApplicationMonitor(unsigned int)
+	??0MpApplicationMonitor@@QAE@IPAVQObject@@@Z @ 13 NONAME ; MpApplicationMonitor::MpApplicationMonitor(unsigned int, class QObject *)
+	?getStaticMetaObject@MpApplicationMonitor@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & MpApplicationMonitor::getStaticMetaObject(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/eabi/mpapplicationmonitoru.def	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,16 @@
+EXPORTS
+	_ZN20MpApplicationMonitor11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN20MpApplicationMonitor11qt_metacastEPKc @ 2 NONAME
+	_ZN20MpApplicationMonitor16staticMetaObjectE @ 3 NONAME DATA 16
+	_ZN20MpApplicationMonitor19getStaticMetaObjectEv @ 4 NONAME
+	_ZN20MpApplicationMonitor20isApplicationRunningEv @ 5 NONAME
+	_ZN20MpApplicationMonitor24applicationStatusChangedEb @ 6 NONAME
+	_ZN20MpApplicationMonitorC1EjP7QObject @ 7 NONAME
+	_ZN20MpApplicationMonitorC2EjP7QObject @ 8 NONAME
+	_ZN20MpApplicationMonitorD0Ev @ 9 NONAME
+	_ZN20MpApplicationMonitorD1Ev @ 10 NONAME
+	_ZN20MpApplicationMonitorD2Ev @ 11 NONAME
+	_ZNK20MpApplicationMonitor10metaObjectEv @ 12 NONAME
+	_ZTI20MpApplicationMonitor @ 13 NONAME
+	_ZTV20MpApplicationMonitor @ 14 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/inc/mpapplicationmonitor_p.h	Fri Sep 17 08:28:52 2010 +0300
@@ -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: Music Player application monitor utility - private implementation.
+*
+*/
+
+#ifndef MPAPPLICATIONMONITORPRIVATE_H
+#define MPAPPLICATIONMONITORPRIVATE_H
+
+#include <w32std.h>
+#include <qglobal.h>
+
+class MpApplicationMonitor;
+
+class MpApplicationMonitorPrivate : public CActive
+{
+public:
+
+    explicit MpApplicationMonitorPrivate( MpApplicationMonitor *qq );
+    virtual ~MpApplicationMonitorPrivate();
+
+    void init( quint32 clientSecureId );
+    bool isApplicationRunning();
+
+protected:
+
+    void RunL();
+    void DoCancel();
+
+private:
+
+    void DoInitL();
+    bool DoIsApplicationRunningL();
+    void CreateWindowGroupL();
+    void StartMonitor();
+
+private:
+
+    MpApplicationMonitor        *q_ptr;
+
+    TUid                        iHostUid;
+    RWindowGroup                iWindowGroup;
+    RWsSession                  iWsSession;
+
+};
+
+#endif  // MPAPPLICATIONMONITORPRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/mpapplicationmonitor.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -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: Project file for application monitor utility.
+#
+
+TEMPLATE = lib
+CONFIG += hb qt
+TARGET = mpapplicationmonitor
+symbian: { 
+    TARGET.UID3 = 0x10207C98
+    MMP_RULES += "DEFFILE mpapplicationmonitor.def"
+    defFilePath = .
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.EPOCALLOWDLLDATA = 1
+}
+DEFINES += BUILD_MPAPPLICATIONMONITOR
+
+INCLUDEPATH += . \
+      inc \
+      ../../inc
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+     
+LIBS += -lws32 \
+        -lapgrfx \
+        -lavkon
+
+# Input
+HEADERS += ../../inc/mpapplicationmonitor.h \
+           inc/mpapplicationmonitor_p.h
+
+SOURCES += src/mpapplicationmonitor.cpp \
+           src/mpapplicationmonitor_p.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/rom/mpapplicationmonitor.iby	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef MPAPPLICATIONMONITOR_IBY
+#define MPAPPLICATIONMONITOR_IBY
+
+#include <bldvariant.hrh>
+
+file=ABI_DIR\BUILD_DIR\mpapplicationmonitor.dll		SHARED_LIB_DIR\mpapplicationmonitor.dll
+
+#endif	// MPAPPLICATIONMONITOR_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/rom/rom.pri	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,21 @@
+#
+# 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: 
+#
+
+symbian {
+MP_IBY_DIR = $$section(PWD,":",1)
+
+BLD_INF_RULES.prj_exports += "$$MP_IBY_DIR/mpapplicationmonitor.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpapplicationmonitor.iby)"
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/src/mpapplicationmonitor.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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 now playing widget - private implementation.
+*
+*/
+
+#include "mpapplicationmonitor.h"
+#include "mpapplicationmonitor_p.h"
+#include "mptrace.h"
+
+/*!
+    \class MpApplicationMonitor
+    \brief Application monitor.
+
+    This utility monitors an application status, i.e. whether the application
+    is running or not.
+*/
+
+/*!
+    \fn applicationStatusChanged( bool isRunning )
+
+    This signal is emitted when the application status changes. Application
+    status is indicated with \a isRunning.
+*/
+
+/*!
+ Constructs the utility. Default monitored application is Music Player.
+ */
+MpApplicationMonitor::MpApplicationMonitor( quint32 clientSecureId, QObject *parent )
+    : QObject(parent)
+{
+    d_ptr = new MpApplicationMonitorPrivate(this);
+    d_ptr->init( clientSecureId );
+}
+
+/*!
+ Destructs the utility.
+ */
+MpApplicationMonitor::~MpApplicationMonitor()
+{
+    delete d_ptr;
+}
+
+/*!
+ Returns whether the monitoring application is running.
+ */
+bool MpApplicationMonitor::isApplicationRunning()
+{
+    return d_ptr->isApplicationRunning();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/src/mpapplicationmonitor_p.cpp	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,195 @@
+/*
+* 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 application monitor utility - private implementation.
+*
+*/
+
+#include <apgtask.h>
+#include <AknTaskList.h>
+
+#include "mpapplicationmonitor_p.h"
+#include "mpapplicationmonitor.h"
+#include "mptrace.h"
+
+// -1 means the window will never be visible.
+const TInt KWindowGroupPriority = -1;
+
+/*!
+    \class MpApplicationMonitorPrivate
+    \brief Music Player application monitor utility - private implementation.
+
+
+*/
+
+/*!
+ Constructor
+ */
+MpApplicationMonitorPrivate::MpApplicationMonitorPrivate( MpApplicationMonitor *qq )
+    : CActive( CActive::EPriorityStandard ),
+      q_ptr( qq )
+{
+    TX_ENTRY_ARGS( "Q pointer=" << ( void * )qq )
+    CActiveScheduler::Add( this );
+    TX_EXIT
+}
+
+/*!
+ Destructor
+ */
+MpApplicationMonitorPrivate::~MpApplicationMonitorPrivate()
+{
+    TX_LOG
+    // Cancel any outstanding request
+    Cancel();
+
+    iWindowGroup.Close();
+    iWsSession.Close();
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpApplicationMonitorPrivate::init( quint32 clientSecureId )
+{
+    TX_ENTRY
+    iHostUid = TUid::Uid( clientSecureId );
+    TRAPD( err, DoInitL() );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS( "Error: " << err << "; should never get here." );
+    }
+    TX_EXIT
+}
+
+/*!
+ Request if music player application is running.
+ */
+bool MpApplicationMonitorPrivate::isApplicationRunning()
+{
+    TX_ENTRY
+    bool running = false;
+    TRAPD( err, running = DoIsApplicationRunningL() );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS( "Error: " << err << "; should never get here." );
+    }
+    TX_EXIT
+    return running;
+}
+
+/*!
+ \internal
+ Checks if the chosen app is launched
+ */
+void MpApplicationMonitorPrivate::RunL()
+    {
+    // Get the status of this object.
+    const TInt errCode( iStatus.Int() );
+    TX_ENTRY_ARGS("Status=" << errCode);
+
+    if ( KErrNone == errCode ) {
+        TWsEvent event;
+        iWsSession.GetEvent( event );
+        if ( event.Type() == EEventWindowGroupsChanged ) {
+            emit q_ptr->applicationStatusChanged( isApplicationRunning() );
+        }
+        TX_LOG_ARGS("OK, renewing request");
+        StartMonitor();
+    }
+    else if ( KErrCancel != errCode ) {
+        TX_LOG_ARGS("Renewing request after error: " << errCode);
+        StartMonitor();
+    }
+    else {
+        TX_LOG_ARGS("cancelled");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ Cancel the outstanding request.
+ */
+void MpApplicationMonitorPrivate::DoCancel()
+{
+    TX_ENTRY
+    iWsSession.EventReadyCancel();
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpApplicationMonitorPrivate::DoInitL()
+{
+    TX_ENTRY
+    CreateWindowGroupL();
+    StartMonitor();
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+bool MpApplicationMonitorPrivate::DoIsApplicationRunningL()
+{
+    TX_ENTRY
+    bool taskExists = false;
+    CAknTaskList* taskList = CAknTaskList::NewL( iWsSession );
+    TApaTask task = taskList->FindRootApp( iHostUid );
+    delete taskList;
+    taskExists = task.Exists();
+    TX_LOG_ARGS("taskExists=" << taskExists);
+    return taskExists;
+}
+
+/*!
+ \internal
+ Creates a window group and hides it from the UI.
+ */
+void MpApplicationMonitorPrivate::CreateWindowGroupL()
+{
+    TX_ENTRY
+    User::LeaveIfError( iWsSession.Connect() );
+    RWindowGroup wg( iWsSession );
+    // Make a handle from the address of window group object
+    User::LeaveIfError( wg.Construct( reinterpret_cast<TUint32>( &wg ) ) );
+    User::LeaveIfError( wg.EnableGroupChangeEvents() );
+
+    // Get the ordinal position of this window group
+    const TInt ordPos( wg.OrdinalPosition() );
+    // Set priority so it's hidden in the UI
+    wg.SetOrdinalPosition( ordPos, KWindowGroupPriority );
+
+    // Needs to be a member variable. Must be closed in destructor.
+    // Otherwise can't monitor what has been opened.
+    iWindowGroup = wg;
+
+    iWsSession.Flush();
+    TX_EXIT
+}
+
+/*!
+ \internal
+ Starts event monitoring.
+ */
+void MpApplicationMonitorPrivate::StartMonitor()
+{
+    TX_ENTRY
+    Cancel();
+
+    iWsSession.EventReady( &iStatus );
+    SetActive();
+    TX_EXIT
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/mpapplicationmonitor/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,22 @@
+#
+# 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 mpapplicationmonitor unit test project file.
+#
+
+TEMPLATE = subdirs
+
+#SUBDIRS += unittest_?
+
+CONFIG += ordered
+
Binary file utilities/mpsettingsmanager/conf/musicplayer.confml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilities/rom/bld.inf	Fri Sep 17 08:28:52 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* 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: Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+
+../mpsettingsmanager/rom/mpsettingsmanager.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpsettingsmanager.iby)
+../mpnowplayingbanner/rom/mpnowplayingbanner.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpnowplayingbanner.iby)
+../mpalbumcoverwidget/rom/mpalbumcoverwidget.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpalbumcoverwidget.iby)
+../mpmediacontroller/rom/mpmediacontroller.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpmediacontroller.iby)
+../mpapplicationmonitor/rom/mpapplicationmonitor.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpapplicationmonitor.iby)
+
--- a/utilities/tsrc/tsrc.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/utilities/tsrc/tsrc.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -18,7 +18,9 @@
 
 SUBDIRS += ../mpnowplayingbanner/tsrc \
            ../mpsettingsmanager/tsrc \
-           ../mpmediacontroller/tsrc
+           ../mpmediacontroller/tsrc \
+           ../mpalbumcoverwidget/tsrc \
+           ../mpapplicationmonitor/tsrc
 
 CONFIG += ordered
 
--- a/utilities/utilities.pro	Thu Sep 02 20:24:03 2010 +0300
+++ b/utilities/utilities.pro	Fri Sep 17 08:28:52 2010 +0300
@@ -18,6 +18,7 @@
 SUBDIRS  = mpnowplayingbanner \
            mpsettingsmanager \
            mpalbumcoverwidget \
-           mpmediacontroller
+           mpmediacontroller \
+           mpapplicationmonitor
 
 CONFIG += ordered