201025
authorhgs
Thu, 24 Jun 2010 09:49:13 +0300
changeset 41 229f037ce963
parent 40 13331705e488
child 42 17f382c040b1
201025
inc/mpxvideo_debug.h
inc/videoactivitystate.h
mediasettings/mediasettings.pro
mediasettings/videosettingsplugin/inc/videosettingsgroup.h
mediasettings/videosettingsplugin/src/videosettingsgroup.cpp
mediasettings/videosettingsplugin/tsrc/testgroup/src/testvideosettingsgroup.cpp
mediasettings/videosettingsplugin/tsrc/testgroup/stub/inc/hblineedit.h
mediasettings/videosettingsplugin/tsrc/testgroup/stub/src/hblineedit.cpp
videocollection/inc/videocollectiontrace.h
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTest.cfg
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestCategories.cfg
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/VCXMyVideosCollectionPluginTest.pkg
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/bld.inf
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosTestUtils.h
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosTestUtils.cpp
videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h
videocollection/tsrc/stubs/src/videocollectionuiloader.cpp
videocollection/tsrc/stubs/src/videocollectionviewutils.cpp
videocollection/tsrc/stubs/src/videolistview.cpp
videocollection/tsrc/stubs/src/videolistwidget.cpp
videocollection/tsrc/videoservicestestapp/src/videoservicestestappview.cpp
videocollection/videocollectionview/conf/CI_videoplayerservicelist.confml
videocollection/videocollectionview/conf/videolistview.confml
videocollection/videocollectionview/conf/videolistview_2002BC63.crml
videocollection/videocollectionview/conf/videoplayerservicelist.confml
videocollection/videocollectionview/data/videolistselectiondialog.docml
videocollection/videocollectionview/inc/videocollectioncenrepdefs.h
videocollection/videocollectionview/inc/videocollectionviewplugin.h
videocollection/videocollectionview/inc/videocollectionviewutils.h
videocollection/videocollectionview/inc/videohintwidget.h
videocollection/videocollectionview/inc/videolistview.h
videocollection/videocollectionview/inc/videolistwidget.h
videocollection/videocollectionview/src/videocollectionuiloader.cpp
videocollection/videocollectionview/src/videocollectionviewplugin.cpp
videocollection/videocollectionview/src/videocollectionviewutils.cpp
videocollection/videocollectionview/src/videohintwidget.cpp
videocollection/videocollectionview/src/videolistview.cpp
videocollection/videocollectionview/src/videolistwidget.cpp
videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp
videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h
videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp
videocollection/videocollectionview/tsrc/testlistview/inc/testlistview.h
videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp
videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp
videocollection/videocollectionview/tsrc/testvideocollectionviewutils/inc/testvideocollectionviewutils.h
videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp
videocollection/videocollectionview/videocollectionview.pro
videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp
videocollection/videocollectionwrapper/videocollectionwrapper.pro
videocollection/videofiledetailsview/data/videofiledetails.docml
videocollection/videofiledetailsview/data/videofiledetails.qrc
videocollection/videofiledetailsview/data/videofiledetails.xml
videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdetailsplaybackwindow.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfiledetailswidget.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybacktoolbar.cpp
videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro
videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/hbeffect.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/hbeffect.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/src/testmpxvideoviewwrapper.cpp
videoplayback/hbvideoplaybackview/tsrc/testprogressbar/src/testprogressbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideodisplayhandler/src/testvideodisplayhandler.cpp
videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h
videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp
videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackdisplayhandler.cpp
videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp
videoplayback/inc/hbvideobaseplaybackview.h
videoplayback/videohelix/inc/mpxvideoplaybackstate.h
videoplayback/videohelix/src/mpxvideoplaybackstate.cpp
videoplayback/videohelix/tsrc/ut_videohelixtest/inc/videohelixtest.h
videoplayerapp/videoplayerengine/src/videoplayerengine.cpp
videoplayerapp/videoplayerengine/videoplayerengine.pro
--- a/inc/mpxvideo_debug.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/inc/mpxvideo_debug.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 */
 
 
-// Version : %version: ou1cpsw#3 %
+// Version : %version: ou1cpsw#5 %
 
 
 
@@ -40,10 +40,10 @@
 #else
     #ifdef _MPX_FILE_LOGGING_
         #define FU_DEBUG MPXDebug::FileLog
-    #else        
+    #else
         #define FU_DEBUG
     #endif
-#endif 
+#endif
 
 
 class MPXDebug
@@ -53,7 +53,7 @@
         {
             VA_LIST list;
             VA_START(list,aFmt);
-            RFileLogger::WriteFormat( _L("Fusion"), 
+            RFileLogger::WriteFormat( _L("Fusion"),
                                       _L("fusion.log"),
                                       EFileLoggingModeAppend,
                                       aFmt,
@@ -76,16 +76,16 @@
 class TFusionLog : public TDes16Overflow
 {
     public:
-        
+
         inline static void FusionLog( TRefByValue<const TDesC16> aFmt, ... )
         {
-            TBuf< 512 > buffer;
-            
+            TBuf< 496 > buffer;
+
             VA_LIST list;
             VA_START( list, aFmt );
             buffer.AppendFormatList( aFmt, list );
             VA_END(list);
-            
+
             FU_DEBUG(_L("#Fu# %S"), &buffer );
         }
 };
@@ -93,7 +93,7 @@
 class TEnterExitLog : public TDes16Overflow
 {
     public:
-        
+
         void Overflow(TDes16& /*aDes*/)
         {
             FU_DEBUG(_L("%S Logging Overflow"), &iFunctionName);
@@ -103,40 +103,40 @@
                        TRefByValue<const TDesC> aFmt, ... )
         {
             iFunctionName = HBufC::New( TDesC(aFunctionName).Length() );
-            
+
             if ( iFunctionName )
             {
                 iFunctionName->Des().Copy(aFunctionName);
             }
-            
-            TBuf< 512 > buffer;
-            
+
+            TBuf< 496 > buffer;
+
             VA_LIST list;
             VA_START( list, aFmt );
             buffer.AppendFormatList( aFmt, list, this );
             VA_END(list);
-            
+
             FU_DEBUG(_L("#Fu# --> %S %S"), iFunctionName, &buffer );
         }
-        
+
         TEnterExitLog( TRefByValue<const TDesC> aFunctionName )
         {
             iFunctionName = HBufC::New( TDesC(aFunctionName).Length() );
-            
+
             if ( iFunctionName )
             {
                 iFunctionName->Des().Copy(aFunctionName);
             }
-            
+
             FU_DEBUG(_L("#Fu# --> %S"), iFunctionName );
         }
-        
+
         ~TEnterExitLog()
         {
             FU_DEBUG(_L("#Fu# <-- %S"), iFunctionName );
             delete iFunctionName;
         }
-        
+
     private:
         HBufC*    iFunctionName;
 };
--- a/inc/videoactivitystate.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/inc/videoactivitystate.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  da1mmcf#3 %
 
 #ifndef __VIDEOACTIVITYSTATE_H__
 #define __VIDEOACTIVITYSTATE_H__
@@ -27,36 +27,18 @@
 // videoplayer activity id
 static const QString ACTIVITY_VIDEOPLAYER_MAINVIEW = "VideosMainView";
 
+// last position of the last played media clip (int)
+static const QString KEY_LAST_PLAY_POSITION_ID   = "_VideoActivity_last_play_position_id_";
 
-namespace VideoActivityData
-{        
-    // consts to be used as key values    
-    // plugin type (int): collectionplugin or videoplaybackplugin 
-    static const QString KEY_VIEWPLUGIN_TYPE = "_VideoActivity_viewplugin_type_";
-    
-    // type of collectionview plugin's widget level(int): 
-    // all videos, collections or collection video list
-    static const QString KEY_WIDGET_LEVEL    = "_VideoActivity_widget_level_";
-    
-    // id of the collection whose videolist is to be shown (int).
-    static const QString KEY_WIDGET_ID       = "_VideoActivity_view_item_id_";
+// name of the media clip last played (QString)
+static const QString KEY_LAST_PLAYED_CLIP = "_VideoActivity_last_played_clip_";
 
-    // for playback plugin: view to activate either play or details
-    static const QString KEY_PLAYB_VIEW      = "_VideoActivity_playb_view_type_";
-          
-    // for playback plugin: video path
-    static const QString KEY_VIDEO_PATH      = "_VideoActivity_video_path_";
-    
-    // for playback plugin: video playback position
-    static const QString KEY_VIDEO_POS       = "_VideoActivity_video_pos_";
-    
-    // for playback plugin: video playback state
-    static const QString KEY_PLAYB_STATE     = "_VideoActivity_playb_state_";
-    
-    // for playback plugin: video playback volume
-    static const QString KEY_PLAYB_VOLUME    = "_VideoActivity_playb_volume_";
-            
-}
+// Key for plugin type in activity manager
+static const QString KEY_VIEWPLUGIN_TYPE = "_VideoActivity_viewplugin_type_";
+
+// was the last played media clip a local clip (not streaming or prog. download)
+static const QString KEY_LAST_LOCAL_PLAYBACK   = "_VideoActivity_last_local_playback_";
+
 
 /**
  * Class is used as a static activity data container for videoplayer application
--- a/mediasettings/mediasettings.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/mediasettings.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -20,6 +20,6 @@
 symbian: {
 BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"group/bld.inf\""
 
-#SUBDIRS += videosettingsplugin
+SUBDIRS += videosettingsplugin
 }
                      
\ No newline at end of file
--- a/mediasettings/videosettingsplugin/inc/videosettingsgroup.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/inc/videosettingsgroup.h	Thu Jun 24 09:49:13 2010 +0300
@@ -19,6 +19,7 @@
 
 #include <cpsettingformitemdata.h>
 #include <qabstractitemmodel.h>
+#include <qtranslator.h>
 
 class CpItemDataHelper;
 class CMPSettingsModel;
@@ -106,6 +107,11 @@
     CpItemDataHelper& mItemDataHelper;
     
     /**
+     * Holds videos translation file. It's needed to localize texts in this plugin.
+     */
+    QTranslator mTranslator;
+    
+    /**
      * The settings model where settings are loaded and saved.
      */
     CMPSettingsModel* mSettingsModel;
--- a/mediasettings/videosettingsplugin/src/videosettingsgroup.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/src/videosettingsgroup.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -31,9 +31,25 @@
 #include <MPSettEngPluginImplementationUIDs.hrh>
 #include <xqconversions.h>
 #include <qapplication.h>
-#include <qtranslator.h>
 #include <hbapplication.h>
 
+const int PROXY_LOWEST_ACCEPTED_VALUE = 1;
+const int UDP_LOWEST_ACCEPTED_VALUE = 1024;
+const int PORT_HIGHEST_ACCEPTED_VALUE = 65535;
+
+void gValidatePortValues(int& value, int bottom, int top)
+{
+    if(value < bottom)
+    {
+        value = bottom;
+    }
+
+    if(value > top)
+    {
+        value = top;
+    }
+}
+
 // ---------------------------------------------------------------------------
 // Constructor
 // ---------------------------------------------------------------------------
@@ -50,28 +66,27 @@
     mProxyPortItem(0)
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::VideoSettingsGroup()"));
-    
+
     // Load the translation file.
     QString lang = QLocale::system().name();
-    QTranslator translator;
     bool loaded(false);
 
-    loaded = translator.load( "videos_" + lang, QString("c:/resource/qt/translations") );
+    loaded = mTranslator.load( "videos_" + lang, QString("c:/resource/qt/translations") );
 
     if (!loaded)
     {
-        translator.load("videos_" + lang, QString("z:/resource/qt/translations") );
+        mTranslator.load("videos_" + lang, QString("z:/resource/qt/translations") );
     }
 
     // Install the translator
     HbApplication* app = qobject_cast<HbApplication*>(qApp);
     if(app)
     {
-        app->installTranslator(&translator);
+        app->installTranslator(&mTranslator);
     }
-    
+
     this->setLabel(hbTrId("txt_videos_subhead_video_streaming_settings"));
-    
+
     TRAPD(err, InitSettingsModelL());
     if(err != KErrNone)
     {
@@ -79,52 +94,52 @@
         mSettingsModel = 0;
         return;
     }
-    
+
     itemDataHelper.connectToForm(SIGNAL(itemShown(const QModelIndex)), this, SLOT(itemShown(const QModelIndex)));
-    
+
     // Access point in use
-    mAccessPointItem = new VideoSettingsAccessPointEntry(itemDataHelper, 
+    mAccessPointItem = new VideoSettingsAccessPointEntry(itemDataHelper,
         hbTrId("txt_videos_dblist_access_point"), this);
     this->appendChild(mAccessPointItem);
-    
+
     // Lowest UDP port
     mLowestUDPPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_min_udp_port"));
     mLowestUDPPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mLowestUDPPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mLowestUDPPortItem, SIGNAL(editingFinished()),
         this, SLOT(lowestUdpPortEditingFinished()));
     this->appendChild(mLowestUDPPortItem);
-    
+
     // Highest UDP port
     mHighestUDPPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_max_udp_port"));
     mHighestUDPPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mHighestUDPPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mHighestUDPPortItem, SIGNAL(editingFinished()),
         this, SLOT(highestUdpPortEditingFinished()));
     this->appendChild(mHighestUDPPortItem);
-    
+
     // Use proxy
     mUseProxyItem = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, QString());
     mUseProxyItem->setContentWidgetData(QString("text"), hbTrId("txt_videos_formlabel_proxy_in_use"));
     this->appendChild(mUseProxyItem);
-    
+
     // Proxy server address
     mProxyServerItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_proxy_host_name"));
     mProxyServerItem->setContentWidgetData(QString("maxRows"), 1);
     mProxyServerItem->setContentWidgetData(QString("placeholderText"), hbTrId("txt_videos_dblist_none"));
-    mItemDataHelper.addConnection(mProxyServerItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mProxyServerItem, SIGNAL(editingFinished()),
         this, SLOT(proxyServerEditingFinished()));
     this->appendChild(mProxyServerItem);
-    
+
     // Proxy port number
     mProxyPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_proxy_port"));
     mProxyPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mProxyPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mProxyPortItem, SIGNAL(editingFinished()),
         this, SLOT(proxyPortEditingFinished()));
     this->appendChild(mProxyPortItem);
-    
+
     loadSettings();
 }
 
@@ -135,9 +150,9 @@
 VideoSettingsGroup::~VideoSettingsGroup()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::~VideoSettingsGroup()"));
-    
+
     TRAP_IGNORE( mSettingsModel->StoreSettingsL() );
-    
+
     delete mSettingsModel;
 }
 
@@ -148,12 +163,12 @@
 uint VideoSettingsGroup::getAccessPointId()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::getAccessPointId()"));
-    
+
     TUint32 defaultAp(0);
     mSettingsModel->GetDefaultAp(defaultAp);
-    
+
     MPX_DEBUG(_L("Returned access point id = %i"), defaultAp);
-    
+
     return defaultAp;
 }
 
@@ -163,10 +178,16 @@
 //
 void VideoSettingsGroup::setAccessPointId(const uint& defaultAp)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::setAccessPointId()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::setAccessPointId()"),
         _L("defaultAp = %i"), defaultAp);
-    
-    mSettingsModel->SetDefaultAp(defaultAp);
+
+    uint oldAp = getAccessPointId();
+
+    if(oldAp != defaultAp)
+    {
+        mSettingsModel->SetDefaultAp(defaultAp);
+        mUseProxyItem->setContentWidgetData(QString("checked"), false);
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -176,18 +197,21 @@
 void VideoSettingsGroup::lowestUdpPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::lowestUdpPortValueChanged()"));
-    
+
     int minPort = mLowestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
     int maxPort = mHighestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("minudp = %i, maxudp = %i"), minPort, maxPort);
-    
+
     if(minPort > maxPort)
     {
         minPort = maxPort;
-        mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(minPort));
     }
-    
+
+    gValidatePortValues(minPort, UDP_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(minPort));
+
     mSettingsModel->SetMinUDPPort(minPort);
 }
 
@@ -198,18 +222,21 @@
 void VideoSettingsGroup::highestUdpPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::highestUdpPortValueChanged()"));
-    
+
     int maxPort = mHighestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
     int minPort = mLowestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("minudp = %i, maxudp = %i"), minPort, maxPort);
-    
+
     if(maxPort < minPort)
     {
         maxPort = minPort;
-        mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(maxPort));
     }
-    
+
+    gValidatePortValues(maxPort, UDP_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(maxPort));
+
     mSettingsModel->SetMaxUDPPort(maxPort);
 }
 
@@ -219,12 +246,12 @@
 //
 void VideoSettingsGroup::useProxyToggled(int state)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::useProxyToggled()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::useProxyToggled()"),
         _L("state = %i"), state);
-    
+
     mProxyServerItem->setEnabled(state == Qt::Checked);
     mProxyPortItem->setEnabled(state == Qt::Checked);
-    
+
     mSettingsModel->SetProxyMode(state == Qt::Checked ? 1 : 0);
 }
 
@@ -235,11 +262,11 @@
 void VideoSettingsGroup::proxyServerEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::proxyServerValueChanged()"));
-    
+
     QString text = mProxyServerItem->contentWidgetData(QString("text")).toString();
-    
+
     MPX_DEBUG(_L("new proxy server = '%s'"), text.data());
-    
+
     HBufC* proxyServer = XQConversions::qStringToS60Desc(text);
     TRAP_IGNORE( mSettingsModel->SetProxyHostNameL(*proxyServer) );
     delete proxyServer;
@@ -252,12 +279,16 @@
 void VideoSettingsGroup::proxyPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::proxyPortValueChanged()"));
-    
+
     int proxyPort = mProxyPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("new proxy port = %i"), proxyPort);
-    
-    mSettingsModel->SetProxyPort(proxyPort);    
+
+    gValidatePortValues(proxyPort, PROXY_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mProxyPortItem->setContentWidgetData(QString("text"), QString::number(proxyPort));
+
+    mSettingsModel->SetProxyPort(proxyPort);
 }
 
 // ---------------------------------------------------------------------------
@@ -266,26 +297,23 @@
 //
 void VideoSettingsGroup::itemShown(const QModelIndex& index)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::itemShown()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::itemShown()"),
         _L("index row = %i"), index.row());
-    
+
     HbDataFormModelItem* modelItem = mItemDataHelper.modelItemFromModelIndex(index);
-    
+
     if(modelItem == mLowestUDPPortItem ||
        modelItem == mHighestUDPPortItem ||
        modelItem == mProxyPortItem )
     {
         HbLineEdit *editor = static_cast<HbLineEdit *>(mItemDataHelper.widgetFromModelIndex(index));
 
+        editor->setMaxLength(5);
+
         HbEditorInterface editorIf(editor);
         editorIf.setFilter(HbDigitsOnlyFilter::instance());
-        
-        HbValidator *validator = new HbValidator(this);
-        int lowestAllowedPort = modelItem == mProxyPortItem ? 1 : 1024;
-        validator->addField(new QIntValidator(lowestAllowedPort, 65535, validator), modelItem->contentWidgetData(QString("text")).toString());
-        editor->setValidator(validator);
     }
-    
+
     if(modelItem == mProxyServerItem)
     {
         mItemDataHelper.addConnection(mUseProxyItem, SIGNAL(stateChanged(int)), this, SLOT(useProxyToggled(int)));
@@ -301,7 +329,7 @@
 void VideoSettingsGroup::InitSettingsModelL()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::InitSettingsModelL()"));
-    
+
     TUid settingsUid = {KMPSettEngImplUidROP};
     mSettingsModel = CMPSettingsModel::NewL(settingsUid);
     mSettingsModel->LoadSettingsL(EConfigUser);
@@ -314,28 +342,28 @@
 void VideoSettingsGroup::loadSettings()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::loadSettings()"));
-    
+
     int lowestUdpPort(0);
     mSettingsModel->GetMinUDPPort(lowestUdpPort);
     mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(lowestUdpPort));
-    
+
     int highestUdpPort(0);
     mSettingsModel->GetMaxUDPPort(highestUdpPort);
     mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(highestUdpPort));
-    
+
     int proxyMode(0);
     mSettingsModel->GetProxyMode(proxyMode);
     mUseProxyItem->setContentWidgetData(QString("checked"), proxyMode == 1);
     useProxyToggled(proxyMode == 1 ? Qt::Checked : Qt::Unchecked);
-    
-    TBuf<2048> proxyServerBuf;
+
+    TBuf<496> proxyServerBuf;
     mSettingsModel->GetProxyHostName(proxyServerBuf);
     QString proxyServer = XQConversions::s60DescToQString(proxyServerBuf);
     mProxyServerItem->setContentWidgetData(QString("text"), proxyServer);
-    
+
     int proxyPort;
     mSettingsModel->GetProxyPort(proxyPort);
     mProxyPortItem->setContentWidgetData(QString("text"), QString::number(proxyPort));
-    
+
     mAccessPointItem->setIapId(getAccessPointId());
 }
--- a/mediasettings/videosettingsplugin/tsrc/testgroup/src/testvideosettingsgroup.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/tsrc/testgroup/src/testvideosettingsgroup.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -119,6 +119,9 @@
     QCOMPARE( mItemHelper->mFormConnection.signal, SIGNAL(itemShown(const QModelIndex)) );
     QVERIFY( mItemHelper->mFormConnection.receiver == mTestObject );
     QCOMPARE( mItemHelper->mFormConnection.method, SLOT(itemShown(const QModelIndex)) );
+    
+    // and that group has correct label
+    QCOMPARE( mTestObject->label(), hbTrId("txt_videos_subhead_video_streaming_settings") );
 }
 
 // ---------------------------------------------------------------------------
@@ -250,13 +253,30 @@
 //
 void TestVideoSettingsGroup::testSetAccessPointId()
 {
+    QString string("test");
     CMPSettingsModel::mApId = -1;
-    
-    uint ap = 3;
+    mTestObject->mUseProxyItem->setContentWidgetData(QString("checked"), true);
+    mTestObject->mProxyServerItem->setContentWidgetData(QString("text"), string);
+    CMPSettingsModel::mHostName = string;
     
+    // given ap id is different from the one that is saved in settingsmodel.
+    uint ap = 3;
     mTestObject->setAccessPointId(ap);
+    QCOMPARE( CMPSettingsModel::mApId, (int)ap );
+    QVERIFY( mTestObject->mUseProxyItem->contentWidgetData(QString("checked")).toBool() == false );
+    QCOMPARE( mTestObject->mProxyServerItem->contentWidgetData(QString("text")).toString(), string );
+    QCOMPARE( CMPSettingsModel::mHostName, string );
     
+    mTestObject->mUseProxyItem->setContentWidgetData(QString("checked"), true);
+    mTestObject->mProxyServerItem->setContentWidgetData(QString("text"), string);
+    CMPSettingsModel::mHostName = string;
+    
+    // given ap id is the same than the one that is saved in settingsmodel.
+    mTestObject->setAccessPointId(ap);
     QCOMPARE( CMPSettingsModel::mApId, (int)ap );
+    QVERIFY( mTestObject->mUseProxyItem->contentWidgetData(QString("checked")).toBool() );
+    QCOMPARE( mTestObject->mProxyServerItem->contentWidgetData(QString("text")).toString(), string );
+    QCOMPARE( CMPSettingsModel::mHostName, string );
 }
 
 // ---------------------------------------------------------------------------
@@ -268,30 +288,61 @@
     connect(this, SIGNAL(testTextSignal()),
         mTestObject, SLOT(lowestUdpPortEditingFinished()));
     
-    QString highText("12345");
+    // normal case where min port is less than max port and both are in acceptable range.
+    QString highText("10000");
     mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), highText);
     
-    QString testString("1234");
+    QString testString("1024");
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), testString);
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMinUdpPort, testString.toInt() );
+    
+    // min port greater than max port, both are in acceptable range.
+    CMPSettingsModel::mMinUdpPort = 0;
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString("10001"));
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMinUdpPort, highText.toInt() );
+    
+    // min port same as max port and in acceptable range.
+    CMPSettingsModel::mMinUdpPort = 0;
+    testString = "10000";
     mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), testString);
     
     emit testTextSignal();
     
     QCOMPARE( CMPSettingsModel::mMinUdpPort, testString.toInt() );
     
+    // min port less than 1024
     CMPSettingsModel::mMinUdpPort = 0;
-    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString("12346"));
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString("1023"));
     
     emit testTextSignal();
     
-    QCOMPARE( CMPSettingsModel::mMinUdpPort, highText.toInt() );
+    QCOMPARE( CMPSettingsModel::mMinUdpPort, 1024 );
+    QCOMPARE( mTestObject->mLowestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("1024") );
     
+    // min port greater than 65535
     CMPSettingsModel::mMinUdpPort = 0;
-    testString = "12345";
-    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), testString);
+    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString("65536"));
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString("65536"));
     
     emit testTextSignal();
     
-    QCOMPARE( CMPSettingsModel::mMinUdpPort, testString.toInt() );    
+    QCOMPARE( CMPSettingsModel::mMinUdpPort, 65535 );
+    QCOMPARE( mTestObject->mLowestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("65535") );
+    
+    // min port field empty
+    CMPSettingsModel::mMinUdpPort = 0;
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString(""));
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMinUdpPort, 1024 );
+    QCOMPARE( mTestObject->mLowestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("1024") );
 }
 
 // ---------------------------------------------------------------------------
@@ -303,30 +354,61 @@
     connect(this, SIGNAL(testTextSignal()),
         mTestObject, SLOT(highestUdpPortEditingFinished()));
     
-    QString lowText("1234");
+    // normal case where min port is less than max port and both are in acceptable range.
+    QString lowText("2000");
     mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), lowText);
     
-    QString testString("12345");
+    QString testString("65535");
     mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), testString);
     
     emit testTextSignal();
     
     QCOMPARE( CMPSettingsModel::mMaxUdpPort, testString.toInt() );
     
+    // max port less than min port, both in acceptable range.
     CMPSettingsModel::mMaxUdpPort = 0;
-    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString("1233"));
+    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString("1999"));
     
     emit testTextSignal();
     
     QCOMPARE( CMPSettingsModel::mMaxUdpPort, lowText.toInt() );
     
+    // max port same as min port and in acceptable range.
     CMPSettingsModel::mMaxUdpPort = 0;
-    testString = "1234";
+    testString = "2000";
     mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), testString);
     
     emit testTextSignal();
     
     QCOMPARE( CMPSettingsModel::mMaxUdpPort, testString.toInt() );
+
+    // max port less than 1024
+    CMPSettingsModel::mMaxUdpPort = 0;
+    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString("1023"));
+    mTestObject->mLowestUDPPortItem->setContentWidgetData(QString("text"), QString("1023"));
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMaxUdpPort, 1024 );
+    QCOMPARE( mTestObject->mHighestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("1024") );
+    
+    // max port greater than 65535
+    CMPSettingsModel::mMaxUdpPort = 0;
+    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString("65536"));
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMaxUdpPort, 65535 );
+    QCOMPARE( mTestObject->mHighestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("65535") );
+    
+    // max port field empty
+    CMPSettingsModel::mMaxUdpPort = 0;
+    mTestObject->mHighestUDPPortItem->setContentWidgetData(QString("text"), QString(""));
+    
+    emit testTextSignal();
+    
+    QCOMPARE( CMPSettingsModel::mMaxUdpPort, 1024 );
+    QCOMPARE( mTestObject->mHighestUDPPortItem->contentWidgetData(QString("text")).toString(), QString("1024") );
 }
 
 // ---------------------------------------------------------------------------
@@ -376,11 +458,40 @@
     connect(this, SIGNAL(testTextSignal()),
         mTestObject, SLOT(proxyPortEditingFinished()));
     
-    QString testString("1234");
+    // proxy port at lowest accepted range.
+    QString testString("1");
+    mTestObject->mProxyPortItem->setContentWidgetData(QString("text"), testString);
+    
+    emit testTextSignal();
+    QCOMPARE( CMPSettingsModel::mProxyPort, testString.toInt() );
+    
+    // proxy port at highest accepted range.
+    testString = "65535";
     mTestObject->mProxyPortItem->setContentWidgetData(QString("text"), testString);
     
     emit testTextSignal();
     QCOMPARE( CMPSettingsModel::mProxyPort, testString.toInt() );
+    
+    // proxy port 0
+    mTestObject->mProxyPortItem->setContentWidgetData(QString("text"), QString("0"));
+    
+    emit testTextSignal();
+    QCOMPARE( CMPSettingsModel::mProxyPort, 1 );
+    QCOMPARE( mTestObject->mProxyPortItem->contentWidgetData(QString("text")).toString(), QString("1") );
+    
+    // proxy port higher than accepted.
+    mTestObject->mProxyPortItem->setContentWidgetData(QString("text"), QString("65536"));
+    
+    emit testTextSignal();
+    QCOMPARE( CMPSettingsModel::mProxyPort, 65535 );
+    QCOMPARE( mTestObject->mProxyPortItem->contentWidgetData(QString("text")).toString(), QString("65535") );
+    
+    // proxy port empty
+    mTestObject->mProxyPortItem->setContentWidgetData(QString("text"), QString(""));
+    
+    emit testTextSignal();
+    QCOMPARE( CMPSettingsModel::mProxyPort, 1 );
+    QCOMPARE( mTestObject->mProxyPortItem->contentWidgetData(QString("text")).toString(), QString("1") );
 }
 
 // ---------------------------------------------------------------------------
@@ -397,34 +508,23 @@
     HbLineEdit* editor = new HbLineEdit();
     mItemHelper->mWidgetReturnValue = editor;
     
-    QIntValidator* val;
-    
     mItemHelper->mModelItemReturnValue = mTestObject->mLowestUDPPortItem;
     HbEditorInterface::mFilter = 0;
     emit testShownSignal(index);
     QVERIFY( HbEditorInterface::mFilter == HbDigitsOnlyFilter::instance() );
-    QCOMPARE( editor->mValidator->mValidators.count(), 1 );
-    val = static_cast<QIntValidator*>(editor->mValidator->mValidators.at(0));
-    QCOMPARE( val->bottom(), 1024 );
-    QCOMPARE( val->top(), 65535 );
+    QCOMPARE( editor->mMaxLength, 5 );
 
     mItemHelper->mModelItemReturnValue = mTestObject->mProxyPortItem;
     HbEditorInterface::mFilter = 0;
     emit testShownSignal(index);
     QVERIFY( HbEditorInterface::mFilter == HbDigitsOnlyFilter::instance() );
-    QCOMPARE( editor->mValidator->mValidators.count(), 1 );
-    val = static_cast<QIntValidator*>(editor->mValidator->mValidators.at(0));
-    QCOMPARE( val->bottom(), 1 );
-    QCOMPARE( val->top(), 65535 );
+    QCOMPARE( editor->mMaxLength, 5 );
     
     mItemHelper->mModelItemReturnValue = mTestObject->mHighestUDPPortItem;
     HbEditorInterface::mFilter = 0;
     emit testShownSignal(index);
     QVERIFY( HbEditorInterface::mFilter == HbDigitsOnlyFilter::instance() );
-    QCOMPARE( editor->mValidator->mValidators.count(), 1 );
-    val = static_cast<QIntValidator*>(editor->mValidator->mValidators.at(0));
-    QCOMPARE( val->bottom(), 1024 );
-    QCOMPARE( val->top(), 65535 );
+    QCOMPARE( editor->mMaxLength, 5 );
     
     mItemHelper->mModelItemReturnValue = mTestObject->mProxyServerItem;
     HbEditorInterface::mFilter = 0;
--- a/mediasettings/videosettingsplugin/tsrc/testgroup/stub/inc/hblineedit.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/tsrc/testgroup/stub/inc/hblineedit.h	Thu Jun 24 09:49:13 2010 +0300
@@ -34,11 +34,15 @@
     virtual ~HbLineEdit();
 
     void setValidator(HbValidator *validator);
+    
+    void setMaxLength(int max);
 
 public:
     
     HbValidator* mValidator;
     
+    int mMaxLength;
+    
 };
 
 #endif // HBLINEEDIT_H
--- a/mediasettings/videosettingsplugin/tsrc/testgroup/stub/src/hblineedit.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/tsrc/testgroup/stub/src/hblineedit.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -51,3 +51,12 @@
 {
     mValidator = validator;
 }
+
+// ---------------------------------------------------------------------------
+// setValidator
+// ---------------------------------------------------------------------------
+//
+void HbLineEdit::setMaxLength(int max)
+{
+    mMaxLength = max;
+}
--- a/videocollection/inc/videocollectiontrace.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/inc/videocollectiontrace.h	Thu Jun 24 09:49:13 2010 +0300
@@ -90,9 +90,9 @@
 /**
 * Trace prefixes for macros with component name.
 */
-#define _PREFIX_TRACE( a ) TPtrC( (const TText*) L"#FuC# " L##a )
-#define _PREFIX_TRACE_2( a, b ) TPtrC( (const TText*) L"#FuC# " L##a L##b )
-#define _PREFIX_TRACE8( a ) (const char*)( "#FuC# " ##a )
+#define _PREFIX_TRACE( a ) TPtrC( (const TText*) L"#Fu#Co# " L##a )
+#define _PREFIX_TRACE_2( a, b ) TPtrC( (const TText*) L"#Fu#Co# " L##a L##b )
+#define _PREFIX_TRACE8( a ) (const char*)( "#Fu#Co# " a )
 
 /**
 * Prefix error trace
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTest.cfg	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTest.cfg	Thu Jun 24 09:49:13 2010 +0300
@@ -369,12 +369,10 @@
 VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
 waittestclass VCXMV
 
-VCXMV CreateVideoFileNoWait VcxTestVideoMpeg4 DRIVE_1 "video1_DRIVE1.mp4" ANY_SIZE 3
-VCXMV CreateVideoFileNoWait VcxTestVideoMpeg4 DRIVE_2 "video2_DRIVE2.mp4" ANY_SIZE 3
-VCXMV CreateVideoFileNoWait VcxTestVideoMpeg4 DRIVE_1 "video3_DRIVE1.mp4" ANY_SIZE 3
-VCXMV CreateVideoFileNoWait VcxTestVideoMpeg4 DRIVE_2 "video4_DRIVE2.mp4" ANY_SIZE 3
-
-pause PAUSE_SIDELOAD_MINUTE
+VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_1 "video1_DRIVE1.mp4" ANY_SIZE 3
+VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_2 "video2_DRIVE2.mp4" ANY_SIZE 3
+VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_1 "video3_DRIVE1.mp4" ANY_SIZE 3
+VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_2 "video4_DRIVE2.mp4" ANY_SIZE 3
 
 VCXMV CheckMediaCount ANY_DRIVE 12
 VCXMV CheckMediaDetail ANY_DRIVE 0 EVcxTestMapping_KMPXMediaGeneralFlags EVcxMyVideosVideoNew
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg	Thu Jun 24 09:49:13 2010 +0300
@@ -56,7 +56,6 @@
 VCXMV RemoveAllMedia
 delete VCXMV
 
-
 create VCXMyVideosCollectionPluginTest VCXMV
 VCXMV Create
 
@@ -174,6 +173,9 @@
 VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
 waittestclass VCXMV
 
+VCXMV RefreshContents
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+
 VCXMV CheckAlbumCount 1
 
 print OK!
@@ -502,8 +504,13 @@
 VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
 waittestclass VCXMV
 
-VCXMV CloseLevel
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+delete VCXMV
+
+create VCXMyVideosCollectionPluginTest VCXMV
+VCXMV Create
+
+VCXMV OpenCollection VCXCollectionMyVideos
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
 waittestclass VCXMV
 
 VCXMV CheckAlbumCount 5
@@ -938,6 +945,79 @@
 delete VCXMV
 [Endtest]
 
+#------------------------------------------------------------------------------------
+#
+# Add videos to album from collection root level
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Add videos to album from collection root level
+
+callsub Cleanup
+
+// TESTCASE START
+
+create VCXMyVideosCollectionPluginTest VCXMV
+VCXMV Create
+
+VCXMV OpenCollection VCXCollectionMyVideos
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV CreateAlbum Album1
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CreateAlbum Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV OpenLevel EVcxMyVideosAllVideos
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV CreateVideoFile VcxTestVideoMpeg4 DRIVE_1 "video.mp4" ANY_SIZE 3
+VCXMV CheckMediaCount ANY_DRIVE 3
+
+VCXMV CoolDown
+
+VCXMV SetUseCopiedMedias 1
+
+VCXMV CloseLevel
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV AddMediasToAlbum Album2 ANY_DRIVE 0 3
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCommandComplete KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CoolDown
+
+VCXMV CheckMediaDetail ANY_DRIVE Album2 EVcxTestMapping_KVcxMediaMyVideosCategoryItemCount 3
+
+// Check that videos have been added.
+
+VCXMV SetUseCopiedMedias 0
+
+VCXMV OpenLevel Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV CheckMediaCount ANY_DRIVE 3
+
+VCXMV CloseLevel
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV OpenLevel Album1
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV CheckMediaCount ANY_DRIVE 0
+
+print OK!
+delete VCXMV
+[Endtest]
 
 #------------------------------------------------------------------------------------
 #
@@ -977,6 +1057,7 @@
 
 VCXMV AddMediasToAlbum Album1 ANY_DRIVE 0 1
 VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCommandComplete KVCXMYVideosTestMessageCollectionOpened
+allownextresult KERRARGUMENT
 waittestclass VCXMV
 
 // Check that videos have been added.
@@ -2429,7 +2510,7 @@
 waittestclass VCXMV
 
 VCXMV RenameAlbum Album1 Album2
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified
 waittestclass VCXMV
 
 VCXMV CheckAlbumExists Album2
@@ -2471,7 +2552,7 @@
 waittestclass VCXMV
 
 VCXMV RenameAlbum Album1 "EmptyString"
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified
 waittestclass VCXMV
 
 allownextresult KERRNOTFOUND
@@ -2482,39 +2563,6 @@
 delete VCXMV
 [Endtest]
 
-#------------------------------------------------------------------------------------
-#
-# Rename album with long name
-#
-#------------------------------------------------------------------------------------   
-[Test]
-title Rename album with long name
-
-callsub Cleanup
-
-// TESTCASE START
-
-create VCXMyVideosCollectionPluginTest VCXMV
-VCXMV Create
-
-VCXMV OpenCollection VCXCollectionMyVideos
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
-waittestclass VCXMV
-
-VCXMV CreateAlbum Album1
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-VCXMV RenameAlbum Album1 "2KString"
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-VCXMV CheckAlbumExists Album1
-VCXMV CheckAlbumCount 1
-
-print OK!
-delete VCXMV
-[Endtest]
 
 #------------------------------------------------------------------------------------
 #
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestCategories.cfg	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestCategories.cfg	Thu Jun 24 09:49:13 2010 +0300
@@ -53,8 +53,6 @@
 VCXMV RemoveAllMedia
 delete VCXMV
 
-print wait 30sec
-pause 30000
 print cleanup end
 [EndSub]
 
@@ -206,34 +204,6 @@
 
 #------------------------------------------------------------------------------------
 #
-#  Tests opening 'TV Recordings' category when it's empty.
-#
-#------------------------------------------------------------------------------------
-[Test]
-title TV recordings - empty
-create VCXMyVideosCollectionPluginTest VCXMV
-VCXMV Create
-
-VCXMV OpenCollection VCXCollectionMyVideos
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-VCXMV OpenLevel EVcxMyVideosTvRecordings
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
-waittestclass VCXMV
-
-VCXMV CheckMediaCount ANY_DRIVE 0
-
-VCXMV CloseLevel
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-print OK!
-delete VCXMV
-[Endtest]
-
-#------------------------------------------------------------------------------------
-#
 #  Tests opening 'Captured videos' category when it's empty.
 #
 #------------------------------------------------------------------------------------
@@ -433,36 +403,6 @@
 
 #------------------------------------------------------------------------------------
 #
-#  Tests opening 'TV recordings' category when device has videos with different origins.
-#
-#------------------------------------------------------------------------------------
-[Test]
-title TV recordings - all origins
-create VCXMyVideosCollectionPluginTest VCXMV
-VCXMV Create
-VCXMV SetFileCheck 0
-
-VCXMV OpenCollection VCXCollectionMyVideos
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-VCXMV OpenLevel EVcxMyVideosTvRecordings
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
-waittestclass VCXMV
-
-VCXMV CheckMediaCount ANY_DRIVE 1
-VCXMV CheckMediaDetail ANY_DRIVE 0 EVcxTestMapping_KMPXMediaGeneralTitle "OriginRecording"
-
-VCXMV CloseLevel
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-print OK!
-delete VCXMV
-[Endtest]
-
-#------------------------------------------------------------------------------------
-#
 #  Tests opening 'Captured videos' category when device has videos with different origins.
 #
 #------------------------------------------------------------------------------------
@@ -735,32 +675,6 @@
 
 #------------------------------------------------------------------------------------
 #
-#  Tests that category 'TV recorgins' has correct details when there's videos with different origins.
-#
-#------------------------------------------------------------------------------------
-[Test]
-title TV recordings - category details
-create VCXMyVideosCollectionPluginTest VCXMV
-VCXMV Create
-
-VCXMV OpenCollection VCXCollectionMyVideos
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
-waittestclass VCXMV
-
-VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageListComplete
-waittestclass VCXMV
-
-VCXMV CheckMediaDetail ANY_DRIVE EVcxMyVideosTvRecordings EVcxTestMapping_KMPXMediaGeneralTitle "TV recordings"
-VCXMV CheckMediaDetail ANY_DRIVE EVcxMyVideosTvRecordings EVcxTestMapping_KVcxMediaMyVideosCategoryItemCount 2
-VCXMV CheckMediaDetail ANY_DRIVE EVcxMyVideosTvRecordings EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemCount 1
-VCXMV CheckMediaDetail ANY_DRIVE EVcxMyVideosTvRecordings EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemName "OriginRecording"
-
-print OK!
-delete VCXMV
-[Endtest]
-
-#------------------------------------------------------------------------------------
-#
 #  Tests that category 'Captured videos' has correct details when there's videos with different origins.
 #
 #------------------------------------------------------------------------------------
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/VCXMyVideosCollectionPluginTest.pkg	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/VCXMyVideosCollectionPluginTest.pkg	Thu Jun 24 09:49:13 2010 +0300
@@ -17,13 +17,17 @@
 &EN
 
 ; Provide value for uid
-#{"VCXMyVideosCollectionPluginTest"},(0x00000000),1,0,0,TYPE=SA, RU
+#{"VCXMyVideosCollectionPluginTest"},(0x101FB3E3),1,0,0,TYPE=SA, RU
 
 ; Localised Vendor name
 %{"Nokia"}
 
 ; Unique Vendor name
 :"Nokia"
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
 
 ; Logo
 ; None
@@ -53,9 +57,9 @@
 ; The testframework.ini files won't install with sis, only for ATS test runs.
 "../init/TestFramework.ini"                                    -  "C:/TestFramework/TestFramework.ini"
 
-"../Data/MMC/video_3gp.3gp"                                     -  "e:/testing/data/video_3gp.xxx"
-"../Data/MMC/video_wmv.dat"                                     -  "e:/testing/data/video_wmv.xxx"
-"../Data/MMC/video_mpeg4.mp4"                                   -  "e:/testing/data/video_mpeg4.xxx"
+"../Data/MMC/video_3gp.3gp"                                     -  "c:/testing/data/video_3gp.xxx"
+"../Data/MMC/video_wmv.dat"                                     -  "c:/testing/data/video_wmv.xxx"
+"../Data/MMC/video_mpeg4.mp4"                                   -  "c:/testing/data/video_mpeg4.xxx"
 
 ; Embedded SIS
 ; None
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/bld.inf	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group/bld.inf	Thu Jun 24 09:49:13 2010 +0300
@@ -15,14 +15,16 @@
 *
 */
 
+#include <platform_paths.hrh>
+
 PRJ_PLATFORMS
 DEFAULT
 
 PRJ_TESTEXPORTS
-../data/mmc/video_3gp.3gp                /epoc32/winscw/c/testing/data/video_3gp.xxx
-../data/mmc/video_mpeg4.mp4              /epoc32/winscw/c/testing/data/video_mpeg4.xxx
-../data/mmc/video_wmv.dat                /epoc32/winscw/c/testing/data/video_wmv.xxx
 
+../data/mmc/video_3gp.3gp                                       /epoc32/winscw/c/testing/data/video_3gp.xxx
+../data/mmc/video_mpeg4.mp4                                     /epoc32/winscw/c/testing/data/video_mpeg4.xxx
+../data/mmc/video_wmv.dat                                       /epoc32/winscw/c/testing/data/video_wmv.xxx
 ../conf/VCXDrives.inc                                           /epoc32/winscw/c/testframework/VCXDrives.inc
 ../conf/VCXErrors.inc                                           /epoc32/winscw/c/testframework/VCXErrors.inc
 ../conf/vcxmvcollectionplugintest.inc                           /epoc32/winscw/c/testframework/vcxmvcollectionplugintest.inc
@@ -30,6 +32,16 @@
 ../conf/VCXMyVideosCollectionPluginTestCategories.cfg           /epoc32/winscw/c/testframework/VCXMyVideosCollectionPluginTestCategories.cfg
 ../conf/VCXMyVideosCollectionPluginTestAlbums.cfg               /epoc32/winscw/c/testframework/VCXMyVideosCollectionPluginTestAlbums.cfg
 
+../data/mmc/video_3gp.3gp                                       /epoc32/data/z/system/testdata/video_3gp.xxx
+../data/mmc/video_mpeg4.mp4                                     /epoc32/data/z/system/testdata/video_mpeg4.xxx
+../data/mmc/video_wmv.dat                                       /epoc32/data/z/system/testdata/video_wmv.xxx
+../conf/VCXDrives.inc                                           /epoc32/data/z/system/testdata/VCXDrives.inc
+../conf/VCXErrors.inc                                           /epoc32/data/z/system/testdata/VCXErrors.inc
+../conf/vcxmvcollectionplugintest.inc                           /epoc32/data/z/system/testdata/vcxmvcollectionplugintest.inc
+../conf/VCXMyVideosCollectionPluginTest.cfg                     /epoc32/data/z/system/testdata/VCXMyVideosCollectionPluginTest.cfg
+../conf/VCXMyVideosCollectionPluginTestCategories.cfg           /epoc32/data/z/system/testdata/VCXMyVideosCollectionPluginTestCategories.cfg
+../conf/VCXMyVideosCollectionPluginTestAlbums.cfg               /epoc32/data/z/system/testdata/VCXMyVideosCollectionPluginTestAlbums.cfg
+
 PRJ_EXPORTS
 
 PRJ_TESTMMPFILES
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosTestUtils.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosTestUtils.h	Thu Jun 24 09:49:13 2010 +0300
@@ -83,7 +83,7 @@
         /*
          * Creates a video file to the system.
          */
-        void CreateVideoFileL( TVcxTestVideoType aVideoType, TDesC& aFileName, TInt aSize );
+        void CreateVideoFileL( TVcxTestVideoType aVideoType, TDesC& aFileName, TInt aSize, TBool aUniqueName = false );
 
         /*
          * Creates video files to the system.
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -2970,7 +2970,48 @@
     TInt err( KErrNone );
 
     iLastReceivedMessage = -1;
-
+    
+    if(aDoSync)
+    {
+        // Disable automatic refresh.
+        iTester->SetAutomaticRefresh( EFalse );
+    }
+    
+    RArray<TInt> messages;
+    
+    for(int i =  0; i < aVideoCount; i++)
+    {
+        // Create the video.
+        TRAP( err, iTestUtils->CreateVideoFileL( aType, *path, aSize, ETrue ) );
+        if(err != KErrNone)
+            {
+            VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: CreateVideoFileL returned error: %d:", err);
+            }
+
+        if( aDoSync && iTester->GetCurrentLevel() == 3 )
+            {
+            // Wait for insertion event.
+            messages.Append( KVCXMYVideosTestMessageMpxVideoInserted );
+            WaitForMessagesL( ETrue, messages, 60, ETrue );
+            messages.Reset();
+            }
+    }
+
+    if( aDoSync )
+    {
+        // Refresh.
+        messages.Reset();
+        iTester->RefreshContentsL();
+        messages.Append( KVCXMYVideosTestMessageCollectionOpened );
+        CleanupClosePushL( messages );
+        WaitForMessagesL( ETrue, messages, 30, ETrue );
+        CleanupStack::PopAndDestroy( &messages );
+        iTester->SetAutomaticRefresh( ETrue );
+    }
+
+    CleanupStack::PopAndDestroy( path );
+    
+#if 0
     if( aVideoCount == 1 )
         {
         // Save the path for later use.
@@ -3035,6 +3076,7 @@
                 }
             }
         }
+#endif
     }
 
 // -----------------------------------------------------------------------------
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -1644,6 +1644,7 @@
                         delete iCollectionEntries;
                         iCollectionEntries = NULL;
                         iCollectionEntries = CMPXMedia::NewL( *aMessage );
+                        iCollectionMediaArray = iCollectionEntries->Value<CMPXMediaArray>( KMPXMediaArrayContents );
 
                         UpdateOwnedMediaArrayL();
 
@@ -2822,7 +2823,7 @@
     
     for( TInt i = 0; i < iAlbumIds.Count(); i++ )
         {
-        // TODO: removing photos albums causes fails in opening albums.  
+        // don't remove photos albums
         if( iAlbumIds[i].iId1 > 2 )
             {
             album = CMPXMedia::NewL();
@@ -3027,7 +3028,7 @@
                         break;
                         }
                     indexOfMediaWithDrive++;
-                    }            
+                    }
                 }
             }
         }
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosTestUtils.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosTestUtils.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -97,115 +97,138 @@
 
 
 // -----------------------------------------------------------------------------
-// CVCXMyVideosTestUtils::CreateVideoFilesL
+// CVCXMyVideosTestUtils::CreateVideoFileL
 // -----------------------------------------------------------------------------
 //
-void CVCXMyVideosTestUtils::CreateVideoFileL( TVcxTestVideoType aVideoType, TDesC& aFileName, TInt aSize )
+void CVCXMyVideosTestUtils::CreateVideoFileL( TVcxTestVideoType aVideoType, TDesC& aFileName, TInt aSize, TBool aUniqueName )
     {
     VCXLOGLO1(">>>CVcxTestVideoCreator::CreateVideoL");
 
-        // Resolve source filename
-        TBuf<256> srcFileName;
+    // Resolve source filename
+    TBuf<256> srcFileName;
 
-        GetVideoFile( srcFileName, aVideoType, _L("C") );
+    GetVideoFile( srcFileName, aVideoType, _L("C") );
+    if( !BaflUtils::FileExists(iFs, srcFileName) )
+        {
+        VCXLOGLO2("CVcxTestVideoCreator:: %S does not exist.", &srcFileName);
+        GetVideoFile( srcFileName, aVideoType, _L("E") );
         if( !BaflUtils::FileExists(iFs, srcFileName) )
             {
             VCXLOGLO2("CVcxTestVideoCreator:: %S does not exist.", &srcFileName);
-            GetVideoFile( srcFileName, aVideoType, _L("E") );
-            if( !BaflUtils::FileExists(iFs, srcFileName) )
-                {
-                VCXLOGLO2("CVcxTestVideoCreator:: %S does not exist.", &srcFileName);
-                VCXLOGLO2("CVcxTestVideoCreator:: test video file %S missing! PANIC.", &srcFileName);
-                User::Panic(_L("Video files missing!"), KErrNotFound);
-                }
+            VCXLOGLO2("CVcxTestVideoCreator:: test video file %S missing! PANIC.", &srcFileName);
+            User::Panic(_L("Video files missing!"), KErrNotFound);
             }
-        
-        BaflUtils::EnsurePathExistsL( iFs, aFileName.Left( aFileName.LocateReverse('\\') ) );
+        }
+    
+    BaflUtils::EnsurePathExistsL( iFs, aFileName.Left( aFileName.LocateReverse('\\') ) );
 
+    HBufC* newFileName = HBufC::NewL( 256 );
+    CleanupStack::PushL( newFileName );
+    
+    if(!aUniqueName)
+    {
+        newFileName->Des().Copy( aFileName );
         BaflUtils::DeleteFile( iFs, aFileName );
-        
-        VCXLOGLO2("CVcxTestVideoCreator:: aSize = %d", aSize);
-        
-        TInt64 wantedSize( 0 );
-        
-        // Check the size
-        if( aSize == KVcxTestLargeFile3GB ) {
-            wantedSize = 1024*1024*1024 * 3;
+    }
+    else
+    {
+        newFileName->Des().Copy( aFileName );
+        TInt dotPos = aFileName.LocateReverse('.');
+        int count = 0;
+        while( BaflUtils::FileExists( iFs, *newFileName ) )
+        {
+            newFileName->Des().Copy( aFileName.Left( aFileName.LocateReverse('\\') ) );
+            newFileName->Des().Copy( aFileName.Left( dotPos ) );
+            newFileName->Des().Append( _L("_") );
+            newFileName->Des().AppendNum( count++ );
+            newFileName->Des().Append( aFileName.Right( aFileName.Length() - dotPos ) );
         }
-        else {
-            wantedSize = aSize;
-        }
-        
-        //wantedSize = wantedSize == 0 ? wantedSize -1 : wantedSize;
-        
-        VCXLOGLO2("CVcxTestVideoCreator:: Wanted file size: %Ld", wantedSize);
+    }
+    
+    VCXLOGLO2("CVcxTestVideoCreator:: aSize = %d", aSize);
+    
+    TInt64 wantedSize( 0 );
+    
+    // Check the size
+    if( aSize == KVcxTestLargeFile3GB ) {
+        wantedSize = 1024*1024*1024 * 3;
+    }
+    else {
+        wantedSize = aSize;
+    }
+    
+    //wantedSize = wantedSize == 0 ? wantedSize -1 : wantedSize;
+    
+    VCXLOGLO2("CVcxTestVideoCreator:: Wanted file size: %Ld", wantedSize);
 
-        // Read source file into memory, won't work on huge files.
-        RFile64 srcFile;
-        VCXLOGLO2("CVcxTestVideoCreator:: Opening %S", &srcFileName);
-        User::LeaveIfError( srcFile.Open( iFs, srcFileName, EFileRead ) );
-        CleanupClosePushL( srcFile );
+    // Read source file into memory, won't work on huge files.
+    RFile64 srcFile;
+    VCXLOGLO2("CVcxTestVideoCreator:: Opening %S", &srcFileName);
+    User::LeaveIfError( srcFile.Open( iFs, srcFileName, EFileRead ) );
+    CleanupClosePushL( srcFile );
+
+    TInt64 srcSize(0);
+    VCXLOGLO2("CVcxTestVideoCreator:: Getting size of %S", &srcFileName);
+    User::LeaveIfError( srcFile.Size( srcSize ) );
 
-        TInt64 srcSize(0);
-        VCXLOGLO2("CVcxTestVideoCreator:: Getting size of %S", &srcFileName);
-        User::LeaveIfError( srcFile.Size( srcSize ) );
+    HBufC8* data = HBufC8::NewL( srcSize );
+    TPtr8 ptr( data->Des() );
+    srcFile.Read( ptr, srcSize );
+    CleanupStack::PopAndDestroy( &srcFile );
 
-        HBufC8* data = HBufC8::NewL( srcSize );
-        TPtr8 ptr( data->Des() );
-        srcFile.Read( ptr, srcSize );
-        CleanupStack::PopAndDestroy( &srcFile );
+    CleanupStack::PushL( data );
+
+    // Write new file.
+    RFile64 dstFile;
+    VCXLOGLO1("CVcxTestVideoCreator:: Replace");
+    User::LeaveIfError( dstFile.Replace( iFs, *newFileName, EFileWrite ) );
+    CleanupClosePushL(dstFile);
 
-        CleanupStack::PushL( data );
+    if( wantedSize <= srcSize )
+        {
+        if( wantedSize == -1 )
+            {
+            VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", srcSize);
+            User::LeaveIfError( dstFile.Write( *data, srcSize ) );
+            }
+        else
+            {
+            VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", wantedSize);
+            User::LeaveIfError( dstFile.Write( *data, wantedSize ) );
+            }
+        }
+    else
+        {
+        VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", srcSize);
+        User::LeaveIfError( dstFile.Write( *data, srcSize ) );
 
-        // Write new file.
-        RFile64 dstFile;
-        VCXLOGLO1("CVcxTestVideoCreator:: Replace");
-        User::LeaveIfError( dstFile.Replace( iFs, aFileName, EFileWrite ) );
-        CleanupClosePushL(dstFile);
-
-        if( wantedSize <= srcSize )
+        const TInt KVcxTest200Kilos = 1024*200;
+        HBufC8* buff = HBufC8::NewL( KVcxTest200Kilos );
+        buff->Des().SetLength( KVcxTest200Kilos );
+        CleanupStack::PushL( buff );
+        TInt64 bytesToWrite = wantedSize - srcSize;
+        while( bytesToWrite > 0 )
             {
-            if( wantedSize == -1 )
+            if( bytesToWrite >= KVcxTest200Kilos )
                 {
-                VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", srcSize);
-                User::LeaveIfError( dstFile.Write( *data, srcSize ) );
+                bytesToWrite -= KVcxTest200Kilos;
+                User::LeaveIfError( dstFile.Write( *buff ) );
                 }
             else
                 {
-                VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", wantedSize);
-                User::LeaveIfError( dstFile.Write( *data, wantedSize ) );
+                User::LeaveIfError( dstFile.Write( *buff, bytesToWrite ) );
+                bytesToWrite = 0;
                 }
             }
-        else
-            {
-            VCXLOGLO2("CVcxTestVideoCreator:: Writing %Ld", srcSize);
-            User::LeaveIfError( dstFile.Write( *data, srcSize ) );
+        CleanupStack::PopAndDestroy( buff );
+        }
 
-            const TInt KVcxTest200Kilos = 1024*200;
-            HBufC8* buff = HBufC8::NewL( KVcxTest200Kilos );
-            buff->Des().SetLength( KVcxTest200Kilos );
-            CleanupStack::PushL( buff );
-            TInt64 bytesToWrite = wantedSize - srcSize;
-            while( bytesToWrite > 0 )
-                {
-                if( bytesToWrite >= KVcxTest200Kilos )
-                    {
-                    bytesToWrite -= KVcxTest200Kilos;
-                    User::LeaveIfError( dstFile.Write( *buff ) );
-                    }
-                else
-                    {
-                    User::LeaveIfError( dstFile.Write( *buff, bytesToWrite ) );
-                    bytesToWrite = 0;
-                    }
-                }
-            CleanupStack::PopAndDestroy( buff );
-            }
+    CleanupStack::PopAndDestroy( &dstFile );
+    CleanupStack::PopAndDestroy( data );
+    
+    CleanupStack::PopAndDestroy( newFileName );
 
-        CleanupStack::PopAndDestroy( &dstFile );
-        CleanupStack::PopAndDestroy( data );
-
-        VCXLOGLO1("<<<CVcxTestVideoCreator::CreateVideoL");
+    VCXLOGLO1("<<<CVcxTestVideoCreator::CreateVideoL");
     }
 
 
--- a/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h	Thu Jun 24 09:49:13 2010 +0300
@@ -37,7 +37,9 @@
         mIconString = "";
         mPressedString = "";
         mLastStatusAdditional = QVariant();
-        mWidgetLevel = VideoCollectionCommon::ELevelInvalid;
+        mWidgetLevel = VideoCollectionCommon::ELevelVideos;
+        mActivityCollectionId = TMPXItemId::InvalidId();
+        mActivityCollectionName = "";
     }   
     
 public: // data
@@ -52,6 +54,8 @@
     static QString mPressedString;
     static QVariant mLastStatusAdditional;
     static VideoCollectionCommon::TCollectionLevels mWidgetLevel;
+    static TMPXItemId mActivityCollectionId;
+    static QString mActivityCollectionName;
 };
 
 #endif /* VIDEOCOLLECTIONVIEWUTILSDATA_H */
--- a/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -144,7 +144,17 @@
         }
         VideoListWidget *videoList = qobject_cast<VideoListWidget*>(object);
         VideoSortFilterProxyModel *model = wrapper.getModel(type);
-        videoList->initialize(*model, 0);
+        
+        VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelInvalid;
+        if(name == DOCML_NAME_VC_VIDEOLISTWIDGET )
+        {
+            level = VideoCollectionCommon::ELevelVideos;
+        }
+        else if(name == DOCML_NAME_VC_COLLECTIONWIDGET)
+        {
+            level = VideoCollectionCommon::ELevelCategory;
+        }
+        videoList->initialize(*model, 0, level);
     }
     else if (name == DOCML_NAME_DIALOG)
     {
--- a/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -28,7 +28,9 @@
 QString VideoCollectionViewUtilsData::mIconString = "";
 QString VideoCollectionViewUtilsData::mPressedString = "";
 QVariant VideoCollectionViewUtilsData::mLastStatusAdditional = QVariant();
-VideoCollectionCommon::TCollectionLevels VideoCollectionViewUtilsData::mWidgetLevel = VideoCollectionCommon::ELevelInvalid;
+VideoCollectionCommon::TCollectionLevels VideoCollectionViewUtilsData::mWidgetLevel = VideoCollectionCommon::ELevelVideos;
+TMPXItemId VideoCollectionViewUtilsData::mActivityCollectionId = TMPXItemId::InvalidId();
+QString VideoCollectionViewUtilsData::mActivityCollectionName = "";
 
 VideoCollectionViewUtils& VideoCollectionViewUtils::instance()
 {
@@ -125,16 +127,28 @@
     // not stubbed
 }
 
-void VideoCollectionViewUtils::saveWidgetLevel(VideoCollectionCommon::TCollectionLevels &level)
+void VideoCollectionViewUtils::setWidgetActivityLevel(const VideoCollectionCommon::TCollectionLevels &level)
 {
-    Q_UNUSED(level);
-    // not stubbed
+    VideoCollectionViewUtilsData::mWidgetLevel = level;
 }
   
-VideoCollectionCommon::TCollectionLevels VideoCollectionViewUtils::loadWidgetLevel()
+void VideoCollectionViewUtils::getActivityWidgetLevel(VideoCollectionCommon::TCollectionLevels &level)
+{
+    level = VideoCollectionViewUtilsData::mWidgetLevel;
+}
+
+void VideoCollectionViewUtils::setCollectionActivityData(const TMPXItemId &id, const QString &name)
 {
-    return VideoCollectionViewUtilsData::mWidgetLevel;
+    VideoCollectionViewUtilsData::mActivityCollectionId = id;
+    VideoCollectionViewUtilsData::mActivityCollectionName = name;
 }
+    
+void VideoCollectionViewUtils::getCollectionActivityData(TMPXItemId &id, QString &name)
+{
+    id = VideoCollectionViewUtilsData::mActivityCollectionId;
+    name = VideoCollectionViewUtilsData::mActivityCollectionName;
+}
+
 
 void VideoCollectionViewUtils::sortModel(VideoSortFilterProxyModel *model,
     bool async, VideoCollectionCommon::TCollectionLevels target)
--- a/videocollection/tsrc/stubs/src/videolistview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -32,7 +32,6 @@
 mUiUtils(VideoCollectionViewUtils::instance()),
 mWrapper(VideoCollectionWrapper::instance()),
 mUiLoader(uiLoader),
-mIsService(false),
 mModelReady(false),
 mVideoServices(0),
 mCurrentList(0),
@@ -61,7 +60,7 @@
     // not stubbed
 }
 
-int VideoListView::activateView(const TMPXItemId &itemId)
+int VideoListView::activateView(TMPXItemId &itemId)
 {
     Q_UNUSED(itemId);
     
@@ -206,11 +205,11 @@
 
 void VideoListView::collectionOpenedSlot(bool collectionOpened,
     const QString& collection,
-    const QModelIndex &index)
+    const TMPXItemId &id)
 {
     Q_UNUSED(collectionOpened);
     Q_UNUSED(collection);
-    Q_UNUSED(index);
+    Q_UNUSED(id);
     // not stubbed
 }
 
--- a/videocollection/tsrc/stubs/src/videolistwidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistwidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -33,7 +33,6 @@
     mVideoServices(0),
     mCurrentLevel(VideoCollectionCommon::ELevelInvalid),
     mSignalsConnected(false),
-    mIsService(false),
     mNavKeyAction(0),
     mContextMenu(0),
     mSelectionMode(HbAbstractItemView::NoSelection),
@@ -49,9 +48,9 @@
 }
 
 int VideoListWidget::initialize(VideoSortFilterProxyModel &model,
-    VideoServices *videoServices, VideoCollectionCommon::TCollectionLevels level)
+    bool isService, VideoCollectionCommon::TCollectionLevels level)
 {
-    Q_UNUSED(videoServices);
+    Q_UNUSED(isService);
 
     VideoListWidgetData::mInitializeCount++;
     mModel = &model;
@@ -178,6 +177,11 @@
     // not stubbed
 }
 
+void VideoListWidget::endVideoFecthingSlot()
+{
+    // not stubbed
+}
+
 void VideoListWidget::scrollingStartedSlot()
 {
     // not stubbed
--- a/videocollection/tsrc/videoservicestestapp/src/videoservicestestappview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/tsrc/videoservicestestapp/src/videoservicestestappview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -214,6 +214,9 @@
         mErrorEdit->setText("Failed to send REQ");
         qDebug() <<  "VideoServicesTestAppView::fetchVideo: XQAiwRequest::send returned false";
     }
+    // req no longer needed, remove it
+    delete mReq;
+    mReq = 0;
 
     qDebug() <<  "VideoServicesTestAppView::fetchVideo END";
 }
@@ -285,6 +288,9 @@
             mErrorEdit->setText("Failed to send REQ");
             qDebug() <<  "VideoServicesTestAppView::browseCapturedVideosFinished: XQAiwRequest::send returned false";
         }
+        // req no longer needed, remove it
+        delete mReq;
+        mReq = 0;
     }
 }
 
@@ -324,6 +330,9 @@
         mErrorEdit->setText("Failed to send REQ");
         qDebug() <<  "VideoServicesTestAppView::fetchVideo: XQAiwRequest::send returned false";
     }
+    // req no longer needed, remove it
+    delete mReq;
+    mReq = 0;
 
     qDebug() <<  "VideoServicesTestAppView::fetchVideo END";
 }
@@ -364,7 +373,9 @@
         mErrorEdit->setText("Failed to send REQ");
         qDebug() <<  "VideoServicesTestAppView::fetchVideo: XQAiwRequest::send returned false";
     }
-
+    // req no longer needed, remove it
+    delete mReq;
+    mReq = 0;
     qDebug() <<  "VideoServicesTestAppView::fetchVideo END";
 }
 
@@ -432,6 +443,9 @@
             mErrorEdit->setText("Failed to send REQ");
             qDebug() <<  "VideoServicesTestAppView::browseCapturedVideosFinished: XQAiwRequest::send returned false";
         }
+        // req no longer needed, remove it
+        delete mReq;
+        mReq = 0;
     }
 }
 
@@ -498,6 +512,9 @@
             mErrorEdit->setText("Failed to send REQ");
             qDebug() <<  "VideoServicesTestAppView::browseCapturedVideosFinished: XQAiwRequest::send returned false";
         }
+        // req no longer needed, remove it
+        delete mReq;
+        mReq = 0;
     }
 }
 
Binary file videocollection/videocollectionview/conf/CI_videoplayerservicelist.confml has changed
Binary file videocollection/videocollectionview/conf/videolistview.confml has changed
Binary file videocollection/videocollectionview/conf/videolistview_2002BC63.crml has changed
Binary file videocollection/videocollectionview/conf/videoplayerservicelist.confml has changed
--- a/videocollection/videocollectionview/data/videolistselectiondialog.docml	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/data/videolistselectiondialog.docml	Thu Jun 24 09:49:13 2010 +0300
@@ -57,7 +57,7 @@
         </widget>
         <widget name="mListContainer" role="HbDialog:contentWidget" type="HbStackedWidget"/>
         <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
-        <sizehint height="95.22388un" type="PREFERRED" width="53.58209un"/>
+        <sizehint height="var(hb-param-screen-height)" type="PREFERRED" width="var(hb-param-screen-width)"/>
     </widget>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/inc/videocollectioncenrepdefs.h	Thu Jun 24 09:49:13 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* 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 _VIDEOCOLLETIONCENREP_H_
+#define _VIDEOCOLLETIONCENREP_H_
+
+// Cenrep constants.
+const int KVideoCollectionViewCenrepUid(0x2002BC63);
+const int KVideoCollectionViewCenrepVideoSortingRoleKey(0x1);
+const int KVideoCollectionViewCenrepVideoSortingOrderKey(0x2);
+const int KVideoCollectionViewCenrepCollectionsSortingRoleKey(0x3);
+const int KVideoCollectionViewCenrepCollectionsSortingOrderKey(0x4);
+
+const int KVideoCollectionViewCenrepServiceItem1Title(0x20);
+const int KVideoCollectionViewCenrepServiceItem1Text(0x21);
+const int KVideoCollectionViewCenrepServiceItem1IconPath(0x22);
+const int KVideoCollectionViewCenrepServiceItem1PressedIconPath(0x23);
+const int KVideoCollectionViewCenrepServiceItem1ToolbarIconPath(0x24);
+const int KVideoCollectionViewCenrepServiceItem1Url(0x25);
+const int KVideoCollectionViewCenrepServiceItem1Uid(0x26);
+
+const int KVideoCollectionViewCenrepServiceItem2Title(0x27);
+const int KVideoCollectionViewCenrepServiceItem2Text(0x28);
+const int KVideoCollectionViewCenrepServiceItem2ToolbarIconPath(0x29);
+const int KVideoCollectionViewCenrepServiceItem2Url(0x2A);
+const int KVideoCollectionViewCenrepServiceItem2Uid(0x2B);
+
+const int KVideoCollectionViewCenrepServiceItem3Title(0x2C);
+const int KVideoCollectionViewCenrepServiceItem3Text(0x2D);
+const int KVideoCollectionViewCenrepServiceItem3ToolbarIconPath(0x2E);
+const int KVideoCollectionViewCenrepServiceItem3Url(0x2F);
+const int KVideoCollectionViewCenrepServiceItem3Uid(0x30);
+
+const int KVideoCollectionViewCenrepServiceItem4Title(0x31);
+const int KVideoCollectionViewCenrepServiceItem4Text(0x32);
+const int KVideoCollectionViewCenrepServiceItem4ToolbarIconPath(0x33);
+const int KVideoCollectionViewCenrepServiceItem4Url(0x34);
+const int KVideoCollectionViewCenrepServiceItem4Uid(0x35);
+
+const int KVideoCollectionViewCenrepServiceItem5Title(0x36);
+const int KVideoCollectionViewCenrepServiceItem5Text(0x37);
+const int KVideoCollectionViewCenrepServiceItem5ToolbarIconPath(0x38);
+const int KVideoCollectionViewCenrepServiceItem5Url(0x39);
+const int KVideoCollectionViewCenrepServiceItem5Uid(0x3A);
+
+const int KVideoCollectionViewCenrepServiceItem6Title(0x3B);
+const int KVideoCollectionViewCenrepServiceItem6Text(0x3C);
+const int KVideoCollectionViewCenrepServiceItem6ToolbarIconPath(0x3D);
+const int KVideoCollectionViewCenrepServiceItem6Url(0x3E);
+const int KVideoCollectionViewCenrepServiceItem6Uid(0x3F);
+
+#endif // _VIDEOCOLLETIONCENREP_H_
--- a/videocollection/videocollectionview/inc/videocollectionviewplugin.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/inc/videocollectionviewplugin.h	Thu Jun 24 09:49:13 2010 +0300
@@ -22,6 +22,7 @@
 
 class VideoCollectionUiLoader;
 class VideoListView;
+class VideoServices;
 
 class VideoCollectionViewPlugin: public MpxViewPlugin
 {
@@ -142,10 +143,10 @@
     bool mActivated;
     
 	/*
-	 * Service mode flag. True if started as a service, otherwise false.
+	 * Video service object.
 	 *
 	 */
-    bool mIsService;
+    VideoServices *mVideoServices;
 };
 
 #endif  // VIDEOVIEWPLUGIN_H
--- a/videocollection/videocollectionview/inc/videocollectionviewutils.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/inc/videocollectionviewutils.h	Thu Jun 24 09:49:13 2010 +0300
@@ -85,19 +85,39 @@
     static void sortModel(VideoSortFilterProxyModel *model, bool async, VideoCollectionCommon::TCollectionLevels target);
     
     /**
-     * Method saves the latest videolist widget level into activity manager db
+     * Method saves the latest videolist widget level into local activity manager 
+     * data container.
+     * 
+     * Note that collection id will be cleared in activity data in case level is
+     * all videos or collection list. 
      * 
-     * @param level type of widget 
+     * @param level collection level
      */
-    static void saveWidgetLevel(VideoCollectionCommon::TCollectionLevels &level);
+    static void setWidgetActivityLevel(const VideoCollectionCommon::TCollectionLevels &level);
+   
+    /**
+     * Method gets the latest videolist widget level from local activity manager 
+     * data container.
+     * 
+     * @param level, reference to level variable where value is saved
+     */
+    static void getActivityWidgetLevel(VideoCollectionCommon::TCollectionLevels &level);
     
     /**
-     * Method loads the latest videolist widget level from activity manager db.
-     * Possible values are ELevelCategory or ELevelVideos
+     * method saves provided id and string into local activity
+     * manager data container.
      * 
-     * @return VideoCollectionCommon::TCollectionLevels
+     * @param id. Id to save
      */
-    static VideoCollectionCommon::TCollectionLevels loadWidgetLevel();
+    static void setCollectionActivityData(const TMPXItemId &id, const QString &name);
+    
+    /**
+     * method reads id and string from from local activity manager data 
+     * container and prepares MPX item id.
+     * 
+     * @param id. Id to return
+     */
+    static void getCollectionActivityData(TMPXItemId &id, QString &name);
 
 public slots:
     
--- a/videocollection/videocollectionview/inc/videohintwidget.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/inc/videohintwidget.h	Thu Jun 24 09:49:13 2010 +0300
@@ -123,12 +123,7 @@
      * Service icon.
      */
     HbIcon                      *mServiceIcon;
-    
-    /**
-     * Add videos icon.
-     */
-    HbIcon                       *mAddVideosIcon;
-    
+
     /**
      * Current hint level.
      */
--- a/videocollection/videocollectionview/inc/videolistview.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/inc/videolistview.h	Thu Jun 24 09:49:13 2010 +0300
@@ -81,7 +81,7 @@
      * @param itemId, Id of the widget which is to be activated
      * @return 0 activation ok, < 0 if activation fails
      */
-    int activateView(const TMPXItemId &itemId);
+    int activateView(TMPXItemId &itemId);
 
     /**
      * Deactivates current widget, disables menu and disconnects
@@ -250,12 +250,12 @@
     /**
      * Slot is connected to videolistwidgets collectionOpened -signal
      *
-     * @param collectionOpened
+     * @param openingCollection
      * @param collection contains the name of the collection opened
      */
-    void collectionOpenedSlot(bool collectionOpened,
+    void collectionOpenedSlot(bool openingCollection,
         const QString& collection,
-        const QModelIndex &index);
+        const TMPXItemId &collectionId);
         
     /**
      * Slot which is called when an object has been loaded.
@@ -320,12 +320,19 @@
     void showAction(bool show, const QString &name);
     
     /**
-     * Activate to all videos view. 
+     * Activates all videos or collections -list.
+     * 
+     * @return int 0 ok 
      */
-    int activateVideosView();
+    int activateMainView();
     
     /**
-     * Activate to collection content view.
+     * Activate to collection content view when servicing.
+     * Only default collections are supported. If some other
+     * id is provided, all videos  -list will be activated 
+     * 
+     * @param itemId. Id of collection to activate
+     * @return int 
      */
     int activateCollectionContentView(const TMPXItemId &itemId);
     
@@ -359,11 +366,6 @@
     VideoCollectionUiLoader* mUiLoader;
     
     /**
-     * Boolean for knowing when the app was started as a service.
-     */
-    bool mIsService;
-    
-    /**
      * Boolean for knowing when the model is ready.
      */
     bool mModelReady;
@@ -380,6 +382,7 @@
 
     /**
      * pointer to videoservices instance
+     * if exists, app has started as service
      */
     VideoServices* mVideoServices;
 
--- a/videocollection/videocollectionview/inc/videolistwidget.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/inc/videolistwidget.h	Thu Jun 24 09:49:13 2010 +0300
@@ -69,12 +69,12 @@
      * layout and activates correct view based on the current orientation
      * 
      * @param model Model for this list view.
-     * @param videoservices
+     * @param isService, flag indicating app service status
      * @param level presetted level for the widget
      * @return int 0 initialization ok, < 0 if fails.
      */
     int initialize(VideoSortFilterProxyModel &model, 
-                   VideoServices* videoServices  = 0,
+                   bool isService  = false,
                    VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelInvalid);
 
     /**
@@ -148,7 +148,7 @@
      * @param true if opened, false if closed.
      * @param optional name string
      */
-    void collectionOpened(bool, const QString&, const QModelIndex&);
+    void collectionOpened(bool, const QString&, const TMPXItemId&);
 
     /**
      * signal is connected to service's itemSelected -slot
@@ -243,6 +243,12 @@
      *
      */
     void back();
+    
+    /**
+     * connected to navi -quit action triggered signal.
+     * Signals fileUri with empty path for servicing to be completed
+     */
+    void endVideoFecthingSlot();
 	
 	/**
 	 * Signaled when view scrolling starts, pauses thumbnail creation.
@@ -278,7 +284,7 @@
      *
      */
     void fetchThumbnailsForVisibleItems();
-    
+
 private:
 
     enum TContextActionIds
@@ -307,9 +313,9 @@
     void setContextMenu();
     
     /**
-     * Method sets correct popup menu during browsing service.
+     * Method sets correct popup menu for service.
      */
-    void setBrowsingServiceContextMenu();
+    void setServiceContextMenu();
 
     /**
      * Method connects signals needed by the widget
@@ -325,11 +331,6 @@
     void disConnectSignals();
     
     /**
-     * Return if this is a browsing service.
-     */
-    bool isBrowsingService() const;
-    
-    /**
      * Set navigation action.
      */
     void setNavigationAction();
@@ -359,7 +360,8 @@
     QPointer<VideoSortFilterProxyModel> mModel;
 
     /**
-     * pointer to videoservices instance
+     * pointer to videoservices instance. If exists, 
+     * app has started as service.
      */
     VideoServices* mVideoServices;
 
@@ -379,11 +381,6 @@
      */
 	bool                       mSignalsConnected;
 	
-    /**
-     * Boolean for knowing when the app was started as a service.
-     */
-	bool                       mIsService;
-
 	/**
      * Navigation softkey action.
      */
--- a/videocollection/videocollectionview/src/videocollectionuiloader.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionuiloader.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 22 %
+// Version : %version: 24 %
 
 // INCLUDE FILES
 #include <qgraphicswidget.h>
@@ -34,7 +34,6 @@
 #include "videocollectionwrapper.h"
 #include "videosortfilterproxymodel.h"
 #include "videocollectionviewutils.h"
-#include "videoservices.h"
 #include "videocollectiontrace.h"
 
 // ---------------------------------------------------------------------------
@@ -376,12 +375,7 @@
                 	VideoCollectionViewUtils::sortModel(model, true, VideoCollectionCommon::ELevelVideos);
                 	
                     // init widget
-                    VideoServices *videoServices = 0;
-                    if (mIsService)
-                    {
-                        videoServices = VideoServices::instance();
-                    }
-                    videoList->initialize(*model, videoServices, VideoCollectionCommon::ELevelVideos);
+                    videoList->initialize(*model, mIsService, VideoCollectionCommon::ELevelVideos);
                 }
             }
         }
@@ -399,12 +393,7 @@
                 if (videoList)
                 {
                     // init widget
-                    VideoServices *videoServices = 0;
-                    if (mIsService)
-                    {
-                        videoServices = VideoServices::instance();
-                    }
-                    videoList->initialize(*model, videoServices, VideoCollectionCommon::ELevelCategory);
+                    videoList->initialize(*model, mIsService, VideoCollectionCommon::ELevelCategory);
                 }
             }
         }
@@ -422,13 +411,8 @@
                 if (videoList)
                 {
                     // init widget
-                    VideoServices *videoServices = 0;
-                    if (mIsService)
-                    {
-                        videoServices = VideoServices::instance();
-                    }
                     // cannot set level at this point yet: it can be either default or user defined collection
-                    videoList->initialize(*model, videoServices);
+                    videoList->initialize(*model, mIsService);
                 }
             }
         }
--- a/videocollection/videocollectionview/src/videocollectionviewplugin.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionviewplugin.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 23 %
+// Version : %version: 24 %
 
 // INCLUDE FILES
 #include <xqplugin.h>
@@ -41,7 +41,7 @@
     : mUiLoader( 0 )
     , mView( 0 )
     , mActivated( false )
-    , mIsService( false )
+    , mVideoServices( 0 )
 {
 	FUNC_LOG;
 }
@@ -72,14 +72,8 @@
         }
 
         mUiLoader->reset();
-
-        if (XQServiceUtil::isService())
-        {
-        	INFO("VideoCollectionViewPlugin::createView() service flag set to true.");
-            mIsService = true;
-        }
         
-        mUiLoader->setIsService(mIsService);
+        mUiLoader->setIsService(XQServiceUtil::isService());
 
 		bool ok(false);
 
@@ -145,6 +139,12 @@
     mView = 0;
     delete mUiLoader;
     mUiLoader = 0;
+    
+    if(mVideoServices)
+    {
+        mVideoServices->decreaseReferenceCount();
+        mVideoServices = 0;
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -163,17 +163,18 @@
             bool isService = XQServiceUtil::isService();
             if (isService)
             {
-                VideoServices *videoServices = VideoServices::instance();
-                if (videoServices)
+                if(!mVideoServices)
                 {
-                    VideoServices::TVideoService serviceType =
-                        videoServices->currentService();
-                    if (serviceType == VideoServices::EBrowse)
-                    {
-                        // activate browsing service
-                        itemId.iId1 = videoServices->getBrowseCategory();
-                        itemId.iId2 = KVcxMvcMediaTypeCategory;
-                    }
+                    mVideoServices = VideoServices::instance();
+                }
+
+                VideoServices::TVideoService serviceType =
+                        mVideoServices->currentService();
+                if (serviceType == VideoServices::EBrowse)
+                {
+                    // activate browsing service
+                    itemId.iId1 = mVideoServices->getBrowseCategory();
+                    itemId.iId2 = KVcxMvcMediaTypeCategory;
                 }
             }
             int err = mView->activateView(itemId);
--- a/videocollection/videocollectionview/src/videocollectionviewutils.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionviewutils.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 41 %
+// Version : %version: 43 %
 
 // INCLUDE FILES
 #include <hbglobal.h>
@@ -26,30 +26,33 @@
 #include <hbmessagebox.h>
 #include <hbnotificationdialog.h>
 #include <centralrepository.h>
+#include <vcxmyvideosdefs.h>
 
 #include "videocollectioncommon.h"
 #include "videocollectionviewutils.h"
 #include "videosortfilterproxymodel.h"
 #include "videoactivitystate.h"
+#include "videocollectioncenrepdefs.h"
 #include "videocollectiontrace.h"
 
 // Object names.
 const char* const VIEW_UTILS_OBJECT_NAME_STATUS_MSG          = "vc:ViewUtilsStatusMessage";
 const char* const VIEW_UTILS_OBJECT_NAME_MESSAGE_BOX_WARNING = "vc:ViewUtilsMessageBoxWarning";
 
-// Cenrep constants.
-const int KVideoCollectionViewCenrepUid(0x2002BC63);
-const int KVideoCollectionViewCenrepServiceIconKey(0x2);
-const int KVideoCollectionViewCenrepServiceIconPressedKey(0x3);
-const int KVideoCollectionViewCenrepVideoSortingRoleKey(0x5);
-const int KVideoCollectionViewCenrepVideoSortingOrderKey(0x6);
-const int KVideoCollectionViewCenrepCollectionsSortingRoleKey(0x7);
-const int KVideoCollectionViewCenrepCollectionsSortingOrderKey(0x8);
-
 const int KAddToCollectionDataCount(2);
 const int KAddToCollectionCountIndex(0);
 const int KAddToCollectionNameIndex(1);
 
+// type of collectionview plugin's widget level(int): 
+// all videos, collections or collection video list
+static const QString KEY_WIDGET_LEVEL    = "_VideoActivity_widget_level_";
+
+// id of the collection whose videolist is to be shown (int).
+static const QString KEY_COLLECTION_ID   = "_VideoActivity_collection_id_";
+
+// name of the collection whose videolist is to be shown (QString)
+static const QString KEY_COLLECTION_NAME = "_VideoActivity_collection_name_";
+
 
 // ---------------------------------------------------------------------------
 // instance
@@ -207,10 +210,10 @@
     {
         TBuf<255> iconValue;
         TBuf<255> pressedValue;
-        status = cenRep->Get(KVideoCollectionViewCenrepServiceIconKey, iconValue);
+        status = cenRep->Get(KVideoCollectionViewCenrepServiceItem1IconPath, iconValue);
         if(status == KErrNone)
         {
-            status = cenRep->Get(KVideoCollectionViewCenrepServiceIconPressedKey, pressedValue);
+            status = cenRep->Get(KVideoCollectionViewCenrepServiceItem1PressedIconPath, pressedValue);
             if(status == KErrNone)
             {
                 QString iconTemp((QChar*)iconValue.Ptr(),iconValue.Length());
@@ -238,7 +241,7 @@
     if(cenRep)
     {
         TBuf<255> uriValue;
-        if(cenRep->Get(KVideoCollectionViewCenrepServiceIconKey, uriValue) == KErrNone)
+        if(cenRep->Get(KVideoCollectionViewCenrepServiceItem1Url, uriValue) == KErrNone)
         {
             QString uriTemp((QChar*)uriValue.Ptr(),uriValue.Length());
             uri = uriTemp;
@@ -313,33 +316,93 @@
 }
 
 // ---------------------------------------------------------------------------
-// saveWidgetLevel
+// setWidgetActivityLevel
 // ---------------------------------------------------------------------------
 //
-void VideoCollectionViewUtils::saveWidgetLevel(VideoCollectionCommon::TCollectionLevels &level)
+void VideoCollectionViewUtils::setWidgetActivityLevel(
+        const VideoCollectionCommon::TCollectionLevels &level)
 {
     FUNC_LOG; 
     QVariant data = int(level);
-    VideoActivityState::instance().setActivityData(data, VideoActivityData::KEY_WIDGET_LEVEL);
+    VideoActivityState::instance().setActivityData(data, KEY_WIDGET_LEVEL);
+
+    if(level != VideoCollectionCommon::ELevelDefaultColl && 
+       level != VideoCollectionCommon::ELevelAlbum)
+    {
+        // no need to save collection related data, clear them
+        data.clear();
+        VideoActivityState::instance().setActivityData(data, KEY_COLLECTION_ID);    
+        VideoActivityState::instance().setActivityData(data, KEY_COLLECTION_NAME);   
+    }
 }
-  
+
 // ---------------------------------------------------------------------------
-// loadWidgetLevel
+// getActivityWidgetLevel
 // ---------------------------------------------------------------------------
 //
-VideoCollectionCommon::TCollectionLevels VideoCollectionViewUtils::loadWidgetLevel()
+void VideoCollectionViewUtils::getActivityWidgetLevel(VideoCollectionCommon::TCollectionLevels &level)
 {
     FUNC_LOG;
-    // all videos view is the default value to be returned in case nothing can be read
-    // from the activity manager
-    VideoCollectionCommon::TCollectionLevels level(VideoCollectionCommon::ELevelVideos);
-    QVariant data = VideoActivityState::instance().getActivityData(VideoActivityData::KEY_WIDGET_LEVEL);
-    if(data.toInt() == VideoCollectionCommon::ELevelCategory)
+    // default value is all videos list level
+    level = VideoCollectionCommon::ELevelVideos;
+    QVariant data = VideoActivityState::instance().getActivityData(KEY_WIDGET_LEVEL);
+    
+    int value = data.toInt();
+    if(value == VideoCollectionCommon::ELevelCategory)
     {
         level = VideoCollectionCommon::ELevelCategory;
     }
-    return level;
+    else if(value == VideoCollectionCommon::ELevelDefaultColl)
+    {
+        level = VideoCollectionCommon::ELevelDefaultColl;
+    }
+    else if(value == VideoCollectionCommon::ELevelAlbum)
+    {
+        level = VideoCollectionCommon::ELevelAlbum;
+    }
+}
+ 
+// ---------------------------------------------------------------------------
+// setCollectionActivityData
+// ---------------------------------------------------------------------------
+//
+void VideoCollectionViewUtils::setCollectionActivityData(const TMPXItemId &id, const QString &name)
+{
+    FUNC_LOG;
+    QVariant data = int(id.iId1);
+    VideoActivityState::instance().setActivityData(data, KEY_COLLECTION_ID);
+    data.clear();
+    data = name;
+    VideoActivityState::instance().setActivityData(data, KEY_COLLECTION_NAME);
+}
 
+// ---------------------------------------------------------------------------
+// getCollectionActivityData
+// ---------------------------------------------------------------------------
+//
+void VideoCollectionViewUtils::getCollectionActivityData(TMPXItemId &id, QString &name)
+{
+    FUNC_LOG;
+    id = TMPXItemId::InvalidId();
+    name = "";
+    VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+    getActivityWidgetLevel(level); 
+    
+    if(level == VideoCollectionCommon::ELevelDefaultColl)
+    {
+        id.iId2 = KVcxMvcMediaTypeCategory; 
+    }
+    else if(level == VideoCollectionCommon::ELevelAlbum)
+    {
+        id.iId2 = KVcxMvcMediaTypeAlbum;
+    }
+    if(id.iId2 != KMaxTUint32)
+    {
+        QVariant data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_ID);
+        id.iId1 = data.toInt();
+        data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_NAME);
+        name = data.toString();
+    }
 }
 
 // ---------------------------------------------------------------------------
--- a/videocollection/videocollectionview/src/videohintwidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videohintwidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 13 %
+// Version : %version: 14 %
 
 // INCLUDE FILES
 #include <hbpushbutton.h>
@@ -36,12 +36,11 @@
     : HbWidget( parent )
     , mUiLoader( uiLoader )
     , mServiceIcon( 0 )
-    , mAddVideosIcon( 0 )
     , mCurrentLevel( AllVideos )
     , mButtonShown( false )
     , mActivated( false )
 {
-	FUNC_LOG;
+    FUNC_LOG;
     // NOP
 }
 
@@ -51,9 +50,8 @@
 //
 VideoHintWidget::~VideoHintWidget()
 {
-	FUNC_LOG;
+    FUNC_LOG;
     delete mServiceIcon;
-    delete mAddVideosIcon;
 }
 
 // ---------------------------------------------------------------------------
@@ -62,7 +60,7 @@
 //
 int VideoHintWidget::initialize()
 {
-	FUNC_LOG;
+    FUNC_LOG;
     VideoCollectionViewUtils& utils = VideoCollectionViewUtils::instance();
     return utils.getServiceIconStrings(mServiceIconString, mServiceIconPressedString);
 }
@@ -73,8 +71,8 @@
 //
 void VideoHintWidget::setLevel(HintLevel level)
 {
-	FUNC_LOG;
-	INFO_1("VideoHintWidget::setLevel() level: %d", level);
+    FUNC_LOG;
+    INFO_1("VideoHintWidget::setLevel() level: %d", level);
     mCurrentLevel = level;
     if(mActivated) {
         updateUiComponents();
@@ -87,9 +85,9 @@
 //
 void VideoHintWidget::setButtonShown(bool shown)
 {
-	FUNC_LOG;
-	INFO_1("VideoHintWidget::setButtonShown() shown: %d", shown);
-    mButtonShown = shown;
+    FUNC_LOG;
+    INFO_1("VideoHintWidget::setButtonShown() shown: %d", shown);
+	mButtonShown = shown;
     if(mActivated) {
         updateUiComponents();
     }
@@ -101,7 +99,7 @@
 //
 void VideoHintWidget::orientationChangedSlot(Qt::Orientation targetOrientation)
 {
-	FUNC_LOG;
+    FUNC_LOG;
     Q_UNUSED(targetOrientation);
     updateUiComponents();
 }
@@ -112,24 +110,22 @@
 //
 void VideoHintWidget::activate()
 {
-	FUNC_LOG;
+    FUNC_LOG;
     if (!mActivated)
     {
-        if(mServiceIconString.isEmpty() || 
-           mServiceIconPressedString.isEmpty())
-        {
-            return;
-        }
-        
         HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
         connect(
             mainWnd, SIGNAL(orientationChanged(Qt::Orientation)),
             this, SLOT(orientationChangedSlot(Qt::Orientation)));
         
-        mServiceIcon = new HbIcon(mServiceIconString);
-        mServiceIcon->setIconName(mServiceIconPressedString, QIcon::Normal, QIcon::On);
-        
-        mAddVideosIcon = new HbIcon("qtg_mono_add_to_video_collection");
+        if(!mServiceIconString.isEmpty())
+        {
+            mServiceIcon = new HbIcon(mServiceIconString);
+        }
+        if(mServiceIcon && !mServiceIconPressedString.isEmpty())
+        {
+            mServiceIcon->setIconName(mServiceIconPressedString, QIcon::Normal, QIcon::On);
+        }
         
         updateUiComponents();
         
@@ -145,7 +141,7 @@
 //
 void VideoHintWidget::deactivate()
 {
-	FUNC_LOG;
+    FUNC_LOG;
     if (mActivated)
     {
         mActivated = false;
@@ -164,15 +160,9 @@
         {
             serviceButton->setIcon(HbIcon());
         }
-        if(mServiceIcon) {
-            delete mServiceIcon;
-            mServiceIcon = 0;
-        }
-        
-        if(mAddVideosIcon) {
-            delete mAddVideosIcon;
-            mAddVideosIcon = 0;
-        }
+
+        delete mServiceIcon;
+        mServiceIcon = 0;
     }
 }
 
@@ -182,7 +172,7 @@
 //
 void VideoHintWidget::updateUiComponents()
 {
-	FUNC_LOG;
+    FUNC_LOG;
     HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
     if (mainWnd)
     {
@@ -197,17 +187,17 @@
                 DOCML_NAME_NO_VIDEOS_LABEL);
         if (serviceButton && hintLabel && noVideosLabel)
         {
-            serviceButton->setVisible(mainWnd->orientation() == Qt::Horizontal && mButtonShown);
             noVideosLabel->setVisible(true);
-            if (mCurrentLevel == Collection)
+            if (mServiceIcon && mCurrentLevel == AllVideos)
+            {
+                hintLabel->setVisible(true);
+                serviceButton->setIcon(*mServiceIcon);
+                serviceButton->setVisible(mButtonShown);
+            }
+            else
             {
                 hintLabel->setVisible(false);
-                serviceButton->setIcon(*mAddVideosIcon);
-            }
-            else
-            {               
-                hintLabel->setVisible(true);
-                serviceButton->setIcon(*mServiceIcon);
+                serviceButton->setVisible(false);
             }
         }
     }
--- a/videocollection/videocollectionview/src/videolistview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 110 %
+// Version : %version: 113 %
 
 // INCLUDE FILES
 #include <xqserviceutil.h>
@@ -59,7 +59,6 @@
     , mUiUtils( VideoCollectionViewUtils::instance() )
     , mWrapper( VideoCollectionWrapper::instance() )
     , mUiLoader( uiLoader )
-    , mIsService( false )
     , mModelReady( false )
     , mViewReady( false )
     , mHintLevel( VideoHintWidget::AllVideos )
@@ -103,49 +102,68 @@
         cleanup();
 		return -1;
 	}
-
-    if (XQServiceUtil::isService() && !mVideoServices)
+	int videoListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
+	int collectionListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
+	int collectionContentListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
+	VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+    if (XQServiceUtil::isService())
     {
-        INFO("VideoListView::initializeView() service flag set to true.");
-        mIsService = true;
-
-    	mVideoServices = VideoServices::instance();
-
+        INFO("VideoListView::initializeView() initializing service.");
     	if (!mVideoServices)
         {
-    	    ERROR(-1, "VideoListView::initializeView() getting services instance failed.");
-            cleanup();
-        	return -1;
+    	    mVideoServices = VideoServices::instance();
+    	    connect(mVideoServices, SIGNAL(titleReady(const QString&)), 
+    	            this, SLOT(titleReadySlot(const QString&)));
 		}
-        else
-        {
-        	connect(mVideoServices, SIGNAL(titleReady(const QString&)), this, SLOT(titleReadySlot(const QString&)));
-        }
+    	 
 	}
-    QList<VideoCollectionUiLoaderParam> params;
-    int videoListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
-    int collectionListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
-    
-    if(VideoCollectionViewUtils::loadWidgetLevel() == VideoCollectionCommon::ELevelCategory)
+    else
     {
-        videoListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
-        collectionListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
-       
-       
+        if(mVideoServices)
+        {
+            disconnect(mVideoServices, SIGNAL(titleReady(const QString&)), 
+                    this, SLOT(titleReadySlot(const QString&)));
+            mVideoServices->decreaseReferenceCount();
+            mVideoServices = 0;
+        }
+        VideoCollectionViewUtils::getActivityWidgetLevel(level);
+        if(level == VideoCollectionCommon::ELevelCategory)
+        {
+            videoListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
+            collectionListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
+            collectionContentListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
+        }
+        else if(level == VideoCollectionCommon::ELevelDefaultColl ||
+                level == VideoCollectionCommon::ELevelAlbum)
+        {
+            videoListPhase = VideoCollectionUiLoaderParam::LoadPhaseSecondary;
+            collectionListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
+            collectionContentListPhase = VideoCollectionUiLoaderParam::LoadPhasePrimary;
+        }   
     }
     // start loading objects and widgets
+    QList<VideoCollectionUiLoaderParam> params;
+    
     params.append(VideoCollectionUiLoaderParam(
-                   DOCML_NAME_VC_VIDEOLISTWIDGET,
-                   DOCML_VIDEOCOLLECTIONVIEW_FILE,
-                   true,
-                   videoListPhase));
+        DOCML_NAME_VC_VIDEOLISTWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        true,
+        videoListPhase));
+    
     params.append(VideoCollectionUiLoaderParam(
-                   DOCML_NAME_VC_COLLECTIONWIDGET,
-                   DOCML_VIDEOCOLLECTIONVIEW_FILE,
-                   DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
-                   true,
-                   collectionListPhase));
-        
+        DOCML_NAME_VC_COLLECTIONWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
+        true,
+        collectionListPhase));
+    
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_COLLECTIONCONTENTWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
+        true,
+        collectionContentListPhase)); 
+    
     params.append(VideoCollectionUiLoaderParam(
         DOCML_NAME_OPTIONS_MENU,
         DOCML_VIDEOCOLLECTIONVIEW_FILE,
@@ -195,13 +213,7 @@
         DOCML_NAME_SORT_BY_SIZE,
         DOCML_VIDEOCOLLECTIONVIEW_FILE,
         false,
-        VideoCollectionUiLoaderParam::LoadPhaseSecondary));   
-    params.append(VideoCollectionUiLoaderParam(
-        DOCML_NAME_VC_COLLECTIONCONTENTWIDGET,
-        DOCML_VIDEOCOLLECTIONVIEW_FILE,
-        DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
-        true,
-        VideoCollectionUiLoaderParam::LoadPhaseSecondary)); // widget
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));       
     params.append(VideoCollectionUiLoaderParam(
         DOCML_NAME_DIALOG,
         DOCML_VIDEOSELECTIONDIALOG_FILE,
@@ -231,16 +243,21 @@
     mUiLoader->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary);
     params.clear();
     
+    // fetch current list right away for main views
+    // for default and user defined collections, currentList 
+    // will be setted during activation
     if(videoListPhase == VideoCollectionUiLoaderParam::LoadPhasePrimary)
     {
         mCurrentList = mUiLoader->findWidget<VideoListWidget>(
-                                DOCML_NAME_VC_VIDEOLISTWIDGET);
+                DOCML_NAME_VC_VIDEOLISTWIDGET );
     }
-    else
+    else 
     {
         mCurrentList = mUiLoader->findWidget<VideoListWidget>(
-                                    DOCML_NAME_VC_COLLECTIONWIDGET);
+                DOCML_NAME_VC_COLLECTIONWIDGET );
     }
+
+
     
     return 0;
 }
@@ -259,24 +276,47 @@
 // activateView()
 // ---------------------------------------------------------------------------
 //
-int VideoListView::activateView(const TMPXItemId &itemId)
+int VideoListView::activateView( TMPXItemId &itemId)
 {
 	FUNC_LOG;
 
-    int err = 0;
-    
+    int err = -1;
+           
     // activate collection to correct view
     if (itemId == TMPXItemId::InvalidId())
-    {
-        err = activateVideosView();
+    {  
+        
+        VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+        if(!mVideoServices)
+        {
+            VideoCollectionViewUtils::getActivityWidgetLevel(level);
+        }
+        if(level == VideoCollectionCommon::ELevelCategory ||
+           level == VideoCollectionCommon::ELevelVideos)
+        {
+            err = activateMainView();
+        }
+        else if(level == VideoCollectionCommon::ELevelDefaultColl ||
+                level == VideoCollectionCommon::ELevelAlbum)
+        {
+            // level is default or user defined collection
+            // see if we have item id 
+            VideoCollectionViewUtils::getCollectionActivityData(itemId, mCollectionName);     
+        }
     }
-    else
+    if(itemId != TMPXItemId::InvalidId())
     {
         err = activateCollectionContentView(itemId);
     }
     
+    if(!err)
+    {
+       
+       err = createToolbar();
+    }
+    
     // connect signals if everything went ok
-    if (err == 0)
+    if (!err)
     {
         HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
         mainWnd->setOrientation(Qt::Vertical, false);
@@ -302,6 +342,10 @@
             err = -1;
         }
     }
+    else
+    {
+        deactivateView();
+    }
     
     return err;
 }
@@ -394,12 +438,11 @@
                 this, SLOT(modelReadySlot()));
 
         showHint(false);
-    }
-    
-    if(mCurrentList)
-    {
-        VideoCollectionCommon::TCollectionLevels level = mCurrentList->getLevel();
-        VideoCollectionViewUtils::saveWidgetLevel(level);
+        if(!mVideoServices)
+        {
+            VideoCollectionCommon::TCollectionLevels level = mCurrentList->getLevel();
+            VideoCollectionViewUtils::setWidgetActivityLevel(level);
+        }
         mCurrentList->deactivate();
     }
 }
@@ -455,7 +498,7 @@
         mToolbarActions[ETBActionCollections] = createAction("qtg_mono_video_collection",
                 mToolbarViewsActionGroup, SLOT(openCollectionViewSlot()));
 
-        if (!mIsService)
+        if (!mVideoServices)
         {
 			// Services tab
 			mToolbarActions[ETBActionServices] = createAction("qtg_mono_ovistore",
@@ -476,7 +519,7 @@
         if(   !bar
 		   || !mToolbarActions[ETBActionAllVideos]
            || !mToolbarActions[ETBActionCollections]
-           || ( !mIsService && (!mToolbarActions[ETBActionServices] 
+           || ( !mVideoServices && (!mToolbarActions[ETBActionServices] 
               || !mToolbarActions[ETBActionAddVideos]
               || !mToolbarActions[ETBActionRemoveVideos])))
         {
@@ -493,21 +536,30 @@
         mToolbarActions[ETBActionAllVideos]->setCheckable(true);
         mToolbarActions[ETBActionCollections]->setCheckable(true);
 
-        if (!mIsService)
+        if (!mVideoServices)
         {
         	mToolbarActions[ETBActionServices]->setCheckable(false);
         }
-
-        if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelCategory)
+        VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+        if(mCurrentList)
+        {
+            level = mCurrentList->getLevel();
+        }
+        if(level == VideoCollectionCommon::ELevelCategory)
         {
             mToolbarActions[ETBActionCollections]->setChecked(true);
+            bar->addActions(mToolbarViewsActionGroup->actions());
         }
-        else
+        else if(level == VideoCollectionCommon::ELevelVideos )
         {
             mToolbarActions[ETBActionAllVideos]->setChecked(true);
+            bar->addActions(mToolbarViewsActionGroup->actions());
         }
-
-        bar->addActions(mToolbarViewsActionGroup->actions());
+        else if(level == VideoCollectionCommon::ELevelAlbum) 
+        {
+            bar->addActions(mToolbarCollectionActionGroup->actions());
+        }
+        
     }
 
     return 0;
@@ -582,7 +634,7 @@
         }
     }
 
-    if (mToolbarViewsActionGroup && mToolbarCollectionActionGroup && !mIsService)
+    if (mToolbarViewsActionGroup && mToolbarCollectionActionGroup && !mVideoServices)
     {
         if (show)
         {
@@ -692,10 +744,10 @@
 }
 
 // ---------------------------------------------------------------------------
-// activateVideosView()
+// activateMainView()
 // ---------------------------------------------------------------------------
 //
-int VideoListView::activateVideosView()
+int VideoListView::activateMainView()
 {
     FUNC_LOG;
 
@@ -703,24 +755,14 @@
     {
         return -1;
     }
-    VideoCollectionCommon::TCollectionLevels level = mCurrentList->getLevel(); 
 
-    int result = mCurrentList->activate(level);
+    int result = mCurrentList->activate();
     if(result < 0)
     {
         ERROR(result, "VideoListView::activateVideosView() failed to activate.");
-        // activate failed, deactivate view so we get rid of dangling connections.
-        deactivateView();
         return -1;
     }
-    
-    if (createToolbar() != 0)
-    {
-        ERROR(result, "VideoListView::activateVideosView() failed to create toolbar.");
-        deactivateView();
-        return -1;
-    }
-    
+
     return 0;
 }
 
@@ -731,101 +773,76 @@
 int VideoListView::activateCollectionContentView(const TMPXItemId &itemId)
 {
     FUNC_LOG;
-    int err = 0;
-    
-    if (itemId.iId2 == KVcxMvcMediaTypeCategory ||
-        itemId.iId2 == KVcxMvcMediaTypeAlbum)
+
+    // resolve collection name if possible
+    if(itemId.iId2  == KVcxMvcMediaTypeCategory && mCollectionName.isEmpty())
     {
-        // currently only captured and downloaded categories are supported
-        switch (itemId.iId1)
+        if (itemId.iId1 == KVcxMvcCategoryIdDownloads)
+        {
+            mCollectionName = hbTrId("txt_videos_dblist_downloaded");
+        }
+        else if(itemId.iId1 == KVcxMvcCategoryIdCaptured) 
+        {
+            mCollectionName = hbTrId("txt_videos_dblist_captured");
+        }
+        else
         {
-            case KVcxMvcCategoryIdDownloads:
-            case KVcxMvcCategoryIdCaptured:
-            {
-                VideoListWidget *collectionContentWidget =
-                    mUiLoader->findWidget<VideoListWidget>(
-                        DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
-                if (collectionContentWidget && collectionContentWidget->getModel())
-                {
-                    // no need to deactivate since there cannot be previous widget
-                    mCurrentList = collectionContentWidget;
-                    
-                    // resolve collection name
-                    if (itemId.iId1 == KVcxMvcCategoryIdDownloads)
-                    {
-                        mCollectionName = hbTrId("txt_videos_dblist_downloaded");
-                    }
-                    else if (itemId.iId1 == KVcxMvcCategoryIdCaptured)
-                    {
-                        mCollectionName = hbTrId("txt_videos_dblist_captured");
-                    }
-                    
-                    // activate collection content widget
-                    mCurrentList->activate(VideoCollectionCommon::ELevelDefaultColl);
-                    
-                    // open the model
-                    VideoSortFilterProxyModel *model = mCurrentList->getModel();
-                    model->openItem(itemId);
-                    
-                    // sort model
-                    int sortRole = VideoCollectionCommon::KeyDateTime;
-                    if (mIsService &&
-                        mVideoServices)
-                    {
-                        // TODO: sorting roles needs to be defined somewhere
-                        sortRole = mVideoServices->sortRole();
-                        switch (sortRole)
-                        {
-                            // sort by name
-                            case 2:
-                            {
-                                sortRole = VideoCollectionCommon::KeyTitle;
-                                break;
-                            }
-                            // sort by size
-                            case 3:
-                            {
-                                sortRole = VideoCollectionCommon::KeySizeValue;
-                                break;
-                            }
-                            // date & time
-                            case 1:
-                                // fall through
-                            default:
-                            {
-                                sortRole = VideoCollectionCommon::KeyDateTime;
-                                break;
-                            }
-                        }
-                    }
-                    model->doSorting(sortRole, Qt::AscendingOrder);
-                    
-                    // set hint level to collections
-                    setHintLevel(VideoHintWidget::Collection);
-                }
-                else
-                {
-                    ERROR(-1, "VideoListView::activateVideosView() failed to get collection content widget.");
-                    err = -1;
-                }
-                break;
-            }
-            default:
-            {
-                // by default open videos view
-                err = activateVideosView();
-                break;
-            }
+            // only downloads and captured are supported in default collections
+            ERROR(-1, "VideoListView::activateVideosView() invalid defauld collection.");
+            return -1;
         }
-        
+    }
+    // at this point activation will fail if there's no collection name available
+    if(mCollectionName.isEmpty())
+    {
+        ERROR(-1, "VideoListView::activateVideosView() no collection name, cannot proceed.");
+        return -1;
     }
-    else
+    
+    // if current list at this point is already collection content, 
+    // no need to init again, just activate
+    if(mCurrentList && 
+       (mCurrentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl ||
+        mCurrentList->getLevel() == VideoCollectionCommon::ELevelAlbum))
     {
-        // open videos view
-        err = activateVideosView();
+        
+        return mCurrentList->activate();
+    }
+    // no currentlist, or currentlist differs, create and initialize all over
+    collectionOpenedSlot(true, mCollectionName, itemId);
+    
+    if((!mCurrentList || !mCurrentList->getModel()) ||
+       (mCurrentList->getLevel() != VideoCollectionCommon::ELevelDefaultColl && 
+        mCurrentList->getLevel() != VideoCollectionCommon::ELevelAlbum ))
+    {
+        ERROR(-1, "VideoListView::activateVideosView() failed to init and activate collection.");
+        return -1;
     }
 
-    return err;
+    // if we're servicing, need to fetch sorting role from client
+    // in normal use, sorting has set already at uiloader
+   
+    if (mVideoServices)
+    {       
+        // TODO: service sorting roles needs to be defined somewhere
+        int sortRole = mVideoServices->sortRole();
+        if(sortRole == 2)
+        {
+            sortRole = VideoCollectionCommon::KeyTitle;
+        }
+        else if(sortRole == 3)
+        {
+            sortRole = VideoCollectionCommon::KeySizeValue;
+        } 
+        else
+        {
+            // default 
+            sortRole = VideoCollectionCommon::KeyDateTime;
+        }
+        mCurrentList->getModel()->doSorting(sortRole, Qt::AscendingOrder);
+    }
+    
+    return 0;
 }
 
 // ---------------------------------------------------------------------------
@@ -943,17 +960,26 @@
 	}
 	model->doSorting(role, order);
 	
-	if (mCurrentList == mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET))
+	// for video related sorting, all videos list and collection content
+	// list, sorting orders are same all the time
+	VideoListWidget *anotherVideosList = 0;
+	VideoCollectionCommon::TCollectionLevels level = mCurrentList->getLevel();
+	if (level == VideoCollectionCommon::ELevelDefaultColl ||
+	    level == VideoCollectionCommon::ELevelAlbum)
 	{
-	    VideoListWidget *allVideosList = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
-	    if(allVideosList && allVideosList->getModel())
-	    {
-	        allVideosList->getModel()->doSorting(role, order);
-	    }
+	    anotherVideosList = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
 	}
+	else if(level == VideoCollectionCommon::ELevelVideos)
+	{
+	    anotherVideosList = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+	}
+    if(anotherVideosList && anotherVideosList->getModel())
+    {
+        anotherVideosList->getModel()->doSorting(role, order);
+    }
 
     // save sorting values only if the application is not started as a service
-	if (!mIsService)
+	if (!mVideoServices)
 	{
 	    // save sorting values
 	    mUiUtils.saveSortingValues(role, order, mCurrentList->getLevel());
@@ -1114,8 +1140,7 @@
 //
 void VideoListView::aboutToShowMainMenuSlot()
 {
-    if (mIsService &&
-        mVideoServices &&
+    if (mVideoServices &&
         mVideoServices->currentService() == VideoServices::EBrowse)
     {
         prepareBrowseServiceMenu();
@@ -1167,7 +1192,7 @@
 			action->setChecked(true);
 		}
 
-        if (!mIsService)
+        if (!mVideoServices)
         {
             showAction(true, DOCML_NAME_ADD_TO_COLLECTION);
             showAction(true, DOCML_NAME_DELETE_MULTIPLE);
@@ -1176,7 +1201,7 @@
     else if(mToolbarViewsActionGroup->checkedAction() == mToolbarActions[ETBActionCollections] &&
     		firstAction == mToolbarActions[ETBActionAllVideos] )
     {
-        if (!mIsService)
+        if (!mVideoServices)
         {
             showAction(true, DOCML_NAME_CREATE_COLLECTION);
         }
@@ -1203,7 +1228,7 @@
 			action->setChecked(true);
 		}
 
-        if (!mIsService)
+        if (!mVideoServices)
         {
             showAction(true, DOCML_NAME_DELETE_MULTIPLE);
         }
@@ -1272,16 +1297,12 @@
 // collectionOpenedSlot
 // -------------------------------------------------------------------------------------------------
 //
-void VideoListView::collectionOpenedSlot(bool collectionOpened,
+void VideoListView::collectionOpenedSlot(bool openingCollection,
     const QString& collection,
-    const QModelIndex &index)
+    const TMPXItemId &collectionId)
 {
 	FUNC_LOG;
 
-	if(!mCurrentList || !mCurrentList->getModel())
-	{
-	    return;
-	}
     // clear toolbar actions.
     toolBar()->clearActions();
 
@@ -1300,27 +1321,24 @@
 	HbAbstractItemView::ItemAnimations animationState = collectionContentWidget->enabledAnimations();
 	collectionContentWidget->setEnabledAnimations(HbAbstractItemView::None);
 	
-	if(collectionOpened)
+	if(openingCollection)
     {
         // open album view        
-        if (!index.isValid() || !mCurrentList || mCurrentList == collectionContentWidget)
+        if (collectionId == TMPXItemId::InvalidId() || mCurrentList == collectionContentWidget)
         {
             // no currentlist or currentlist is already collection content -list 
             collectionContentWidget->setEnabledAnimations(animationState);
             return;
         }
-        
-        // get item id before deactivating
-        TMPXItemId itemId = mCurrentList->getModel()->getMediaIdAtIndex(index);
-        
+                
         // get level from the item to be opened only default 
         // or user defined collections can be activated here
         VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelInvalid;
-        if(itemId.iId2 == KVcxMvcMediaTypeCategory)
+        if(collectionId.iId2 == KVcxMvcMediaTypeCategory)
         {
             level = VideoCollectionCommon::ELevelDefaultColl; 
         }
-        else if(itemId.iId2 == KVcxMvcMediaTypeAlbum)
+        else if(collectionId.iId2 == KVcxMvcMediaTypeAlbum)
         {
             level = VideoCollectionCommon::ELevelAlbum; 
         }
@@ -1335,12 +1353,16 @@
         if(!model)
         {
             // no model for content widget, cannot activate
+            collectionContentWidget->setEnabledAnimations(animationState);
             return;
         }
-        model->openItem(itemId);
+        model->openItem(collectionId);
         
         // deactivat current widget.
-        mCurrentList->deactivate();
+        if(mCurrentList)
+        {
+            mCurrentList->deactivate();
+        }
         
         // activate video collection content widget and set it as current list.
         mCurrentList = collectionContentWidget;
@@ -1376,6 +1398,11 @@
     }
 	// restore animations for collection content widget
 	collectionContentWidget->setEnabledAnimations(animationState);
+	if(!mVideoServices)
+	{
+	    // save / clear collection related activity data
+	    VideoCollectionViewUtils::setCollectionActivityData(collectionId, collection);
+	}
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -1398,8 +1425,8 @@
     else if (name.compare(DOCML_NAME_VC_COLLECTIONWIDGET) == 0)
     {
         connect(
-            object, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
-            this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
+            object, SIGNAL(collectionOpened(bool, const QString&, const TMPXItemId&)),
+            this, SLOT(collectionOpenedSlot(bool, const QString&, const TMPXItemId&)));
         if(mCurrentList != object)
         {
             // this widget not yet activated so it's has been created on the second phase
@@ -1411,8 +1438,8 @@
     {
         connect(object, SIGNAL(command(int)), this, SIGNAL(command(int)));
         connect(
-            object, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
-            this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
+            object, SIGNAL(collectionOpened(bool, const QString&, const TMPXItemId&)),
+            this, SLOT(collectionOpenedSlot(bool, const QString&, const TMPXItemId&)));
         if(mCurrentList != object)
         {
             // this widget not yet activated so it's has been created on the second phase
--- a/videocollection/videocollectionview/src/videolistwidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistwidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -70,7 +70,6 @@
 mVideoServices(0),
 mCurrentLevel(VideoCollectionCommon::ELevelInvalid),
 mSignalsConnected(false),
-mIsService(false),
 mNavKeyAction(0),
 mContextMenu(0),
 mSelectionMode(HbAbstractItemView::NoSelection),
@@ -96,6 +95,12 @@
     mContextMenu = 0;
     delete mNavKeyAction;
     mNavKeyAction = 0;
+    
+    if(mVideoServices)
+    {
+        mVideoServices->decreaseReferenceCount();
+        mVideoServices = 0;
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -103,18 +108,19 @@
 // ---------------------------------------------------------------------------
 //
 int VideoListWidget::initialize(VideoSortFilterProxyModel &model, 
-                                VideoServices* videoServices,
+                                bool isService,
                                 VideoCollectionCommon::TCollectionLevels level)
 {
 	FUNC_LOG_ADDR(this);
     mModel = &model;    
-	mVideoServices = videoServices;
 	mCurrentLevel = level;
 
-	if(mVideoServices)
+	if(isService)
 	{
-		mIsService = true;
-	
+		if(!mVideoServices)
+		{
+		    mVideoServices = VideoServices::instance();
+		}
     	if(XQServiceUtil::interfaceName().contains("IVideoFetch"))
     	{
     		mService = VideoServices::EUriFetcher;
@@ -124,6 +130,14 @@
     		mService = VideoServices::EBrowse;
     	}
 	}
+    else
+    {
+        if(mVideoServices)
+        {
+		    mVideoServices->decreaseReferenceCount();
+            mVideoServices = 0;    
+        }
+    }
 
     // init list view
     VideoCollectionViewUtils::initListView(this);
@@ -131,7 +145,7 @@
 	mScrollPositionTimer = new QTimer();
 	mScrollPositionTimer->setSingleShot(true);
 
-	if (mIsService)
+	if (mVideoServices)
 	{
 		connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&)));
 	}
@@ -160,7 +174,7 @@
 	FUNC_LOG_ADDR(this);
 	INFO_2("VideoListWidget::activate() [0x%x]: level: %d", this, level);
 	
-    if(!mModel)
+    if(!mModel || level == VideoCollectionCommon::ELevelInvalid)
     {
         return -1;
     }
@@ -230,42 +244,52 @@
 {
 	FUNC_LOG_ADDR(this);
 	
-	int retval(0);
-	
-    if (!mSignalsConnected)
+    if (mSignalsConnected)
+    {
+        return 0;
+    }
+    
+    if(!connect(this, SIGNAL(scrollingStarted()), this, SLOT(scrollingStartedSlot())) ||
+       !connect(this, SIGNAL(scrollingEnded()), this, SLOT(scrollingEndedSlot())) ||
+       !connect(this, SIGNAL(scrollPositionChanged(const QPointF &)), 
+               this, SLOT(scrollPositionChangedSlot(const QPointF &))) ||
+       !connect(mScrollPositionTimer, SIGNAL(timeout()), this, SLOT(scrollPositionTimerSlot())) || 
+       !connect(this, SIGNAL(longPressed(HbAbstractViewItem *, const QPointF &)), 
+                this, SLOT(longPressedSlot(HbAbstractViewItem *, const QPointF &))))
     {
-        if(!connect(this, SIGNAL(scrollingStarted()), this, SLOT(scrollingStartedSlot())) ||
-           !connect(this, SIGNAL(scrollingEnded()), this, SLOT(scrollingEndedSlot())) ||
-           !connect(this, SIGNAL(scrollPositionChanged(const QPointF &)), 
-                   this, SLOT(scrollPositionChangedSlot(const QPointF &))) ||
-           !connect(mScrollPositionTimer, SIGNAL(timeout()), this, SLOT(scrollPositionTimerSlot())) || 
-           !connect(this, SIGNAL(longPressed(HbAbstractViewItem *, const QPointF &)), 
-                    this, SLOT(longPressedSlot(HbAbstractViewItem *, const QPointF &))))
-        {
-            return -1;
-        }
+        return -1;
+    }
 
-        if (!isBrowsingService())
+    // handle navi key trigger -signal connection
+    const char *slot = SLOT(quit()); 
+    QObject *receiver = qApp;
+    
+    if(mVideoServices && mService == VideoServices::EBrowse)
+    {
+        receiver = mVideoServices;
+        slot = SLOT(browsingEnded());
+    }
+    else 
+    {        
+        if(mCurrentLevel == VideoCollectionCommon::ELevelAlbum || 
+           mCurrentLevel == VideoCollectionCommon::ELevelDefaultColl)
         {
-	        if(VideoCollectionCommon::EModelTypeCollectionContent == mModel->getType())
-	        {
-	            if (!connect(mNavKeyAction, SIGNAL(triggered()), this, SLOT(back())))
-				{
-					retval = -1;
-				}
-	        }
-	        else
-	        {
-	            if (!connect(mNavKeyAction, SIGNAL(triggered()), qApp, SLOT(quit())))
-				{
-					retval = -1;
-				}
-	        }
+            receiver = this;
+            slot = SLOT(back());
+        }
+        else if(mVideoServices && mService == VideoServices::EUriFetcher)
+        {
+            receiver = this;
+            slot = SLOT(endVideoFecthingSlot());            
         }
-        
-        mSignalsConnected = true;
     }
-	return retval;
+    if(!connect(mNavKeyAction, SIGNAL(triggered()), receiver, slot))
+    {
+        return -1;
+    }
+    mSignalsConnected = true;
+    
+	return 0;
 }
 
 // ---------------------------------------------------------------------------
@@ -296,55 +320,15 @@
             mScrollPositionTimer, SIGNAL(timeout()),
             this, SLOT(scrollPositionTimerSlot()));
     }
-    
-    // check that model and navigation action exists
-    if (!isBrowsingService())
+    if(mNavKeyAction)
     {
-	    if (mModel &&
-	        mModel->getType() == VideoCollectionCommon::EModelTypeCollectionContent)
-	    {
-	        if (mNavKeyAction)
-	        {
-	            disconnect(
-	                mNavKeyAction, SIGNAL(triggered()),
-	                this, SLOT(back()));
-	        }
-	    }
-	    else
-	    {
-	        if (mNavKeyAction)
-	        {
-	            disconnect(
-	                mNavKeyAction, SIGNAL(triggered()),
-	                qApp, SLOT(quit()));
-	        }
-	    }
+        mNavKeyAction->disconnect(SIGNAL(triggered()));
     }
 
 	mSignalsConnected = false;
 }
 
 // ---------------------------------------------------------------------------
-// isBrowsingService
-// ---------------------------------------------------------------------------
-//
-bool VideoListWidget::isBrowsingService() const
-{
-    FUNC_LOG_ADDR(this);
-    
-    bool isBrowsingService = false;
-    
-    if (mIsService &&
-        mVideoServices &&
-        mService == VideoServices::EBrowse)
-    {
-        isBrowsingService = true;
-    }
-    
-    return isBrowsingService;
-}
-
-// ---------------------------------------------------------------------------
 // setNavigationAction
 // ---------------------------------------------------------------------------
 //
@@ -355,26 +339,16 @@
     // Create navigation action if not already created
     if (!mNavKeyAction)
     {
-        if (isBrowsingService())
-        {
-            mNavKeyAction = new HbAction(Hb::QuitNaviAction);
-            mNavKeyAction->setObjectName(LIST_WIDGET_OBJECT_NAME_NAV_KEY_QUIT);
-            connect(mNavKeyAction, SIGNAL(triggered()),
-                mVideoServices, SLOT(browsingEnded()));
-        }
-        else if (mModel)
+        Hb::NavigationAction navAction = Hb::QuitNaviAction;
+        QString objectName = LIST_WIDGET_OBJECT_NAME_NAV_KEY_QUIT;
+        if(mCurrentLevel == VideoCollectionCommon::ELevelAlbum || 
+           mCurrentLevel == VideoCollectionCommon::ELevelDefaultColl)
         {
-            if (VideoCollectionCommon::EModelTypeCollectionContent == mModel->getType())
-            {
-                mNavKeyAction = new HbAction(Hb::BackNaviAction);
-                mNavKeyAction->setObjectName(LIST_WIDGET_OBJECT_NAME_NAV_KEY_BACK);
-            }
-            else
-            {
-                mNavKeyAction = new HbAction(Hb::QuitNaviAction);
-                mNavKeyAction->setObjectName(LIST_WIDGET_OBJECT_NAME_NAV_KEY_QUIT);
-            }
+            navAction = Hb::BackNaviAction; 
+            objectName = LIST_WIDGET_OBJECT_NAME_NAV_KEY_BACK;
         }
+        mNavKeyAction = new HbAction(navAction);
+        mNavKeyAction->setObjectName(LIST_WIDGET_OBJECT_NAME_NAV_KEY_BACK);       
     }
         
     // Set navigation action only when widget is not in selection mode
@@ -457,6 +431,10 @@
                 mContextMenu->addAction(hbTrId("txt_videos_menu_attach"), this, SLOT(openItemSlot()));
         mContextMenuActions[EActionAttach]->setObjectName(LIST_WIDGET_OBJECT_NAME_ACTION_ATTACH);
         
+        mContextMenuActions[EActionOpen]   = 
+                                    mContextMenu->addAction(hbTrId("txt_common_menu_open"), this, SLOT(openItemSlot()));
+        mContextMenuActions[EActionOpen]->setObjectName(LIST_WIDGET_OBJECT_NAME_ACTION_OPEN);
+        
         mContextMenuActions[EActionPlay]    = 
                 mContextMenu->addAction(hbTrId("txt_videos_menu_play"), this, SLOT(playItemSlot()));
         mContextMenuActions[EActionPlay]->setObjectName(LIST_WIDGET_OBJECT_NAME_ACTION_PLAY);
@@ -552,25 +530,17 @@
     	return;
     }
 
-    if (isBrowsingService())
+    if (mVideoServices)
     {
-        setBrowsingServiceContextMenu();
+        setServiceContextMenu();
         return;
     }
-    
 
     if(mCurrentLevel == VideoCollectionCommon::ELevelVideos ||
        mCurrentLevel == VideoCollectionCommon::ELevelDefaultColl)
     {        
-    	if (!mIsService)
-    	{
-			mContextMenuActions[EActionAddToCollection]->setVisible(true);
-    		mContextMenuActions[EActionDelete]->setVisible(true);
-    	} 
-    	else 
-    	{
-            mContextMenuActions[EActionAttach]->setVisible(true);
-    	}
+    	mContextMenuActions[EActionAddToCollection]->setVisible(true);
+    	mContextMenuActions[EActionDelete]->setVisible(true);
     	mContextMenuActions[EActionPlay]->setVisible(true);
 		mContextMenuActions[EActionDetails]->setVisible(true);
     }
@@ -578,7 +548,7 @@
     {
         mContextMenuActions[EActionOpen]->setVisible(true);
         TMPXItemId mpxId = mModel->getMediaIdAtIndex(currentIndex());
-		if(!mIsService && mpxId.iId2 == KVcxMvcMediaTypeAlbum)
+		if(mpxId.iId2 == KVcxMvcMediaTypeAlbum)
 		{
             mContextMenuActions[EActionRename]->setVisible(true);
             mContextMenuActions[EActionRemoveCollection]->setVisible(true);
@@ -586,28 +556,38 @@
     }
     else if(mCurrentLevel == VideoCollectionCommon::ELevelAlbum)
     {
-    	if (!mIsService)
-    	{
-			mContextMenuActions[EActionRemove]->setVisible(true);
-            mContextMenuActions[EActionDelete]->setVisible(true);
-        } else {
-            mContextMenuActions[EActionAttach]->setVisible(true);
-        }
+    	mContextMenuActions[EActionRemove]->setVisible(true);
+        mContextMenuActions[EActionDelete]->setVisible(true);
     	mContextMenuActions[EActionPlay]->setVisible(true);
 		mContextMenuActions[EActionDetails]->setVisible(true);
     }
 }
 
 // ---------------------------------------------------------------------------
-// setBrowsingServiceContextMenu
+// setServiceContextMenu
 // ---------------------------------------------------------------------------
 //
-void VideoListWidget::setBrowsingServiceContextMenu()
+void VideoListWidget::setServiceContextMenu()
 {
     FUNC_LOG_ADDR(this);
-    mContextMenuActions[EActionPlay]->setVisible(true);
-    mContextMenuActions[EActionDelete]->setVisible(true);
-    mContextMenuActions[EActionDetails]->setVisible(true);
+    
+    if(mCurrentLevel == VideoCollectionCommon::ELevelCategory) 
+    {
+        mContextMenuActions[EActionOpen]->setVisible(true);   
+    } 
+    else if(mCurrentLevel > VideoCollectionCommon::ELevelCategory)
+    {        
+        mContextMenuActions[EActionDetails]->setVisible(true);
+        mContextMenuActions[EActionPlay]->setVisible(true);
+        if(mService == VideoServices::EBrowse)
+        {            
+            mContextMenuActions[EActionDelete]->setVisible(true);
+        }
+        else if(mService == VideoServices::EUriFetcher)
+        {
+            mContextMenuActions[EActionAttach]->setVisible(true);
+        }
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -653,8 +633,7 @@
 //
 void VideoListWidget::doEmitActivated (const QModelIndex &index)
 {
-    if(mIsService &&
-       mVideoServices &&
+    if(mVideoServices &&
        mService == VideoServices::EUriFetcher &&
        mCurrentLevel != VideoCollectionCommon::ELevelCategory)
     {
@@ -691,7 +670,7 @@
             // signal view that item has been activated
             emit(collectionOpened(true,
                 variant.toString(),
-                index));                       
+                mModel->getMediaIdAtIndex(index)));                       
         }
         return;
     }
@@ -958,7 +937,20 @@
     {
     	// Empty the proxy model causing the items to be removed from list widget.
         mModel->setAlbumInUse(TMPXItemId::InvalidId());
-		emit collectionOpened(false, QString(), QModelIndex());
+		emit collectionOpened(false, QString(), TMPXItemId::InvalidId());
+    }
+}
+
+// ---------------------------------------------------------------------------
+// endVideoFecthingSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListWidget::endVideoFecthingSlot()
+{
+    if(mVideoServices && mService == VideoServices::EUriFetcher)
+    {        
+        QString empty = "";
+        emit fileUri(empty);
     }
 }
 
--- a/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,6 +15,9 @@
 *
 */
 
+#include "xqplugin.h"
+#include "xqserviceutilstub.h"
+#include "xqserviceproviderstub.h"
 #include "xqserviceutilxtra.h"
 
 #include <hbaction.h>
@@ -117,9 +120,9 @@
 //
 void TestCollectionView::cleanup()
 {
-    HbMainWindow *window = hbInstance->allMainWindows().value(0);
-    if (window)
+    if(hbInstance->allMainWindows().count() > 0)
     {
+        HbMainWindow *window = hbInstance->allMainWindows().at(0);
         QList<HbView*> views = window->views(); 
         int count = views.count();
         for (int i = 0; i < count; i++)
--- a/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h	Thu Jun 24 09:49:13 2010 +0300
@@ -45,6 +45,7 @@
     void testDeactivate();
     void testUpdateUiComponents();
     void testOrientationChangedSlot();
+    void testSetButtonShown();
 
 signals:
     
--- a/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -203,19 +203,22 @@
     mTestObject->mServiceIconString = QString();
     mTestObject->activate();
     QVERIFY(mTestObject->mServiceIcon == 0);
-    QVERIFY(mTestObject->isVisible() == false);
-    QVERIFY(mTestObject->mActivated == false);
+    QVERIFY(mTestObject->isVisible() == true);
+    QVERIFY(mTestObject->mActivated == true);
     
     // mServiceIconPressedString empty.
     mTestObject->mServiceIconString = "test";
     mTestObject->mServiceIconPressedString = QString();
     mTestObject->activate();
     QVERIFY(mTestObject->mServiceIcon == 0);
-    QVERIFY(mTestObject->isVisible() == false);
-    QVERIFY(mTestObject->mActivated == false);
+    QVERIFY(mTestObject->isVisible() == true);
+    QVERIFY(mTestObject->mActivated == true);
     
     // successful case.
-    mTestObject->mServiceIconPressedString = "test2";
+    mTestObject->mActivated = false;
+    mTestObject->mServiceIconString = "qtg_mono_ovistore";
+    mTestObject->mServiceIconPressedString = "qtg_mono_ovistore";
+
     HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
     QVERIFY(noVideosLabel);
     noVideosLabel->setVisible(false);
@@ -245,7 +248,6 @@
     
     // when serviceButton does not exist
     mTestObject->mServiceIcon = 0;
-    mTestObject->mAddVideosIcon = 0;
     HbDocumentLoader::mFindWidgetFails = true;
     mTestObject->deactivate();
     QVERIFY(mTestObject->mActivated == false);
@@ -266,17 +268,14 @@
     // when icons are non-null, but widget is not activated.
     mTestObject->setVisible(true);
     mTestObject->mServiceIcon = new HbIcon;
-    mTestObject->mAddVideosIcon = new HbIcon;
     mTestObject->deactivate();
     QVERIFY(mTestObject->mServiceIcon != 0);
-    QVERIFY(mTestObject->mAddVideosIcon != 0);
     QVERIFY(mTestObject->isVisible() == true);
     
     // when icons are non-null and widget is activated.
     mTestObject->mActivated = true;
     mTestObject->deactivate();
     QVERIFY(mTestObject->mServiceIcon == 0);
-    QVERIFY(mTestObject->mAddVideosIcon == 0);
     QVERIFY(mTestObject->isVisible() == false);
     
     cleanup();
@@ -294,7 +293,6 @@
     init(true);
     
     mTestObject->mServiceIcon = new HbIcon(QIcon(QPixmap(QSize(100,100))));
-    mTestObject->mAddVideosIcon = new HbIcon(QIcon(QPixmap(QSize(50,50))));
     mTestObject->mActivated = true;
     
     HbDocumentLoader::mFindWidgetFails = true;
@@ -318,9 +316,8 @@
     mainWnd->setOrientation(Qt::Horizontal);
     mTestObject->mButtonShown = true;
     mTestObject->setLevel(VideoHintWidget::Collection);
-    QVERIFY(serviceButton->isVisible());
+    QVERIFY(!serviceButton->isVisible());
     QVERIFY(serviceButton->icon().isNull() == false);
-    QVERIFY(serviceButton->icon().qicon().cacheKey() == mTestObject->mAddVideosIcon->qicon().cacheKey());    
     QVERIFY(hintLabel->isVisible() == false);
     
     mTestObject->mButtonShown = false;
@@ -379,4 +376,28 @@
     cleanup();
 }
 
+// ---------------------------------------------------------------------------
+// testSetButtonShown
+// ---------------------------------------------------------------------------
+//
+void TestHintWidget::testSetButtonShown()
+{
+    HbMainWindow *mainWnd = hbInstance->allMainWindows()[0];
+    
+    init(true);
+    
+    HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
+    QVERIFY(noVideosLabel);
+    
+    mTestObject->mActivated = true;
+    noVideosLabel->setVisible(false);
+    mTestObject->setButtonShown(true);
+    QVERIFY(noVideosLabel->isVisible());
+    
+    mTestObject->mActivated = false;
+    noVideosLabel->setVisible(false);
+    mTestObject->setButtonShown(false);
+    QVERIFY(noVideosLabel->isVisible() == false);
+}
+
 // end of file
--- a/videocollection/videocollectionview/tsrc/testlistview/inc/testlistview.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistview/inc/testlistview.h	Thu Jun 24 09:49:13 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   tester for methods in VideoSortFilterProxyModel
+* Description:   tester for methods in VideoListView
 * 
 */
 
--- a/videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 46 %
+// Version : %version: 48 %
 
 #define private public
 #include "videoservices.h"
@@ -97,7 +97,7 @@
 // init
 // ---------------------------------------------------------------------------
 //
-void TestListView::init(bool initTestView)
+void TestListView::init(bool initTestView )
 {
     XQServiceUtilXtra::service = false;
 	mUiLoader = new VideoCollectionUiLoader();
@@ -177,7 +177,8 @@
         {
             if (!mTestView->mCurrentList)
             {
-                mTestView->activateView(TMPXItemId::InvalidId());
+                TMPXItemId tmpId = TMPXItemId::InvalidId();
+                mTestView->activateView(tmpId);
             }
             model = mTestView->mCurrentList->mModel;
         }
@@ -265,23 +266,21 @@
 	mTestView->mUiLoader = 0;
 	QVERIFY( mTestView->initializeView() < 0 );	
 	QVERIFY( mTestView->mVideoServices == 0 );
-	QVERIFY( mTestView->mIsService == false );
 	mTestView->mUiLoader = tmp;
 	
 	// service flag is false and mVideoServices is != 0
-	mTestView->mIsService = false;
 	XQServiceUtilXtra::service = false;
-	mTestView->mVideoServices = VideoServices::instance();
+	VideoServices *tmpService = VideoServices::instance(); 
+	mTestView->mVideoServices = tmpService;
 	QVERIFY( mTestView->initializeView() == 0 );    
-    QVERIFY( mTestView->mVideoServices != 0 );
-    QVERIFY( mTestView->mIsService == false );
-	
-    // servicve flag is true, mVideoServices is 0
+    QVERIFY( mTestView->mVideoServices == 0 );
+    tmpService->decreaseReferenceCount();
+    
+    // service flag is true, mVideoServices is 0
     mTestView->mVideoServices = 0;
     XQServiceUtilXtra::service = true;
     QVERIFY( mTestView->initializeView() == 0 );    
     QVERIFY( mTestView->mVideoServices != 0 );
-    QVERIFY( mTestView->mIsService == true );
     XQServiceUtilXtra::service = false;
     
 	cleanup();	
@@ -294,7 +293,8 @@
 void TestListView::testMenus()
 {
     init();
-    mTestView->activateView(TMPXItemId::InvalidId());
+    TMPXItemId tmpId = TMPXItemId::InvalidId();
+    mTestView->activateView(tmpId);
 
     HbAction* action = 0;
     QList<QAction*> tbActions = mTestView->toolBar()->actions();
@@ -394,7 +394,8 @@
 void TestListView::testCreateAction()
 {
 	init();
-	mTestView->activateView(TMPXItemId::InvalidId());
+	TMPXItemId tmpId = TMPXItemId::InvalidId();
+	mTestView->activateView(tmpId);
 
 	QVERIFY(mTestView->mToolbarViewsActionGroup != 0);
 
@@ -435,7 +436,7 @@
 void TestListView::testActivateView()
 {
     VideoListWidget* videoListWidget = 0;
-    
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
 	init();
 	
 	HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
@@ -443,7 +444,7 @@
     VideoListWidget *backup = mTestView->mCurrentList;
 	mTestView->mCurrentList = 0;
 	HbDocumentLoader::mFindWidgetFails = true;
-	QCOMPARE( mTestView->activateView(TMPXItemId::InvalidId()), -1	);
+	QCOMPARE( mTestView->activateView(invalidId), -1	);
     QVERIFY( VideoListWidgetData::mActive == false );
     QVERIFY( mTestView->mCurrentList == 0 );
     QCOMPARE( VideoListWidgetData::mActivateCount, 0 );
@@ -455,21 +456,21 @@
     videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
     QVERIFY(videoListWidget);
 	VideoListWidgetData::mActivateReturnValue =	-1;
-	QCOMPARE( mTestView->activateView(TMPXItemId::InvalidId()), -1	);
+	QCOMPARE( mTestView->activateView(invalidId), -1	);
 	QVERIFY( VideoListWidgetData::mActive == false );
 	QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
 	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
     QVERIFY( mainWnd->mOrientationSet == false );
 
 	VideoListWidgetData::mActivateReturnValue =	0;
-	QCOMPARE( mTestView->activateView(TMPXItemId::InvalidId()), 0 );
+	QCOMPARE( mTestView->activateView(invalidId), 0 );
 	QVERIFY( VideoListWidgetData::mActive );
 	QCOMPARE( VideoListWidgetData::mActivateCount, 2 );
 	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
     QVERIFY( mainWnd->mOrientationSet );
     QCOMPARE( mainWnd->mOrientation, Qt::Vertical );
 
-	QCOMPARE( mTestView->activateView(TMPXItemId::InvalidId()), 0 );
+	QCOMPARE( mTestView->activateView(invalidId), 0 );
 	QVERIFY( VideoListWidgetData::mActive );
 	QCOMPARE( VideoListWidgetData::mActivateCount, 3 );
 	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
@@ -478,8 +479,7 @@
     
     cleanup();
 
-    // activate view:
-    // -browse service
+    // activate collection content view:
     // -captured category
     TMPXItemId itemId = TMPXItemId::InvalidId();
     init();
@@ -493,12 +493,9 @@
     QCOMPARE(mTestView->mCollectionName, hbTrId("txt_videos_dblist_captured"));
     QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelDefaultColl);
     QCOMPARE(VideoSortFilterProxyModelData::mLastItemId, itemId);
-    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime);
-    QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
     cleanup();
     
-    // activate view:
-    // -browse service
+    // activate collection content view::
     // -downloaded category
     init();
     VideoListWidgetData::reset();
@@ -511,12 +508,9 @@
     QCOMPARE(mTestView->mCollectionName, hbTrId("txt_videos_dblist_downloaded"));
     QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelDefaultColl);
     QCOMPARE(VideoSortFilterProxyModelData::mLastItemId, itemId);
-    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime);
-    QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
     cleanup();
 
-    // activate view:
-    // -browse service
+    // activate collection content view:
     // -other category
     init();
     videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
@@ -524,27 +518,28 @@
     VideoSortFilterProxyModelData::reset();
     itemId.iId1 = KVcxMvcCategoryIdOther;
     itemId.iId2 = KVcxMvcMediaTypeCategory;
-    QCOMPARE(mTestView->activateView(itemId), 0);
-    QVERIFY(VideoListWidgetData::mActive);
-    QCOMPARE(VideoListWidgetData::mActivateCount, 1);
+    QCOMPARE(mTestView->activateView(itemId), -1);
+    QVERIFY(VideoListWidgetData::mActive == false);
+    QCOMPARE(VideoListWidgetData::mActivateCount, 0);
     QCOMPARE(mTestView->mCollectionName.length(), 0);
-    //QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelVideos);
+    // for not activated widget, defaultlevel is ELevelVideos 
+    QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelVideos);
     QCOMPARE(VideoSortFilterProxyModelData::mLastItemId, TMPXItemId::InvalidId());
     cleanup();
 
-    // activate view:
-    // -browse service
+    // activate collection content view:
     // -invalid category but item id is ok
     init();
     VideoListWidgetData::reset();
     VideoSortFilterProxyModelData::reset();
     itemId.iId1 = 0;
     itemId.iId2 = KVcxMvcMediaTypeVideo;
-    QCOMPARE(mTestView->activateView(itemId), 0);
-    QVERIFY(VideoListWidgetData::mActive);
-    QCOMPARE(VideoListWidgetData::mActivateCount, 1);
+    QCOMPARE(mTestView->activateView(itemId), -1);
+    QVERIFY(VideoListWidgetData::mActive == false);
+    QCOMPARE(VideoListWidgetData::mActivateCount, 0);
     QCOMPARE(mTestView->mCollectionName.length(), 0);
-//    QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelVideos);
+    // for not activated widget, defaultlevel is ELevelVideos 
+    QCOMPARE(mTestView->mCurrentList->getLevel(), VideoCollectionCommon::ELevelVideos);
     QCOMPARE(VideoSortFilterProxyModelData::mLastItemId, TMPXItemId::InvalidId());
     cleanup();
 
@@ -664,7 +659,7 @@
 void TestListView::testDeactivateView()
 {
     VideoListWidget* videoListWidget = 0;
-
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
     init();
 
     HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
@@ -689,7 +684,7 @@
 
 	VideoListWidgetData::mActivateReturnValue =	0;
     mainWnd->mOrientationSet = true;
-	mTestView->activateView(TMPXItemId::InvalidId());
+	mTestView->activateView(invalidId);
 	mTestView->deactivateView();
 	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
 	QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
@@ -720,9 +715,9 @@
 {
     VideoListWidget *videoListWidget = 0;
     HbGroupBox *subLabel = 0;
-    
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
 	init();
-	mTestView->activateView(TMPXItemId::InvalidId());
+	mTestView->activateView(invalidId);
 	
     videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
     QVERIFY( videoListWidget );
@@ -760,9 +755,9 @@
 {
     VideoListWidget *collectionWidget = 0;
     HbGroupBox *subLabel = 0;
-
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
     init();
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
 
 	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
 	HbAction* action = static_cast<HbAction*>(actions.at(1));
@@ -827,9 +822,10 @@
     QCOMPARE(VideoSortFilterProxyModelData::mSortRole, -1);
     cleanup();
 
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
     // Active action is not sort by.
     init();
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     action = mUiLoader->findObject<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
     QVERIFY(action != 0);
     mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(action);
@@ -844,7 +840,7 @@
 
 	// Good	cases.
 	init();
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
     sortMenuAction->setMenu(sortMenu);
     HbMenuData::mMenuAction = sortMenuAction;
@@ -864,22 +860,27 @@
 
 	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
 	emit testSignal(0);
-	QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 1);
+	// since current list is videolist, sorting count is 2 because both all videos and collection content are sorted
+	QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 2);
 	QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle);
 	QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
     QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
 
+    VideoSortFilterProxyModelData::mDoSortingCallCount = 0;
     // emit test signal again, with same parameters. Sorting should be switched to
     // descending order.
     emit testSignal(0);
+    // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted
     QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 2);
     QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle);
     QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::DescendingOrder);
     QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
 
+    VideoSortFilterProxyModelData::mDoSortingCallCount = 0;
     // on third emit, sorting should be switched back to ascending
     emit testSignal(0);
-    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 3);
+    // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 2);
     QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle);
     QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
     QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
@@ -889,9 +890,10 @@
     sortAction = mUiLoader->findObject<HbAction>(DOCML_NAME_SORT_BY_DATE);
     QVERIFY(sortAction != 0);
     sortMenu->setActiveAction(sortAction);
-
+    VideoSortFilterProxyModelData::mDoSortingCallCount = 0;
     emit testSignal(0);
-    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 5);
+    // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 2);
     QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime);
     QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
     QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
@@ -911,7 +913,7 @@
 	XQServiceUtilXtra *serviceUtilXtra = XQServiceUtilXtra::instance();
 	serviceUtilXtra->setCurrentService(true);
 	QCOMPARE(mTestView->initializeView(), 0);
-	QCOMPARE(mTestView->activateView(TMPXItemId::InvalidId()), 0);
+	QCOMPARE(mTestView->activateView(invalidId), 0);
 	int sortRole = VideoCollectionViewUtilsData::mVideoSortRole;
 	emit testSignal(0);
 	QCOMPARE(sortRole, VideoCollectionViewUtilsData::mVideoSortRole);
@@ -1012,11 +1014,11 @@
 	cleanup();
 
 	HbAction *action(0);
-
+	TMPXItemId invalidId = TMPXItemId::InvalidId();
 	// Collections is triggered	from toolbar.
 	init();
 	connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-	mTestView->activateView(TMPXItemId::InvalidId());
+	mTestView->activateView(invalidId);
 	setRowCount(1);
 	action = mTestView->mToolbarActions[VideoListView::ETBActionCollections];
 	QVERIFY(action != 0);
@@ -1030,7 +1032,7 @@
 	// All videos is triggered from	toolbar.
 	init();
     connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     setRowCount(1);
 	action = mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
 	QVERIFY(action != 0);
@@ -1044,7 +1046,7 @@
 	// Add videos action is	visible.
 	init();
     connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
 	mTestView->toolBar()->clearActions();
 	mTestView->toolBar()->addActions( mTestView->mToolbarCollectionActionGroup->actions() );
 	setRowCount(1);
@@ -1057,7 +1059,7 @@
 	// Model has no	items.
 	init();
     connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
 	setRowCount(0);
     emit testSignal();
 	visible = visibleMenuActions();
@@ -1067,7 +1069,7 @@
 	// Toolbar action group	is null
 	init();
     connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
 	setRowCount(1);
 	QActionGroup* actionGroup =	mTestView->mToolbarViewsActionGroup;
 	mTestView->mToolbarViewsActionGroup = NULL;
@@ -1096,7 +1098,7 @@
     videoServices->mCurrentService = VideoServices::EBrowse;
     init(true);
     connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     emit testSignal();
     visible = visibleMenuActions();
     QCOMPARE(visible, 0);
@@ -1109,7 +1111,7 @@
     videoServices->mCurrentService = VideoServices::EBrowse;
 	init(true);
 	connect(this, SIGNAL(testSignal()), mTestView, SLOT(aboutToShowMainMenuSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     setRowCount(3, mTestView->mCurrentList->getModel());
     emit testSignal();
     QVERIFY(isActionVisible(DOCML_NAME_DELETE_MULTIPLE));
@@ -1289,13 +1291,14 @@
 //
 void TestListView::testShowHint()
 {
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
     init(false);
     connect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
     mTestView->mModelReady = true;
     
     // current list is null. (cannot be verified, run for coverity    
     emit testLayoutChangedSignal();   
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     disconnect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
     
     cleanup();
@@ -1353,7 +1356,7 @@
     
     ////////
     // toolbar setup
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos]->setVisible(true);
 
     // mToolbarViewsActionGroup is null
@@ -1370,11 +1373,13 @@
     QVERIFY(mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos]->isVisible());
     mTestView->mToolbarCollectionActionGroup = tmp;
     
-    // mIsService is true
-    mTestView->mIsService = true;
+    // mVideoServices exists
+    VideoServices *tmpService = VideoServices::instance(); 
+    mTestView->mVideoServices = tmpService;
     emit testLayoutChangedSignal();    
     QVERIFY(mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos]->isVisible());
-    mTestView->mIsService = false;
+    mTestView->mVideoServices = 0;
+    tmpService->decreaseReferenceCount();
     
     // show -flag is true, currentlist level != VideoCollectionCommon::ELevelDefaultColl
     mTestView->mCurrentList->activate(VideoCollectionCommon::ELevelAlbum);
@@ -1534,6 +1539,7 @@
     init(false);
     QVERIFY(connect(this, SIGNAL(testSignal()), mTestView, SLOT(addVideosToCollectionSlot())));
 
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
     VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId(0, 2);
     
     // Not initalized, no mCurrentList
@@ -1543,7 +1549,7 @@
     QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0);
     
     QVERIFY(mTestView->initializeView() == 0);
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     
     // Selection dialog widget loading fails.
     VideoCollectionUiLoaderData::mFindFailure = true;
@@ -1611,7 +1617,7 @@
     QVERIFY(connect(this, SIGNAL(testSignal2()), mTestView, SLOT(openCollectionViewSlot())));
     emit testSignal2();
     disconnect(this, SIGNAL(testSignal2()), mTestView, SLOT(openCollectionViewSlot()));
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     VideoListDataModelData::mRowCountDecrement = 1;
     mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
     setRowCount(1);
@@ -1643,8 +1649,10 @@
     // Not initialized, no current list
     emit testSignal();
     
+    TMPXItemId invalidId = TMPXItemId::InvalidId();
+    
     QVERIFY(mTestView->initializeView() == 0);
-    mTestView->activateView(TMPXItemId::InvalidId());
+    mTestView->activateView(invalidId);
     setRowCount(1);
     
     // Wrong level.
--- a/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 52 %
+// Version : %version: 56 %
 
 #include <qmap.h>
 #include <vcxmyvideosdefs.h>
@@ -147,6 +147,7 @@
 void TestListWidget::initTestCase()
 {
     qRegisterMetaType<QModelIndex>("QModelIndex");
+    qRegisterMetaType<TMPXItemId>("TMPXItemId");
 }
 
 // ---------------------------------------------------------------------------
@@ -188,7 +189,7 @@
 }
  
 // ---------------------------------------------------------------------------
-// testInitialize
+// testInitialized
 // ---------------------------------------------------------------------------
 //
 void TestListWidget::testInitialize()
@@ -200,14 +201,12 @@
     QVERIFY(mTestWidget->initialize(*model) == 0);
 	QVERIFY(mTestWidget->mModel == model);  
 	QVERIFY(mTestWidget->mVideoServices == 0);
-	QVERIFY(mTestWidget->mIsService == false);
 	
 	// service initialization
 	VideoServices *service = VideoServices::instance();
-    QVERIFY(mTestWidget->initialize(*model, service) == 0);
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
     QVERIFY(mTestWidget->mModel == model);  
     QVERIFY(mTestWidget->mVideoServices == service);
-    QVERIFY(mTestWidget->mIsService == true);
     service->decreaseReferenceCount();
     service = 0;
 	
@@ -228,20 +227,25 @@
     QCOMPARE(HbListView::mLatestVisibility, false);
     QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0);
     
-    // model exist, no current view default level: succeeds
+    // model exist, no current view default level: fails
     QVERIFY(mTestWidget->initialize(*model) == 0);
-    QVERIFY(mTestWidget->activate() == 0);
+    QVERIFY(mTestWidget->activate() == -1);
     QCOMPARE(HbMenuData::mEnabledSetted, false);
-    QCOMPARE(HbListView::mLatestVisibility, true);
-    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QCOMPARE(HbListView::mLatestVisibility, false);
+    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0);
     
     HbMenuData::mEnabledSetted = true;
     HbListView::mLatestVisibility = false;
     HbListView::mLatestEnableValue = false;
     VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
-    
+    HbView *tmpView = new HbView();
     // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl 
-    HbView *tmpView = new HbView();
+    delete mTestWidget;
+    mTestWidget = 0;
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
+    model = wrapper.getModel(VideoCollectionCommon::EModelTypeAllVideos);
+    
+    QVERIFY(mTestWidget->initialize(*model, 0, VideoCollectionCommon::ELevelVideos) == 0);
     hbInstance->allMainWindows().value(0)->addView(tmpView);
     QVERIFY(mTestWidget->activate() == 0);
     QCOMPARE(HbMenuData::mEnabledSetted, true);
@@ -277,16 +281,42 @@
     // activate:
     // -is service
     // -current service is browse
-    VideoServices *videoServices = VideoServices::instance();
+    VideoServices *videoServices = VideoServices::instance();    
+    delete mTestWidget;
+    mTestWidget = 0;
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
     videoServices->mCurrentService = VideoServices::EBrowse;
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelDefaultColl) == 0);
+    QVERIFY(mTestWidget->mNavKeyAction);
+    QVERIFY(HbAction::mNavAction == Hb::BackAction);    
+    
+    // activate:
+    // -is service
+    // -current service is fetch
+    // -activating all videos
     delete mTestWidget;
     mTestWidget = 0;
     mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
-    QVERIFY(mTestWidget->initialize(*model, videoServices) == 0);
-    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelDefaultColl) == 0);
+    videoServices->mCurrentService = VideoServices::EUriFetcher;
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelVideos) == 0);
     QVERIFY(mTestWidget->mNavKeyAction);
     QVERIFY(HbAction::mNavAction == Hb::QuitAction);
     
+    // activate:
+    // -is service
+    // -current service is fetch
+    // -activating album
+    delete mTestWidget;
+    mTestWidget = 0;
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
+    videoServices->mCurrentService = VideoServices::EUriFetcher;
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0);
+    QVERIFY(mTestWidget->mNavKeyAction);
+    QVERIFY(HbAction::mNavAction == Hb::BackAction);
+    
     hbInstance->allMainWindows().value(0)->removeView(tmpView);
     delete tmpView;
     
@@ -387,7 +417,7 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionCommon::EModelTypeAllVideos);
 
-    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)));
+    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const TMPXItemId&)));
     QSignalSpy spysignalFileUri(mTestWidget, SIGNAL(fileUri(const QString&)));
     QSignalSpy spysignalActivated(mTestWidget, SIGNAL(activated(const QModelIndex&)));
     
@@ -451,11 +481,10 @@
     spysignalActivated.clear();
     
     // current level is not ELevelCategory
-    // mIsService is true, variant gotten is invalid
+    // mVideoServices exist, variant gotten is invalid
     mTestWidget->mService = VideoServices::EUriFetcher;
     VideoListDataModelData::setData(VideoCollectionCommon::KeyTitle, QVariant());
     mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
-    mTestWidget->mIsService = true;
     mTestWidget->mVideoServices = videoServices;
     fetchIndex = model->index(5, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
@@ -465,7 +494,7 @@
     QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
     
     // current level is not ELevelCategory
-    // mIsService is true, variant gotten is valid
+    // mVideoServices, variant gotten is valid
     mTestWidget->mService = VideoServices::EUriFetcher;
     VideoListDataModelData::setData(VideoCollectionCommon::KeyFilePath, data);
     fetchIndex = model->index(0, 0, QModelIndex());
@@ -480,8 +509,8 @@
     spysignalActivated.clear();
     
     // current level is not ELevelCategory
-    // mIsService is false
-    mTestWidget->mIsService = false;
+    // mVideoServices does not exists
+    mTestWidget->mVideoServices = 0;
     fetchIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
@@ -563,24 +592,26 @@
     QVERIFY(HbMenuData::mExecPoint != point);
     mTestWidget->mModel = tmp;
     
-    // gotten id != KVcxMvcMediaTypeVideo, service is true and id != KVcxMvcMediaTypeAlbum
+    VideoServices *videoServices = VideoServices::instance();
+    
+    // gotten id != KVcxMvcMediaTypeVideo, service exists true and id != KVcxMvcMediaTypeAlbum
     VideoSortFilterProxyModelData::mItemIds.clear();
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1));
-    mTestWidget->mIsService = true;
+    mTestWidget->mVideoServices = videoServices;
     mTestWidget->callLongPressedSlot(item, point);
     QVERIFY(HbMenuData::mExecPoint == point);
     
-    // gotten id != KVcxMvcMediaTypeVideo, service is false and id !=  KVcxMvcMediaTypeAlbum
+    // gotten id != KVcxMvcMediaTypeVideo, service does not exists and id !=  KVcxMvcMediaTypeAlbum
     VideoSortFilterProxyModelData::mItemIds.clear();
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1));
-    mTestWidget->mIsService = false;
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     QVERIFY(HbMenuData::mExecPoint == point);
     
-    // gotten id != KVcxMvcMediaTypeVideo, service is false and id ==  KVcxMvcMediaTypeAlbum
+    // gotten id != KVcxMvcMediaTypeVideo, service service does not exists and id ==  KVcxMvcMediaTypeAlbum
     VideoSortFilterProxyModelData::mItemIds.clear();
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,2));
-    mTestWidget->mIsService = false;
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     QVERIFY(HbMenuData::mExecPoint == point);
     HbMenuData::mExecPoint = QPointF();
@@ -588,7 +619,7 @@
     // gotten id == KVcxMvcMediaTypeVideo
     VideoSortFilterProxyModelData::mItemIds.clear();
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,02));
-    mTestWidget->mIsService = false;
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     QVERIFY(HbMenuData::mExecPoint == point);
     HbMenuData::mExecPoint = QPointF();
@@ -607,12 +638,11 @@
     // -is service
     // -current service is browse
     HbMenuData::mExecPoint = QPointF();
-    VideoServices *videoServices = VideoServices::instance();
     videoServices->mCurrentService = VideoServices::EBrowse;
     delete mTestWidget;
     mTestWidget = 0;
     mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
-    QVERIFY(mTestWidget->initialize(*model, videoServices) == 0);
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
     QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelDefaultColl) == 0);
     mTestWidget->mItem->mModelIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callLongPressedSlot(item, point);
@@ -622,19 +652,61 @@
     QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionDetails]->isVisible());
     
     // long press gesture:
-    // -is service
-    // -current service is EUriFetcher
+    // - is service
+    // - current service is EUriFetcher
+    // - category view activated
     HbMenuData::mExecPoint = QPointF();
     videoServices = VideoServices::instance();
     videoServices->mCurrentService = VideoServices::EUriFetcher;
     delete mTestWidget;
     mTestWidget = 0;
     mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
-    QVERIFY(mTestWidget->initialize(*model, videoServices) == 0);
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelCategory) == 0);
+    mTestWidget->mItem->mModelIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->callLongPressedSlot(item, point);
+    QCOMPARE(mTestWidget->mContextMenuActions.count(), 4);
+    QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionOpen]->isVisible()); 
+    QVERIFY(!mTestWidget->mContextMenuActions[VideoListWidget::EActionAttach]->isVisible());    
+    QVERIFY(!mTestWidget->mContextMenuActions[VideoListWidget::EActionPlay]->isVisible());    
+    QVERIFY(!mTestWidget->mContextMenuActions[VideoListWidget::EActionDetails]->isVisible());
+    
+    // long press gesture:
+    // - is service
+    // - current service is EUriFetcher
+    // - user defined collection activated 
+    HbMenuData::mExecPoint = QPointF();
+    videoServices = VideoServices::instance();
+    videoServices->mCurrentService = VideoServices::EUriFetcher;
+    delete mTestWidget;
+    mTestWidget = 0;
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0);
+    mTestWidget->mItem->mModelIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->callLongPressedSlot(item, point);
+    QCOMPARE(mTestWidget->mContextMenuActions.count(), 4);
+    QVERIFY(!mTestWidget->mContextMenuActions[VideoListWidget::EActionOpen]->isVisible()); 
+    QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionAttach]->isVisible());    
+    QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionPlay]->isVisible());    
+    QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionDetails]->isVisible());
+    
+    // long press gesture:
+    // - is service
+    // - current service is EUriFetcher
+    // - default collection activated 
+    HbMenuData::mExecPoint = QPointF();
+    videoServices = VideoServices::instance();
+    videoServices->mCurrentService = VideoServices::EUriFetcher;
+    delete mTestWidget;
+    mTestWidget = 0;
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
+    QVERIFY(mTestWidget->initialize(*model, true) == 0);
     QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelDefaultColl) == 0);
     mTestWidget->mItem->mModelIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callLongPressedSlot(item, point);
-    QCOMPARE(mTestWidget->mContextMenuActions.count(), 3);
+    QCOMPARE(mTestWidget->mContextMenuActions.count(), 4);
+    QVERIFY(!mTestWidget->mContextMenuActions[VideoListWidget::EActionOpen]->isVisible()); 
     QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionAttach]->isVisible());    
     QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionPlay]->isVisible());    
     QVERIFY(mTestWidget->mContextMenuActions[VideoListWidget::EActionDetails]->isVisible());
@@ -659,7 +731,7 @@
     setRowCount(1);
     HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
     mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ;
-    
+     
     TMPXItemId itemId;
     QPointF point(1,1);
     itemId.iId2 = 0;
@@ -701,8 +773,8 @@
     
     // mCurrentLevel == ELevelCategory
     mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
-    // mIsService is false
-    mTestWidget->mIsService = false;
+    // service does not exist
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     iter = mTestWidget->mContextMenuActions.begin();
     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
@@ -717,8 +789,9 @@
     }
     QVERIFY(visibleCount == 1);
     
-    // mIsService is true, mpxId.iId2 != KVcxMvcMediaTypeAlbum
-    mTestWidget->mIsService = true;
+    VideoServices *videoServices = VideoServices::instance();
+    // service exists, mpxId.iId2 != KVcxMvcMediaTypeAlbum
+    mTestWidget->mVideoServices = videoServices;
     mTestWidget->callLongPressedSlot(item, point);
     iter = mTestWidget->mContextMenuActions.begin();
     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
@@ -733,12 +806,11 @@
     }
     QVERIFY(visibleCount == 1);
     
-    // mIsService is false, mpxId.iId2 == KVcxMvcMediaTypeAlbum
-    //VideoSortFilterProxyModelData::mItemIds.clear();
+    // service does not exists , mpxId.iId2 == KVcxMvcMediaTypeAlbum
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,KVcxMvcMediaTypeAlbum));
     HbListView::mCurrentIndex = model->index(1, 0, QModelIndex());
     item->mModelIndex = model->index(1, 0, QModelIndex());
-    mTestWidget->mIsService = false;
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     iter = mTestWidget->mContextMenuActions.begin();
     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
@@ -756,8 +828,8 @@
     
     // mCurrentLevel == ELevelAlbum
     mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
-    // mIsService is false
-    mTestWidget->mIsService = false;
+    // service does not exists
+    mTestWidget->mVideoServices = 0;
     mTestWidget->callLongPressedSlot(item, point);
     iter = mTestWidget->mContextMenuActions.begin();
     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
@@ -772,14 +844,13 @@
     }
     QVERIFY(visibleCount == 4);    
     
-    // mIsService is true
+    // service does exists
     // object needs to be resetted for the service use
     cleanup();
     init();
     setRowCount(1);
     model = wrapper.getModel(VideoCollectionCommon::EModelTypeAllVideos);
-    VideoServices *videoServices = VideoServices::instance();
-    mTestWidget->mIsService = true;
+    mTestWidget->mVideoServices = videoServices;
     videoServices->mCurrentService = VideoServices::EUriFetcher;
     mTestWidget->initialize(*model, videoServices);
     HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
@@ -817,6 +888,7 @@
         ++iter;
     }
     QVERIFY(visibleCount == 0);
+    videoServices->decreaseReferenceCount();
 }
 
 void TestListWidget::testDoDelayedsSlot()
@@ -1315,7 +1387,7 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionCommon::EModelTypeAllVideos);
 
-    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)));
+    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const TMPXItemId&)));
     connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(back()));
     // no model
     emit testSignal();        
--- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/inc/testvideocollectionviewutils.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/inc/testvideocollectionviewutils.h	Thu Jun 24 09:49:13 2010 +0300
@@ -81,9 +81,14 @@
     void testSortModel();
     
     /**
-     * verifies saveWidgetLevel & loadWidgetLevel
+     * verifies setWidgetLevel & getWidgetLevel
      */
-    void testSaveAndLoadWidgetLevel();
+    void testSetAndGetWidgetLevel();
+    
+    /**
+     * verifies setCollectionActivityData & getCollectionActivityData
+     */
+    void testSetAndGetCollectionActivityData();
 };
 
 
--- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -16,12 +16,14 @@
 */
 
 #include <qapplication.h>
+#include <vcxmyvideosdefs.h>
 #include "centralrepository.h"
 #include "testvideocollectionviewutils.h"
 #include "hblabel.h"
 #include "hbaction.h"
 #include "videocollectionwrapper.h"
 #include "videosortfilterproxymodeldata.h"
+#include "videoactivitystate.h"
 #include "videocollectioncommon.h"
 #include "centralrepository.h"
 #include "hbmessageboxdata.h"
@@ -35,10 +37,17 @@
 #undef private
 
 // following consts are copied from videocollectionviewutils.cpp
-const int KVideoSortingRoleKey(0x5);
-const int KVideoSortingOrderKey(0x6);
-const int KCollectionsSortingRoleKey(0x7);
-const int KCollectionsSortingOrderKey(0x8);
+const int KVideoSortingRoleKey(0x1);
+const int KVideoSortingOrderKey(0x2);
+const int KCollectionsSortingRoleKey(0x3);
+const int KCollectionsSortingOrderKey(0x4);
+static const QString KEY_WIDGET_LEVEL    = "_VideoActivity_widget_level_";
+
+// id of the collection whose videolist is to be shown (int).
+static const QString KEY_COLLECTION_ID   = "_VideoActivity_collection_id_";
+
+// name of the collection whose videolist is to be shown (QString)
+static const QString KEY_COLLECTION_NAME = "_VideoActivity_collection_name_";
 
 // ---------------------------------------------------------------------------
 // main
@@ -626,6 +635,10 @@
 
 }
 
+// -----------------------------------------------------------------------------
+// testSortModel
+// -----------------------------------------------------------------------------
+//
 void TestVideoVideoCollectionViewUtils::testSortModel()
 {
     VideoCollectionViewUtils &testObject(VideoCollectionViewUtils::instance());
@@ -697,7 +710,11 @@
     QVERIFY(testObject.mCollectionsSortOrder == Qt::DescendingOrder);
 }
 
-void TestVideoVideoCollectionViewUtils::testSaveAndLoadWidgetLevel()
+// -----------------------------------------------------------------------------
+// testSetAndGetWidgetLevel
+// -----------------------------------------------------------------------------
+//
+void TestVideoVideoCollectionViewUtils::testSetAndGetWidgetLevel()
 {
     static const char* ACTIVITY_VIDEOS_MAINVIEW = "VideosMainView";
     
@@ -705,15 +722,78 @@
     
     // Invalid level
     level = VideoCollectionCommon::ELevelInvalid;
-    VideoCollectionViewUtils::saveWidgetLevel(level);
-    level = VideoCollectionViewUtils::loadWidgetLevel();
+    VideoCollectionViewUtils::setWidgetActivityLevel(level);
+    VideoCollectionViewUtils::getActivityWidgetLevel( level);
     QVERIFY(level == VideoCollectionCommon::ELevelVideos);
     
     // Category level.
     level = VideoCollectionCommon::ELevelCategory;
-    VideoCollectionViewUtils::saveWidgetLevel(level);
-    level = VideoCollectionViewUtils::loadWidgetLevel();
+    VideoCollectionViewUtils::setWidgetActivityLevel(level);
+    VideoCollectionViewUtils::getActivityWidgetLevel( level);
     QVERIFY(level == VideoCollectionCommon::ELevelCategory);
+    
+    // make sure unneeded data is cleared
+    TMPXItemId id = TMPXItemId(1,1);
+    QString name = "name";
+    VideoCollectionViewUtils::setCollectionActivityData(id, name);
+    level = VideoCollectionCommon::ELevelVideos;
+    VideoCollectionViewUtils::setWidgetActivityLevel(level);
+
+    QVERIFY(level == VideoCollectionCommon::ELevelVideos);
+    QVariant data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_ID);
+    QVERIFY(data.toInt() == 0);
+    data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_NAME);
+    QVERIFY(data.toString().isEmpty());
+    
+    id = TMPXItemId(1,1);
+    name = "name";
+    VideoCollectionViewUtils::setCollectionActivityData(id, name);
+    level = VideoCollectionCommon::ELevelAlbum;
+    VideoCollectionViewUtils::setWidgetActivityLevel(level);
+
+    QVERIFY(level == VideoCollectionCommon::ELevelAlbum);
+    data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_ID);
+    QVERIFY(data.toInt() == 1);
+    data = VideoActivityState::instance().getActivityData(KEY_COLLECTION_NAME);
+    QVERIFY(data.toString() == "name");
+
+}
+
+void TestVideoVideoCollectionViewUtils::testSetAndGetCollectionActivityData()
+{
+    TMPXItemId id = TMPXItemId(1,1);
+    QString name = "name";   
+    
+    // no default collection nor user defined collection
+    VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+    VideoCollectionViewUtils::setWidgetActivityLevel(level); 
+    VideoCollectionViewUtils::setCollectionActivityData(id, name);
+    VideoCollectionViewUtils::getCollectionActivityData(id, name);
+    QVERIFY(id == TMPXItemId::InvalidId());
+    QVERIFY(name.isEmpty());
+    
+    // default collection
+    level = VideoCollectionCommon::ELevelDefaultColl;
+    id = TMPXItemId(1,1);
+    name = "name"; 
+    VideoCollectionViewUtils::setWidgetActivityLevel(level); 
+    VideoCollectionViewUtils::setCollectionActivityData(id, name);
+    VideoCollectionViewUtils::getCollectionActivityData(id, name);
+   
+    QVERIFY(id == TMPXItemId(1, KVcxMvcMediaTypeCategory));
+    QVERIFY(name == "name");
+   
+    // user defined collection
+    level = VideoCollectionCommon::ELevelAlbum;
+    id = TMPXItemId(1,1);
+    name = "name"; 
+    VideoCollectionViewUtils::setWidgetActivityLevel(level); 
+    VideoCollectionViewUtils::setCollectionActivityData(id, name);
+    VideoCollectionViewUtils::getCollectionActivityData(id, name);
+    
+    QVERIFY(id == TMPXItemId(1, KVcxMvcMediaTypeAlbum));
+    QVERIFY(name == "name");
+   
 }
 
 // End of file
--- a/videocollection/videocollectionview/videocollectionview.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionview/videocollectionview.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -26,6 +26,8 @@
     BLD_INF_RULES.prj_exports += \
     	"rom/videocollectionview.iby CORE_APP_LAYER_IBY_EXPORT_PATH(videocollectionview.iby)" \
     	"conf/videolistview.confml                      APP_LAYER_CONFML(videolistview.confml)" \
+    	"conf/CI_videoplayerservicelist.confml          APP_LAYER_CONFML(CI_videoplayerservicelist.confml)" \
+    	"conf/videoplayerservicelist.confml             APP_LAYER_CONFML(videoplayerservicelist.confml)" \
     	"conf/videolistview_2002BC63.crml               APP_LAYER_CRML(videolistview_2002BC63.crml)"
     
     TARGET.CAPABILITY = ALL -TCB -DRM
@@ -59,7 +61,8 @@
            inc/videohintwidget.h \
            inc/videocollectionviewutils.h \
            inc/videocollectionuiloader.h \
-           inc/videolistselectiondialog.h
+           inc/videolistselectiondialog.h \
+           inc/videocollectioncenrepdefs.h
 
 SOURCES += src/videocollectionviewplugin.cpp \
            src/videolistview.cpp \
--- a/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version: 38 %
+// Version : %version: 38.1.1 %
 
 // INCLUDE FILES
 #include <hbglobal.h>
@@ -361,18 +361,20 @@
     unsigned int startIndex)
 {
 	FUNC_LOG;
-	INFO_2("VideoListDataModelPrivate::appendDataToContainerL() array count: %d, start index: %d", videoArray->Count(), startIndex);
 	
-    int count = videoArray->Count();
     if (!videoArray ||
-        startIndex >= count)
+        startIndex >= videoArray->Count())
     {
         return;
     }
     
+    INFO_2("VideoListDataModelPrivate::appendDataToContainerL() array count: %d, start index: %d", videoArray->Count(), startIndex);
+    
     CMPXMedia *newMedia = 0;
     CMPXMedia *mediaFromArray = 0;
     TMPXItemId itemId = TMPXItemId::InvalidId();
+    int count = videoArray->Count();
+    
     for(int i = startIndex; i < count; ++i)
     {
         mediaFromArray = videoArray->AtL(i);
--- a/videocollection/videocollectionwrapper/videocollectionwrapper.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videocollectionwrapper/videocollectionwrapper.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -20,9 +20,15 @@
     TARGET.UID2 = 0x1000008D
     TARGET.UID3 = 0x200211FD
     BLD_INF_RULES.prj_exports += "rom/videocollectionwrapper.iby CORE_APP_LAYER_IBY_EXPORT_PATH(videocollectionwrapper.iby)"
-    MMP_RULES += "DEFFILE videocollectionwrapper.def"
     TARGET.CAPABILITY = CAP_GENERAL_DLL
     TARGET.EPOCALLOWDLLDATA = 1
+    defBlock = \      
+        "$${LITERAL_HASH}if defined(EABI)" \
+        "DEFFILE ../eabi/videocollectionwrapper.def" \
+        "$${LITERAL_HASH}else" \
+        "DEFFILE ../bwins/videocollectionwrapper.def" \
+        "$${LITERAL_HASH}endif"
+    MMP_RULES += defBlock
 }
 CONFIG      += hb qt dll
 DEFINES     += BUILD_VIDEOCOLLECTION_DLL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videofiledetailsview/data/videofiledetails.docml	Thu Jun 24 09:49:13 2010 +0300
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+    <object name="mOptionsDelete" type="HbAction">
+        <string locid="txt_common_opt_delete" name="text" value="Delete"/>
+    </object>
+    <widget name="videofiledetailsview" type="HbView">
+        <widget name="mOptionsMenu" role="HbView:menu" type="HbMenu">
+            <ref object="mOptionsDelete" role="HbWidget:addAction"/>
+        </widget>
+        <widget name="mContent" role="HbView:widget" type="HbWidget">
+            <widget name="mLblTitle" type="HbStackedWidget">
+                <real name="z" value="0.0079"/>
+                <sizehint height="4.47761un" type="PREFERRED" width="47.7612un"/>
+            </widget>
+            <widget name="mDetailsContainer" type="HbWidget">
+                <widget name="mDetailsList" type="HbListWidget"/>
+                <real name="z" value="2"/>
+                <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
+                <layout orientation="Vertical" type="linear">
+                    <linearitem itemname="mDetailsList"/>
+                </layout>
+            </widget>
+            <widget name="mThumbContainer" type="HbWidget">
+                <widget name="mDetailsLabel" type="HbStackedWidget">
+                    <real name="z" value="2"/>
+                    <sizehint height="34.47761un" type="PREFERRED" width="47.91045un"/>
+                    <bool name="visible" value="TRUE"/>
+                    <string name="state" value="normal"/>
+                </widget>
+                <real name="z" value="1"/>
+                <sizehint height="37.31343un" type="PREFERRED" width="47.7612un"/>
+                <layout type="anchor">
+                    <anchoritem dst="mDetailsLabel" dstEdge="LEFT" spacing="1.34328un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="mDetailsLabel" dstEdge="TOP" spacing="1.34328un" src="" srcEdge="TOP"/>
+                </layout>
+            </widget>
+            <widget name="mButton" type="HbPushButton">
+                <real name="z" value="3"/>
+            </widget>
+        </widget>
+    </widget>
+    <section name="portrait">
+        <widget name="mContent" role="HbView:widget" type="HbWidget">
+            <widget name="mButton" type="HbPushButton">
+                <real name="z" value="5"/>
+                <sizehint height="7.17164un" type="PREFERRED" width="50.74626un"/>
+            </widget>
+            <widget name="mDetailsContainer" type="HbWidget">
+                <widget name="mDetailsList" type="HbListWidget">
+                    <real name="z" value="0"/>
+                    <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
+                    <sizehint height="38.50746un" type="PREFERRED" width="48.0597un"/>
+                    <bool name="visible" value="TRUE"/>
+                </widget>
+                <real name="z" value="2"/>
+                <sizehint height="42.68657un" type="PREFERRED" width="50.89551un"/>
+                <layout type="anchor">
+                    <anchoritem dst="mDetailsList" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="mDetailsList" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="mDetailsList" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="mDetailsList" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                </layout>
+            </widget>
+            <widget name="mThumbContainer" type="HbWidget">
+                <widget name="mDetailsLabel" type="HbStackedWidget">
+                    <real name="z" value="2"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="28.54478un" type="FIXED" width="50.74627un"/>
+                    <string name="state"/>
+                </widget>
+                <real name="z" value="1"/>
+                <sizehint height="28.69403un" type="PREFERRED" width="50.74626un"/>
+                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                <layout orientation="Horizontal" spacing="0un" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="mDetailsLabel"/>
+                </layout>
+            </widget>
+            <layout orientation="Vertical" type="linear">
+                <linearitem itemname="mLblTitle"/>
+                <linearitem itemname="mThumbContainer"/>
+                <linearitem itemname="mDetailsContainer"/>
+                <linearitem itemname="mButton"/>
+            </layout>
+        </widget>
+    </section>
+    <section name="landscape">
+        <widget name="mContent" role="HbView:widget" type="HbWidget">
+            <widget name="mDetailsContent" type="HbWidget">
+                <widget name="mRightContent" type="HbWidget">
+                    <widget name="mDetailsContainer" type="HbWidget">
+                        <widget name="mDetailsList" type="HbListWidget">
+                            <real name="z" value="0"/>
+                            <sizehint height="35.37314un" type="PREFERRED" width="48.0597un"/>
+                            <bool name="visible" value="TRUE"/>
+                        </widget>
+                        <real name="z" value="2"/>
+                        <sizehint height="35.97015un" type="PREFERRED" width="42.98507un"/>
+                        <layout type="anchor">
+                            <anchoritem dst="mDetailsList" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                            <anchoritem dst="mDetailsList" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                            <anchoritem dst="mDetailsList" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                            <anchoritem dst="mDetailsList" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                        </layout>
+                    </widget>
+                    <sizehint height="29.52029un" type="PREFERRED" width="29.52029un"/>
+                    <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
+                    <layout orientation="Vertical" type="linear">
+                        <linearitem itemname="mDetailsContainer"/>
+                    </layout>
+                </widget>
+                <widget name="mLeftContent" type="HbWidget">
+                    <widget name="mThumbContainer" type="HbWidget">
+                        <widget name="mDetailsLabel" type="HbStackedWidget">
+                            <real name="z" value="5"/>
+                            <sizehint height="29.49253un" type="FIXED" width="48.35821un"/>
+                            <bool name="visible" value="TRUE"/>
+                            <string name="state"/>
+                            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                        </widget>
+                        <real name="z" value="1"/>
+                        <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="30.29851un" type="PREFERRED" width="49.04478un"/>
+                        <layout type="anchor">
+                            <anchoritem dst="mDetailsLabel" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                            <anchoritem dst="mDetailsLabel" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                            <anchoritem dst="mDetailsLabel" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                            <anchoritem dst="mDetailsLabel" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                        </layout>
+                    </widget>
+                    <widget name="mButton" type="HbPushButton">
+                        <real name="z" value="6"/>
+                        <sizehint height="7.5un" type="PREFERRED" width="43.88059un"/>
+                    </widget>
+                    <sizehint height="23.8806un" type="PREFERRED" width="23.8806un"/>
+                    <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
+                    <layout orientation="Vertical" type="linear">
+                        <linearitem itemname="mThumbContainer"/>
+                        <linearitem itemname="mButton"/>
+                    </layout>
+                </widget>
+                <sizehint height="29.52029un" type="PREFERRED" width="29.52029un"/>
+                <layout orientation="Horizontal" spacing="0un" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="mLeftContent"/>
+                    <linearitem itemname="mRightContent"/>
+                </layout>
+            </widget>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="mLblTitle"/>
+                <linearitem itemname="mDetailsContent"/>
+            </layout>
+        </widget>
+    </section>
+    <metadata activeUIState="landscape" display="NHD-4.0-inch_landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+        <uistate name="portrait" sections="#common portrait"/>
+        <uistate name="landscape" sections="#common landscape"/>
+    </metadata>
+</hbdocument>
--- a/videocollection/videofiledetailsview/data/videofiledetails.qrc	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videofiledetailsview/data/videofiledetails.qrc	Thu Jun 24 09:49:13 2010 +0300
@@ -1,5 +1,5 @@
 <RCC>
     <qresource prefix="/xml" >
-        <file alias="videofiledetails.docml">videofiledetails.xml</file>
+        <file alias="videofiledetails.docml">videofiledetails.docml</file>
     </qresource>
 </RCC>
--- a/videocollection/videofiledetailsview/data/videofiledetails.xml	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
-    <object name="mOptionsDelete" type="HbAction">
-        <string locid="txt_common_opt_delete" name="text" value="Delete"/>
-    </object>
-    <widget name="videofiledetailsview" type="HbView">
-        <widget name="mOptionsMenu" role="HbView:menu" type="HbMenu">
-            <ref object="mOptionsDelete" role="HbMenu:addAction"/>
-        </widget>
-        <widget name="mContent" role="HbView:widget" type="HbWidget">
-            <widget name="mLblTitle" type="HbStackedWidget">
-                <real name="z" value="0.0079"/>
-                <sizehint height="4.47761un" type="PREFERRED" width="47.7612un"/>
-            </widget>
-            <widget name="mDetailsContainer" type="HbWidget">
-                <widget name="mDetailsList" type="HbListWidget"/>
-                <real name="z" value="2"/>
-                <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
-                <layout orientation="Vertical" type="linear">
-                    <linearitem itemname="mDetailsList"/>
-                </layout>
-            </widget>
-            <widget name="mThumbContainer" type="HbWidget">
-                <widget name="mDetailsLabel" type="HbStackedWidget">
-                    <real name="z" value="2"/>
-                    <sizehint height="34.47761un" type="PREFERRED" width="47.91045un"/>
-                    <bool name="visible" value="TRUE"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <real name="z" value="1"/>
-                <sizehint height="37.31343un" type="PREFERRED" width="47.7612un"/>
-                <layout type="anchor">
-                    <anchoritem dst="mDetailsLabel" dstEdge="LEFT" spacing="1.34328un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="TOP" spacing="1.34328un" src="" srcEdge="TOP"/>
-                </layout>
-            </widget>
-            <widget name="mButton" type="HbPushButton">
-                <real name="z" value="3"/>
-            </widget>
-        </widget>
-    </widget>
-    <section name="portrait">
-        <widget name="mContent" role="HbView:widget" type="HbWidget">
-            <widget name="mThumbContainer" type="HbWidget">
-                <widget name="mDetailsLabel" type="HbStackedWidget">
-                    <real name="z" value="2"/>
-                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                    <sizehint height="28.54478un" type="FIXED" width="50.74627un"/>
-                    <string name="state" value=""/>
-                </widget>
-                <real name="z" value="1"/>
-                <sizehint height="28.69403un" type="PREFERRED" width="50.74626un"/>
-                <layout type="anchor">
-                    <anchoritem dst="mDetailsLabel" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                </layout>
-            </widget>
-            <widget name="mDetailsContainer" type="HbWidget">
-                <widget name="mDetailsList" type="HbListWidget">
-                    <real name="z" value="0"/>
-                    <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
-                    <sizehint height="38.50746un" type="PREFERRED" width="48.0597un"/>
-                    <bool name="visible" value="TRUE"/>
-                </widget>
-                <real name="z" value="2"/>
-                <sizehint height="42.68657un" type="PREFERRED" width="50.89551un"/>
-                <layout type="anchor">
-                    <anchoritem dst="mDetailsList" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="mDetailsList" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                    <anchoritem dst="mDetailsList" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="mDetailsList" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                </layout>
-            </widget>
-            <widget name="mButton" type="HbPushButton">
-                <real name="z" value="5"/>
-                <sizehint height="7.17164un" type="PREFERRED" width="50.74626un"/>
-            </widget>
-            <layout type="anchor">
-                <anchoritem dst="mLblTitle" dstEdge="TOP" spacing="1.04478un" src="" srcEdge="TOP"/>
-                <anchoritem dst="mLblTitle" dstEdge="LEFT" spacing="1.49254un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mLblTitle" dstEdge="RIGHT" spacing="-1.49254un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mThumbContainer" dstEdge="TOP" spacing="6.71642un" src="" srcEdge="TOP"/>
-                <anchoritem dst="mThumbContainer" dstEdge="LEFT" spacing="1.49254un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mThumbContainer" dstEdge="RIGHT" spacing="-1.49254un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mButton" dstEdge="LEFT" spacing="1un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mButton" dstEdge="TOP" spacing="0un" src="mDetailsContainer" srcEdge="BOTTOM"/>
-                <anchoritem dst="mButton" dstEdge="RIGHT" spacing="-1un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mButton" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="BOTTOM" spacing="-7.5un" src="" srcEdge="BOTTOM"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="RIGHT" spacing="-1.19405un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="LEFT" spacing="1.49254un" src="" srcEdge="LEFT"/>
-            </layout>
-        </widget>
-    </section>
-    <section name="landscape">
-        <widget name="mContent" role="HbView:widget" type="HbWidget">
-            <widget name="mDetailsContainer" type="HbWidget">
-                <widget name="mDetailsList" type="HbListWidget">
-                    <real name="z" value="0"/>
-                    <sizehint height="35.37314un" type="PREFERRED" width="48.0597un"/>
-                    <bool name="visible" value="TRUE"/>
-                </widget>
-                <real name="z" value="2"/>
-                <sizehint height="35.97015un" type="PREFERRED" width="42.98507un"/>
-                <layout type="anchor">
-                    <anchoritem dst="mDetailsList" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="mDetailsList" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                    <anchoritem dst="mDetailsList" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="mDetailsList" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                </layout>
-            </widget>
-            <widget name="mThumbContainer" type="HbWidget">
-                <widget name="mDetailsLabel" type="HbStackedWidget">
-                    <real name="z" value="5"/>
-                    <sizehint height="29.49253un" type="PREFERRED" width="48.35821un"/>
-                    <bool name="visible" value="TRUE"/>
-                    <string name="state" value=""/>
-                </widget>
-                <sizehint height="30.29851un" type="PREFERRED" width="49.04478un"/>
-                <layout type="anchor">
-                    <anchoritem dst="mDetailsLabel" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="mDetailsLabel" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                </layout>
-            </widget>
-            <widget name="mButton" type="HbPushButton">
-                <real name="z" value="6"/>
-                <sizehint height="7.5un" type="PREFERRED" width="43.88059un"/>
-            </widget>
-            <layout type="anchor">
-                <anchoritem dst="mLblTitle" dstEdge="TOP" spacing="1.04478un" src="" srcEdge="TOP"/>
-                <anchoritem dst="mLblTitle" dstEdge="LEFT" spacing="1.49254un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mLblTitle" dstEdge="RIGHT" spacing="-1.49254un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mButton" dstEdge="LEFT" spacing="1un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mButton" dstEdge="RIGHT" spacing="-1un" src="mDetailsContainer" srcEdge="LEFT"/>
-                <anchoritem dst="mButton" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="LEFT" spacing="51.04478un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="TOP" spacing="6.2un" src="" srcEdge="TOP"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="RIGHT" spacing="-1.34329un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="mDetailsContainer" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                <anchoritem dst="mThumbContainer" dstEdge="RIGHT" spacing="-0.91045un" src="mDetailsContainer" srcEdge="LEFT"/>
-                <anchoritem dst="mThumbContainer" dstEdge="TOP" spacing="6.2un" src="" srcEdge="TOP"/>
-                <anchoritem dst="mThumbContainer" dstEdge="LEFT" spacing="1un" src="" srcEdge="LEFT"/>
-            </layout>
-        </widget>
-    </section>
-    <metadata activeUIState="portrait" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-        <uistate name="portrait" sections="#common portrait"/>
-        <uistate name="landscape" sections="#common landscape"/>
-    </metadata>
-</hbdocument>
--- a/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 76 %
+// Version : %version: 76.1.1 %
 
 // INCLUDE FILES
 #include <qcoreapplication.h>
@@ -326,6 +326,14 @@
 		    return;
 		}
 				
+	    // Fix the size of the thumbnail, as that needs to be in 16:9
+	    qreal width = button->size().width();
+	    qreal height = width * 9 / 16;
+	    
+	    HbStackedWidget* thumbWidget = findWidget<HbStackedWidget>(VIDEO_DETAILS_THUMBNAIL);
+	    thumbWidget->setPreferredWidth(width);
+	    thumbWidget->setPreferredHeight(height);
+	    
 		if (service == VideoServices::EUriFetcher)
 		{
             button->setText(hbTrId("txt_videos_button_attach"));
--- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 2 %
+// Version : %version: 3 %
 
 
 
@@ -23,8 +23,6 @@
 #define MPXVIDEOPLAYBACKCONTROLBAR_H_
 
 
-
-#include <hbeffect.h>
 #include <hbwidget.h>
 #include <mpxplaybackframeworkdefs.h>
 
@@ -48,10 +46,6 @@
         void durationChanged( int duration );
         void positionChanged( int position );
 
-    private slots:
-        void appeared( const HbEffect::EffectStatus &status );
-        void disappeared( const HbEffect::EffectStatus &status );
-
     private:
         QMPXVideoPlaybackControlsController *mController;
         QMPXVideoPlaybackToolBar            *mToolBar;
--- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,14 +15,14 @@
 *
 */
 
-// Version : %version: da1mmcf#12 %
+// Version : %version: da1mmcf#13 %
 
 
 
 #ifndef MPXVIDEOPLAYBACKPROGRESSBAR_H_
 #define MPXVIDEOPLAYBACKPROGRESSBAR_H_
 
-#include <hbwidget.h>
+#include <QObject>
 #include <mpxplaybackframeworkdefs.h>
 
 class QTimer;
@@ -30,7 +30,7 @@
 class QMPXVideoPlaybackViewFileDetails;
 class QMPXVideoPlaybackControlsController;
 
-class QMPXVideoPlaybackProgressBar : public HbWidget
+class QMPXVideoPlaybackProgressBar : public QObject
 {
     Q_OBJECT
 
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  6 %
+// Version : %version:  7 %
 
 
 
@@ -24,7 +24,6 @@
 #include "mpxvideoplaybackcontrolbar.h"
 #include "mpxvideoplaybackprogressbar.h"
 #include "mpxcommonvideoplaybackview.hrh"
-#include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
 
 
@@ -32,17 +31,21 @@
 // QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar()
 // -------------------------------------------------------------------------------------------------
 //
-QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( 
+QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar(
         QMPXVideoPlaybackControlsController* controller )
     : mController( controller )
-    , mProgressBar( NULL )
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar"));
 
     //
-    // button bar
+    // create toolbar handler
     //
     mToolBar = new QMPXVideoPlaybackToolBar( mController );
+
+    //
+    // create progressbar handler
+    //
+    mProgressBar = new QMPXVideoPlaybackProgressBar( mController );
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -53,6 +56,12 @@
 {
     MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()"));
 
+    if ( mProgressBar )
+    {
+        delete mProgressBar;
+        mProgressBar = NULL;
+    }
+
     if ( mToolBar )
     {
         delete mToolBar;
@@ -68,23 +77,9 @@
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::initialize()"));
 
-    QMPXVideoPlaybackDocumentLoader *loader = mController->layoutLoader();
-
-    //
-    // Don't need to initialize buttons once it gets initialized
-    //
-    if ( mProgressBar == NULL )
+    if ( mProgressBar )
     {
-        //
-        // progress bar
-        //
-        QGraphicsWidget *widget = loader->findWidget( QString( "progressBarLayout" ) );
-        mProgressBar = qobject_cast<QMPXVideoPlaybackProgressBar*>( widget );
-
-        if ( mProgressBar )
-        {
-            mProgressBar->initialize();
-        }
+        mProgressBar->initialize();
     }
 }
 
@@ -157,43 +152,6 @@
     }
 }
 
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlBar::appeared()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlBar::appeared( const HbEffect::EffectStatus &status )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared()"));
-
-    if ( status.reason == Hb::EffectFinished )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared() successful"));
-    }
-    else
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::appeared() NOT successful"));
-    }
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlBar::disappeared()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlBar::disappeared( const HbEffect::EffectStatus &status )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared()"));
-
-    if ( status.reason == Hb::EffectFinished )
-    {
-        setVisible( false );
-
-        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() successful"));
-    }
-    else
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() NOT successful"));
-    }
-}
 
 // -------------------------------------------------------------------------------------------------
 // QMPXVideoPlaybackControlBar::durationChanged()
@@ -226,7 +184,7 @@
     {
         mProgressBar->positionChanged( position );
     }
-    
+
     if ( mToolBar )
     {
         mToolBar->positionChanged( position );
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdetailsplaybackwindow.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdetailsplaybackwindow.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  17 %
+// Version : %version:  18 %
 
 
 
@@ -122,11 +122,11 @@
             //
             // dim "share" button for streaming
             //
-            if ( mController->fileDetails()->mPlaybackMode == EMPXVideoStreaming ||
-                 mController->fileDetails()->mPlaybackMode == EMPXVideoLiveStreaming )
+            if ( details->mPlaybackMode == EMPXVideoStreaming ||
+                 details->mPlaybackMode == EMPXVideoLiveStreaming )
             {
-                shareButton->setEnabled( false );                  
-            }            
+                shareButton->setEnabled( false );
+            }
         }
     }
 
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,13 +15,12 @@
 *
 */
 
-// Version : %version: 13 %
+// Version : %version: 14 %
 
 
 
 #include "mpxvideo_debug.h"
 #include "mpxvideoplaybackcontrolbar.h"
-#include "mpxvideoplaybackprogressbar.h"
 #include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackfiledetailswidget.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
@@ -66,11 +65,6 @@
         object = new QMPXVideoPlaybackControlBar( mController );
         object->setObjectName( name );
     }
-    else if ( name == "progressBarLayout" )
-    {
-        object = new QMPXVideoPlaybackProgressBar( mController );
-        object->setObjectName( name );
-    }
     else if ( name == "fileDetailsLayout" )
     {
         object = new QMPXVideoPlaybackFileDetailsWidget( mController );
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfiledetailswidget.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfiledetailswidget.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  25 %
+// Version : %version:  26 %
 
 
 #include <QDir>
@@ -42,7 +42,7 @@
 // QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget
 // -------------------------------------------------------------------------------------------------
 //
-QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget( 
+QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget(
         QMPXVideoPlaybackControlsController* controller )
     : mController( controller )
     , mListWidget( 0 )
@@ -75,7 +75,7 @@
         // load fileDetails widget
         //
         QGraphicsWidget *widget = loader->findWidget( QString( "fileDetails" ) );
-        
+
         //
         // cast fileDetails widget to HbListWidget
         //
@@ -89,7 +89,7 @@
 
         //
         // Title
-        //            
+        //
         makeTitleItem( details );
 
         if ( ! mFileDetailsUpdated )
@@ -101,8 +101,8 @@
             //
             // Description
             //
-            addItemToListWidget( 
-                    hbTrId( "txt_videos_list_description" ), details->mDescription ); 
+            addItemToListWidget(
+                    hbTrId( "txt_videos_list_description" ), details->mDescription );
 
             //
             // Duration
@@ -118,8 +118,8 @@
 
                 addItemToListWidget(
                         hbTrId( "txt_videos_list_duration" ),
-                        hbTrId( "txt_videos_list_l1l2l3" ).arg( hour ).arg( min ).arg( sec ) );                                                                        
-            }    
+                        hbTrId( "txt_videos_list_l1l2l3" ).arg( hour ).arg( min ).arg( sec ) );
+            }
 
             //
             // Date/Time
@@ -129,27 +129,27 @@
             //
             // Location
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_location" ), details->mLocation );                                                
+            addItemToListWidget( hbTrId( "txt_videos_list_location" ), details->mLocation );
 
             //
             // Author
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_author" ), details->mArtist );                                            
+            addItemToListWidget( hbTrId( "txt_videos_list_author" ), details->mArtist );
 
             //
             // Copyright
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_copyright" ), details->mCopyright );                                        
+            addItemToListWidget( hbTrId( "txt_videos_list_copyright" ), details->mCopyright );
 
             //
             // Language
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_language" ), details->mLanguage );                                    
+            addItemToListWidget( hbTrId( "txt_videos_list_language" ), details->mLanguage );
 
             //
             // Keywords
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_keywords" ), details->mKeywords );                                
+            addItemToListWidget( hbTrId( "txt_videos_list_keywords" ), details->mKeywords );
 
             //
             // Size
@@ -163,14 +163,14 @@
             {
                 QString resolution = hbTrId( "txt_videos_list_l1l2" )
                        .arg( locale.toString( details->mVideoWidth ) )
-                       .arg( locale.toString( details->mVideoHeight ) );            
-                addItemToListWidget( hbTrId( "txt_videos_list_resolution" ), resolution );                    
+                       .arg( locale.toString( details->mVideoHeight ) );
+                addItemToListWidget( hbTrId( "txt_videos_list_resolution" ), resolution );
             }
 
             //
             // Format
             //
-            addItemToListWidget( hbTrId( "txt_videos_list_format" ), details->mMimeType );                    
+            addItemToListWidget( hbTrId( "txt_videos_list_format" ), details->mMimeType );
 
             //
             // Bitrate
@@ -183,7 +183,7 @@
             if ( details->mPlaybackMode == EMPXVideoLocal ||
                  details->mPlaybackMode == EMPXVideoProgressiveDownload)
             {
-                QFileInfo fileInfo( details->mClipName );     
+                QFileInfo fileInfo( details->mClipName );
                 QString folder = fileInfo.dir().dirName();
                 addItemToListWidget( hbTrId( "txt_videos_list_collection_name" ), folder );
             }
@@ -234,16 +234,16 @@
 // -------------------------------------------------------------------------------------------------
 //
 void QMPXVideoPlaybackFileDetailsWidget::makeTitleItem( QMPXVideoPlaybackViewFileDetails* details )
-{    
+{
     MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::makeTitleItem()"));
 
     //
     // Title should be the first item in file details list
     //
     if ( mController->viewMode() == EAudioOnlyView )
-    {    
+    {
         //
-        // show the title for audio-only view 
+        // show the title for audio-only view
         //
         if ( mListWidget->count() == 0 || ! mListWidget->item( 0 )->text().contains( "Title", Qt::CaseInsensitive ) )
         {
@@ -253,9 +253,9 @@
             {
                 //
                 // If title is not available, show clip name
-                //            
+                //
                 QFileInfo fileInfo( details->mClipName );
-                title = fileInfo.baseName ();
+                title = fileInfo.completeBaseName();
             }
 
             //
@@ -270,7 +270,7 @@
     else if ( mListWidget->count() &&
               mListWidget->item( 0 )->text().contains( "Title", Qt::CaseInsensitive ) )
     {
-        // 
+        //
         // title is displayed under the status pane for video clips,
         // so hide the title for this details view
         //
@@ -283,17 +283,17 @@
 // -------------------------------------------------------------------------------------------------
 //
 void QMPXVideoPlaybackFileDetailsWidget::makeSizeItem( QMPXVideoPlaybackViewFileDetails* details )
-{        
+{
     if ( details->mPlaybackMode == EMPXVideoLocal ||
          details->mPlaybackMode == EMPXVideoProgressiveDownload )
     {
-        QFileInfo fileInfo( details->mClipName );     
-        
+        QFileInfo fileInfo( details->mClipName );
+
         //
         // to prevent overflow, get an unsigned value of file size
         //
         ulong fileSize = fileInfo.size();
-                
+
         //
         // convert file size to KB, MB, GB accordingly
         //
@@ -329,9 +329,9 @@
             int temp = size * 10;
             size = (float)temp / 10;
 
-            addItemToListWidget( 
+            addItemToListWidget(
                     hbTrId( "txt_videos_list_file_size" ), scale.arg( locale.toString( size ) ) );
-        }    
+        }
     }
 }
 
@@ -340,7 +340,7 @@
 // -------------------------------------------------------------------------------------------------
 //
 void QMPXVideoPlaybackFileDetailsWidget::makeBitRateItem( QMPXVideoPlaybackViewFileDetails* details  )
-{        
+{
     if ( details->mBitRate > 0 )
     {
         HbExtendedLocale locale = HbExtendedLocale::system();
@@ -353,17 +353,17 @@
         {
              bitrate /= KILOBYTE;
         }
-        
+
         if ( bitrate > KILOBYTE )
         {
              bitrate /= KILOBYTE;
              scale = hbTrId( "txt_videos_list_l1_mbps" );
         }
-    
+
         int temp = bitrate * 10;
         bitrate = (float)temp / 10;
 
-        addItemToListWidget( 
+        addItemToListWidget(
                 hbTrId( "txt_videos_list_bitrate" ), scale.arg( locale.toString( bitrate ) ) );
     }
 }
@@ -373,18 +373,18 @@
 // -------------------------------------------------------------------------------------------------
 //
 void QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget( QString item, QString text  )
-{    
+{
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget"));
-	
+
     if ( text.count() > 0 )
     {
-        MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget( %s %s )"), 
+        MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget( %s %s )"),
 		    item.data(), text.data() );
-		
+
         HbListWidgetItem* listWidgetItem = new HbListWidgetItem();
         listWidgetItem->setText( item );
         listWidgetItem->setSecondaryText( text );
-        
+
         mListWidget->addItem( listWidgetItem );
     }
 }
@@ -394,21 +394,21 @@
 // -------------------------------------------------------------------------------------------------
 //
 void QMPXVideoPlaybackFileDetailsWidget::makeDateTimeItem( QMPXVideoPlaybackViewFileDetails* details )
-{    
+{
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFileDetailsWidget::makeDateTimeItem"));
-        
+
     //
     // attempt to get 'created' and 'last modified' date/time from metadata first,
     // if it's not available, then get it from the file system
     //
-    
+
     if ( details->mPlaybackMode == EMPXVideoLocal ||
          details->mPlaybackMode == EMPXVideoProgressiveDownload )
-    {        
+    {
         QDateTime dateTime;
-        QFileInfo fileInfo( details->mClipName );     
+        QFileInfo fileInfo( details->mClipName );
         HbExtendedLocale locale = HbExtendedLocale::system();
-        
+
         //
         // Date created
         //
@@ -420,15 +420,15 @@
         {
             dateTime = fileInfo.created();
         }
-        
+
         //
         // convert 'created' date/time to proper string format
         // according to its current locale
         //
         QString date = locale.format( dateTime.date(), r_qtn_date_usual );
         QString time = locale.format( dateTime.time(), r_qtn_time_long_with_zero );
-        addItemToListWidget( hbTrId( "txt_videos_list_date" ), date + "  " + time );      
-        
+        addItemToListWidget( hbTrId( "txt_videos_list_date" ), date + "  " + time );
+
         //
         // Date modified
         //
@@ -440,15 +440,15 @@
         {
             dateTime = fileInfo.lastModified();
         }
-        
+
         //
         // convert 'last modified' date/time to proper string format
         // according to its current locale
         //
         date = locale.format( dateTime.date(), r_qtn_date_usual );
         time = locale.format( dateTime.time(), r_qtn_time_long_with_zero );
-        addItemToListWidget( hbTrId( "txt_videos_list_modified" ), date + "  " + time );           
-    }    
+        addItemToListWidget( hbTrId( "txt_videos_list_modified" ), date + "  " + time );
+    }
 }
 
 //End of file
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#23 %
+// Version : %version: da1mmcf#24 %
 
 
 
@@ -41,10 +41,9 @@
 // QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar
 // -------------------------------------------------------------------------------------------------
 //
-QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( 
+QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar(
         QMPXVideoPlaybackControlsController* controller )
     : mController( controller )
-    , mDuration( -1 )
     , mDraggingPosition( 0 )
     , mSetPosition( -1 )
     , mNeedToResumeAfterSetPosition( false )
@@ -68,7 +67,7 @@
     if ( mSeekingTimer )
     {
         disconnect( mSeekingTimer, SIGNAL( timeout() ), this, SLOT( handleSeekingTimeout() ) );
-        
+
         if ( mSeekingTimer->isActive() )
         {
             mSeekingTimer->stop();
@@ -95,11 +94,11 @@
     if ( loader && ! mInitialized )
     {
         mInitialized = true;
-        mLiveStreaming = 
+        mLiveStreaming =
                 ( mController->fileDetails()->mPlaybackMode == EMPXVideoLiveStreaming )? true:false;
 
         //
-        // Create a timer for seeking. 
+        // Create a timer for seeking.
         // We will issue SetPosition every KSeekingTimeOut msec to show the current frame to user
         //
         mSeekingTimer = new QTimer();
@@ -119,7 +118,7 @@
 
         //
         // If we init the progress bar after pp sends the duration informatin
-        // we need to set the duration manually 
+        // we need to set the duration manually
         //
         durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier );
 
@@ -135,7 +134,7 @@
         frameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_multimedia_trans" );
         frameItem->frameDrawer().setFrameType( HbFrameDrawer::NinePieces );
         frameItem->frameDrawer().setFillWholeRect( true );
-        setBackgroundItem( frameItem );
+        mProgressSlider->setBackgroundItem( frameItem );
     }
 }
 
@@ -149,6 +148,7 @@
 
     if ( mLiveStreaming )
     {
+        mDuration = 0;
         mProgressSlider->setMaxText( "Live" );
     }
     else
@@ -251,7 +251,7 @@
 // QMPXVideoPlaybackProgressBar::handleSliderPressed
 // -------------------------------------------------------------------------------------------------
 //
-void QMPXVideoPlaybackProgressBar::handleSliderPressed() 
+void QMPXVideoPlaybackProgressBar::handleSliderPressed()
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::handleSliderPressed()"));
 
@@ -265,7 +265,7 @@
     if( mController->state() == EPbStatePlaying )
     {
         mNeedToResumeAfterSetPosition = true;
-        mController->handleCommand( EMPXPbvCmdCustomPause );   
+        mController->handleCommand( EMPXPbvCmdCustomPause );
     }
 }
 
@@ -273,7 +273,7 @@
 // QMPXVideoPlaybackProgressBar::handleSliderMoved
 // -------------------------------------------------------------------------------------------------
 //
-void QMPXVideoPlaybackProgressBar::handleSliderMoved( int value ) 
+void QMPXVideoPlaybackProgressBar::handleSliderMoved( int value )
 {
     MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::handleSliderMoved() position = %d"), value);
 
@@ -324,7 +324,7 @@
     {
         mSeekingTimer->stop();
     }
-    
+
     mController->resetDisappearingTimers( EMPXTimerReset );
     int value = mProgressSlider->sliderValue();
 
@@ -364,7 +364,7 @@
     MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateControlsWithFileDetails()"));
 
     if ( ! details->mPausableStream || ! details->mSeekable )
-    {    
+    {
         mProgressSlider->setEnabled( false );
     }
     else if ( ! mProgressSlider->isEnabled() )
@@ -372,7 +372,8 @@
         mProgressSlider->setEnabled( true );
     }
 
-    backgroundItem()->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse );
+    mProgressSlider->backgroundItem()->setVisible(
+            ( mController->viewMode() == EFullScreenView )? ETrue:EFalse );
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -388,18 +389,18 @@
         case EPbStatePlaying:
         case EPbStatePaused:
         {
-            if ( ! isEnabled() )
+            if ( ! mProgressSlider->isEnabled() )
             {
-                setEnabled( true );
+                mProgressSlider->setEnabled( true );
             }
 
             break;
         }
         default:
         {
-            if ( isEnabled() )
+            if ( mProgressSlider->isEnabled() )
             {
-                setEnabled( false );
+                mProgressSlider->setEnabled( false );
             }
             break;
         }
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 17 %
+// Version : %version: 19 %
 
 
 
@@ -42,10 +42,10 @@
 // QMPXVideoPlaybackStatusPaneControl::QMPXVideoPlaybackStatusPaneControl()
 // -------------------------------------------------------------------------------------------------
 //
-QMPXVideoPlaybackStatusPaneControl::QMPXVideoPlaybackStatusPaneControl( 
-        QMPXVideoPlaybackControlsController* controller, 
-        TMPXVideoPlaybackControls index, 
-        HbWidget* widget, 
+QMPXVideoPlaybackStatusPaneControl::QMPXVideoPlaybackStatusPaneControl(
+        QMPXVideoPlaybackControlsController* controller,
+        TMPXVideoPlaybackControls index,
+        HbWidget* widget,
         TUint controlproperties )
     : QMPXVideoPlaybackFullScreenControl( controller, index, widget, controlproperties )
     , mActionBack( NULL )
@@ -181,7 +181,7 @@
         if ( title.count() == 0 )
         {
             QFileInfo fileInfo( mController->fileDetails()->mClipName );
-            title = fileInfo.baseName ();
+            title = fileInfo.completeBaseName();
         }
 
         QGraphicsWidget *qWidget = mController->layoutLoader()->findWidget( QString( "title" ) );
@@ -210,12 +210,13 @@
         {
             //
             // Set TitleBar transparent and go back to preview view with back key
-            // 
+            //
             disconnect( mActionBack, SIGNAL( triggered() ), this, SLOT( openFullScreenView() ) );
             connect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) );
 
-            mController->view()->setViewFlags( 
-                    HbView::HbViewFlags( HbView::ViewTitleBarTransparent | HbView::ViewStatusBarTransparent ) );
+            mController->view()->setViewFlags( mController->view()->viewFlags() |
+                                               HbView::ViewTitleBarTransparent |
+                                               HbView::ViewStatusBarTransparent );
 
             mTitleLabel->setVisible( true );
             mTitleGroupBox->setVisible( false );
@@ -226,7 +227,7 @@
         {
             //
             // Set TitleBar opaque and go back to full screen view with back key
-            // 
+            //
             disconnect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) );
             connect( mActionBack, SIGNAL( triggered() ), this, SLOT( openFullScreenView() ) );
 
@@ -241,7 +242,7 @@
         {
             //
             // Set TitleBar opaque and go back to preview view with back key
-            // 
+            //
             disconnect( mActionBack, SIGNAL( triggered() ), this, SLOT( openFullScreenView() ) );
             connect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) );
 
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybacktoolbar.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybacktoolbar.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,14 +15,13 @@
 *
 */
 
-// Version : %version:  6 %
+// Version : %version:  7 %
 
 
 
 #include <QTimer>
 #include <QGraphicsLayout>
 
-#include <hbeffect.h>
 #include <hbaction.h>
 #include <hbtoolbar.h>
 #include <hbinstance.h>
@@ -44,7 +43,7 @@
 // QMPXVideoPlaybackToolBar::QMPXVideoPlaybackToolBar()
 // -------------------------------------------------------------------------------------------------
 //
-QMPXVideoPlaybackToolBar::QMPXVideoPlaybackToolBar( 
+QMPXVideoPlaybackToolBar::QMPXVideoPlaybackToolBar(
         QMPXVideoPlaybackControlsController* controller )
     : mController( controller )
     , mSeekStartTimer( NULL )
@@ -59,8 +58,7 @@
 
     mToolBar = mController->view()->toolBar();
     mToolBar->setOrientation( Qt::Horizontal );
-    HbEffect::disable( mToolBar );
-    
+
     mController->view()->hideItems( Hb::ToolBarItem );
 
     initialize();
@@ -74,7 +72,6 @@
 {
     MPX_DEBUG(_L("QMPXVideoPlaybackToolBar::~QMPXVideoPlaybackToolBar()"));
 
-    HbEffect::enable( mToolBar );
     mToolBar->clearActions();
 
     for ( int i = 0 ; i < mButtonIcons.count() ; i++ )
@@ -170,7 +167,7 @@
         mButtonActions[EMPX1stButton]->setIcon( *mButtonIcons[EMPXNaturalIcon] );
 
         //
-        // Attach/Share button 
+        // Attach/Share button
         //
         mButtonIcons[EMPXAttachIcon]->setIconName( "qtg_mono_attach" );
         mButtonIcons[EMPXShareIcon]->setIconName( "qtg_mono_share" );
@@ -184,26 +181,26 @@
         mDuration = (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier;
 
         //
-        // Create a timer for seeking. 
+        // Create a timer for seeking.
         // We will issue SetPosition every KSeekingTimeOut msec to show the current frame to user
         //
         mSeekStartTimer = new QTimer();
         mSeekStartTimer->setSingleShot( true );
         mSeekStartTimer->setInterval( KSeekStartTimeOut );
-        
+
         //
         // get window size
         //
-        RWindow *window = mController->view()->getWindow();            
+        RWindow *window = mController->view()->getWindow();
         TRect displayRect = TRect( TPoint( window->Position() ), TSize( window->Size() ) );
-        
+
         //
         // get window aspect ratio
         //   if device is in portrait mode, width > height
         //   if device is in landscape mode, width < height
         //
         TReal32 width = (TReal32) displayRect.Width();
-        TReal32 height = (TReal32) displayRect.Height();            
+        TReal32 height = (TReal32) displayRect.Height();
         mDisplayAspectRatio = (width > height)? (width / height) : (height / width);
     }
 }
@@ -233,7 +230,7 @@
     {
         mSeekingState = EMPXFastForwarding;
 
-        mController->handleCommand( EMPXPbvCmdSeekForward );        
+        mController->handleCommand( EMPXPbvCmdSeekForward );
     }
 }
 
@@ -272,7 +269,7 @@
 
     if ( mSeekingState == EMPXFastForwarding )
     {
-        mController->handleCommand( EMPXPbvCmdEndSeek );        
+        mController->handleCommand( EMPXPbvCmdEndSeek );
     }
     else
     {
@@ -310,7 +307,7 @@
 
     if ( mSeekingState == EMPXRewinding )
     {
-        mController->handleCommand( EMPXPbvCmdEndSeek );        
+        mController->handleCommand( EMPXPbvCmdEndSeek );
     }
     else
     {
@@ -341,7 +338,7 @@
     MPX_DEBUG(_L("QMPXVideoPlaybackToolBar::changeAspectRatio()"));
 
     mController->resetDisappearingTimers( EMPXTimerReset );
-    
+
     TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdStretchAspectRatio;
 
     switch( mAspectRatio )
@@ -409,7 +406,7 @@
     //
     // If we are in attach service or audio only view, then don't update the icon.
 	// Aspect ratio icon slots are shared with attach and share icon.
-	// Just update the mAspectRatio 
+	// Just update the mAspectRatio
 	// and once we go back to full screen, we will show the correct aspect ratio icon
 	//
     if ( ! mController->isAttachOperation() && mController->viewMode() == EFullScreenView )
@@ -431,7 +428,7 @@
                 mButtonActions[EMPX1stButton]->setIcon( *mButtonIcons[EMPXNaturalIcon] );
                 break;
             }
-        }    
+        }
     }
 }
 
@@ -531,11 +528,11 @@
             else
             {
                 //
-                // check if video clip has same aspect ratio as display window 
+                // check if video clip has same aspect ratio as display window
                 //
-                TReal32 videoAspectRatio = (TReal32) details->mVideoWidth / (TReal32) details->mVideoHeight; 
+                TReal32 videoAspectRatio = (TReal32) details->mVideoWidth / (TReal32) details->mVideoHeight;
                 bool enabled = ( mDisplayAspectRatio == videoAspectRatio )? false : true;
-                
+
                 //
                 // enable or dim 'aspect ratio' buttons accordingly
                 //
@@ -548,7 +545,7 @@
                              this, SLOT( changeAspectRatio() ) );
                 }
             }
-        }                
+        }
         else if ( mController->viewMode() == EAudioOnlyView )
         {
             //
@@ -574,7 +571,7 @@
                 if ( mButtons.count() )
                 {
                     disconnect( mButtons[EMPX1stButton], SIGNAL( released() ), 0, 0 );
-                    connect( mButtons[EMPX1stButton], SIGNAL( released() ), 
+                    connect( mButtons[EMPX1stButton], SIGNAL( released() ),
                              mController, SLOT( sendVideo() ) );
                 }
             }
@@ -615,7 +612,7 @@
     }
 
     //
-    // toolbar creates button once it gets visible, so we don't know exact timing when toolbar 
+    // toolbar creates button once it gets visible, so we don't know exact timing when toolbar
     // creates button, so start timer to get layout information once the toolbar gets visible.
     // This is needed since we don't use toolbar in proper way.
     //
@@ -624,9 +621,9 @@
         mRetrieveButtonTimer = new QTimer();
         mRetrieveButtonTimer->setSingleShot( false );
         mRetrieveButtonTimer->setInterval( KRetrieveButtonTimeOut );
-        connect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );            
+        connect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );
 
-        mRetrieveButtonTimer->start();        
+        mRetrieveButtonTimer->start();
     }
 
     durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier );
@@ -708,7 +705,7 @@
                 if ( mRetrieveButtonTimer->isActive() )
                 {
                     mRetrieveButtonTimer->stop();
-                }                
+                }
             }
 
             for ( int i = 0 ; i < layout->count() ; i++ )
@@ -744,10 +741,10 @@
                 {
                     connect( mButtons[EMPX1stButton], SIGNAL( released() ),
                              this, SLOT( changeAspectRatio() ) );
-                }                
+                }
                 else if ( mController->viewMode() == EAudioOnlyView )
                 {
-                    connect( mButtons[EMPX1stButton], SIGNAL( released() ), 
+                    connect( mButtons[EMPX1stButton], SIGNAL( released() ),
                              mController, SLOT( sendVideo() ) );
                 }
             }
--- a/videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building Videoplayer components
 #
 #
-# Version : %version: da1mmcf#23 %
+# Version : %version: 24 %
 
 
 TEMPLATE = lib
@@ -30,6 +30,13 @@
     INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \
                    $$APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE
     BLD_INF_RULES.prj_exports += "rom/hbvideoplaybackview.iby CORE_APP_LAYER_IBY_EXPORT_PATH(hbvideoplaybackview.iby)"
+    defBlock = \      
+        "$${LITERAL_HASH}if defined(EABI)" \
+        "DEFFILE ../eabi/hbvideoplaybackview.def" \
+        "$${LITERAL_HASH}else" \
+        "DEFFILE ../bwins/hbvideoplaybackview.def" \
+        "$${LITERAL_HASH}endif"
+    MMP_RULES += defBlock
 }
 
 INCLUDEPATH += ../../inc \
--- a/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml	Thu Jun 24 09:49:13 2010 +0300
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <widget name="content" type="HbWidget">
         <widget name="bufferingIcon" type="HbLabel">
             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
             <icon iconName="preroll_anim" name="icon"/>
             <real name="z" value="6"/>
-            <sizehint height="70" type="PREFERRED" width="70"/>
+            <sizehint height="10.44776un" type="PREFERRED" width="10.44776un"/>
             <bool name="visible" value="FALSE"/>
         </widget>
         <widget name="titleLayout" type="HbWidget">
@@ -20,7 +20,7 @@
                 <string name="heading" value="Group Box"/>
             </widget>
             <real name="z" value="2"/>
-            <sizehint height="33" type="PREFERRED" width="640"/>
+            <sizehint height="4.92537un" type="PREFERRED" width="95.52239un"/>
             <bool name="visible" value="FALSE"/>
             <layout type="stacked">
                 <stackitem itemname="title"/>
@@ -33,32 +33,26 @@
             <layout type="anchor"/>
         </widget>
         <widget name="controlBarLayout" type="HbWidget">
-            <widget name="progressBarLayout" type="HbWidget">
-                <widget name="progressSlider" type="HbProgressSlider">
-                    <integer name="progressValue" value="70"/>
-                    <bool name="minMaxTextVisible" value="TRUE"/>
-                    <enums name="minMaxTextAlignment" value="AlignVCenter|AlignHCenter"/>
-                    <string name="minText"/>
-                    <enums name="orientation" value="Horizontal"/>
-                    <integer name="sliderValue" value="30"/>
-                    <string name="maxText"/>
-                    <bool name="textVisible" value="FALSE"/>
-                    <string name="textAlignment" value="AlignBottom"/>
-                </widget>
-                <real name="z" value="3"/>
-                <bool name="visible" value="TRUE"/>
-                <layout type="anchor">
-                    <anchoritem dst="progressSlider" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="progressSlider" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
-                    <anchoritem dst="progressSlider" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-                </layout>
+            <widget name="progressSlider" type="HbProgressSlider">
+                <integer name="progressValue" value="70"/>
+                <bool name="minMaxTextVisible" value="TRUE"/>
+                <enums name="minMaxTextAlignment" value="AlignVCenter|AlignHCenter"/>
+                <string name="minText"/>
+                <real name="z" value="1"/>
+                <enums name="orientation" value="Horizontal"/>
+                <integer name="sliderValue" value="30"/>
+                <string name="maxText"/>
+                <string name="textAlignment" value="AlignBottom"/>
+                <bool name="textVisible" value="FALSE"/>
+                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="1"/>
+                <sizehint height="5.97015un" type="PREFERRED" width="95.52239un"/>
             </widget>
             <real name="z" value="1"/>
-            <sizehint height="160" type="PREFERRED" width="80"/>
+            <sizehint height="23.8806un" type="PREFERRED" width="95.52239un"/>
             <bool name="visible" value="FALSE"/>
-            <layout orientation="Vertical" spacing="0px" type="linear">
-                <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
-                <linearitem itemname="progressBarLayout"/>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="progressSlider"/>
             </layout>
         </widget>
         <widget name="fileDetailsLayout" type="HbWidget">
@@ -66,7 +60,7 @@
             <real name="z" value="3"/>
             <bool name="visible" value="FALSE"/>
             <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                 <linearitem itemname="fileDetails" spacing="0px"/>
             </layout>
         </widget>
@@ -93,9 +87,9 @@
             </widget>
             <real name="z" value="5"/>
             <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-            <sizehint height="193" type="PREFERRED" width="320"/>
-            <sizehint height="18" type="MINIMUM" width="18"/>
-            <sizehint height="16777215" type="MAXIMUM" width="16777215"/>
+            <sizehint height="28.80597un" type="PREFERRED" width="47.7612un"/>
+            <sizehint height="2.68657un" type="MINIMUM" width="2.68657un"/>
+            <sizehint height="2307732.46823un" type="MAXIMUM" width="2307732.46823un"/>
             <bool name="visible" value="FALSE"/>
             <layout type="stacked">
                 <stackitem itemname="audioOnlyBitmap"/>
@@ -109,33 +103,33 @@
                 <widget name="detailsViewPlayButton" type="HbPushButton">
                     <icon iconName="qtg_mono_play" name="icon"/>
                     <real name="z" value="2"/>
-                    <sizehint height="60" type="PREFERRED" width="60"/>
-                    <contentsmargins bottom="0" left="0" right="0" top="0"/>
+                    <sizehint height="8.95522un" type="PREFERRED" width="8.95522un"/>
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <string name="state" value="normal"/>
                 </widget>
                 <real name="z" value="0"/>
-                <sizehint height="220" type="PREFERRED" width="360"/>
+                <sizehint height="32.83582un" type="PREFERRED" width="53.73134un"/>
                 <layout type="anchor">
-                    <anchoritem dst="detailsViewPlayButton" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
-                    <anchoritem dst="detailsViewPlayButton" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
+                    <anchoritem dst="detailsViewPlayButton" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
+                    <anchoritem dst="detailsViewPlayButton" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
                 </layout>
             </widget>
             <widget name="attachShareButton" type="HbWidget">
                 <widget name="detailsAttachButton" type="HbPushButton">
                     <icon iconName="qtg_mono_attach" name="icon"/>
-                    <sizehint height="40" type="PREFERRED" width="320"/>
+                    <sizehint height="5.97015un" type="PREFERRED" width="47.7612un"/>
                     <bool name="visible" value="FALSE"/>
                     <string name="state" value="normal"/>
                 </widget>
                 <widget name="detailsShareButton" type="HbPushButton">
                     <icon iconName="qtg_mono_share" name="icon"/>
                     <real name="z" value="1"/>
-                    <sizehint height="40" type="PREFERRED" width="320"/>
+                    <sizehint height="5.97015un" type="PREFERRED" width="47.7612un"/>
                     <bool name="visible" value="TRUE"/>
                     <string name="state" value="normal"/>
                 </widget>
                 <real name="z" value="0"/>
-                <sizehint height="50" type="PREFERRED" width="320"/>
+                <sizehint height="7.46269un" type="PREFERRED" width="47.7612un"/>
                 <layout type="stacked">
                     <stackitem itemname="detailsAttachButton"/>
                     <stackitem itemname="detailsShareButton"/>
@@ -143,54 +137,54 @@
             </widget>
             <real name="z" value="4"/>
             <bool name="visible" value="FALSE"/>
-            <layout orientation="Vertical" spacing="0px" type="linear">
-                <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                 <linearitem itemname="small_transparentWindow"/>
                 <linearitem itemname="attachShareButton"/>
             </layout>
         </widget>
         <widget name="rnLogoBitmap" type="HbLabel">
+            <icon iconName="qtg_large_realplayer" name="icon"/>
             <real name="z" value="7"/>
-            <sizehint height="200" type="PREFERRED" width="200"/>
-            <icon iconName="qtg_large_realplayer" name="icon"/>
+            <sizehint height="29.85075un" type="PREFERRED" width="29.85075un"/>
             <bool name="visible" value="FALSE"/>
         </widget>
-        <size height="360" name="size" width="640"/>
+        <size height="var(hb-param-screen-short-edge)" name="size" width="var(hb-param-screen-long-edge)"/>
         <real name="z" value="1"/>
-        <rect height="360" name="geometry" width="640" x="0" y="0"/>
-        <sizehint height="524287" type="MAXIMUM" width="524287"/>
+        <rect height="var(hb-param-screen-short-edge)" name="geometry" width="var(hb-param-screen-long-edge)" x="0un" y="0un"/>
+        <sizehint height="78251.79327un" type="MAXIMUM" width="78251.79327un"/>
         <layout type="anchor">
-            <anchoritem dst="bufferingIcon" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
-            <anchoritem dst="bufferingIcon" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
-            <anchoritem dst="titleLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="titleLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
-            <anchoritem dst="titleLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="titleLayout" dstEdge="BOTTOM" spacing="95" src="" srcEdge="TOP"/>
-            <anchoritem dst="transparentWindow" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="transparentWindow" dstEdge="TOP" spacing="0" src="" srcEdge="TOP"/>
-            <anchoritem dst="transparentWindow" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="transparentWindow" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="controlBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="controlBarLayout" dstEdge="TOP" spacing="-110" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="controlBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="controlBarLayout" dstEdge="BOTTOM" spacing="-60" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="detailsPlaybackWindow" dstEdge="TOP" spacing="0" src="titleLayout" srcEdge="BOTTOM"/>
-            <anchoritem dst="detailsPlaybackWindow" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="detailsPlaybackWindow" dstEdge="RIGHT" spacing="0" src="" srcEdge="CENTERH"/>
-            <anchoritem dst="detailsPlaybackWindow" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="bitmapLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="bitmapLayout" dstEdge="TOP" spacing="0" src="titleLayout" srcEdge="TOP"/>
-            <anchoritem dst="bitmapLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="CENTERH"/>
-            <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="0" src="controlBarLayout" srcEdge="TOP"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="0" src="titleLayout" srcEdge="BOTTOM"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="rnLogoBitmap" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
-            <anchoritem dst="rnLogoBitmap" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
+            <anchoritem dst="bufferingIcon" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
+            <anchoritem dst="bufferingIcon" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
+            <anchoritem dst="titleLayout" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+            <anchoritem dst="titleLayout" dstEdge="TOP" spacing="9.40299un" src="" srcEdge="TOP"/>
+            <anchoritem dst="titleLayout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="titleLayout" dstEdge="BOTTOM" spacing="14.32836un" src="" srcEdge="TOP"/>
+            <anchoritem dst="transparentWindow" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+            <anchoritem dst="transparentWindow" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+            <anchoritem dst="transparentWindow" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="transparentWindow" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="controlBarLayout" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+            <anchoritem dst="controlBarLayout" dstEdge="TOP" spacing="-14.92537un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="controlBarLayout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="controlBarLayout" dstEdge="BOTTOM" spacing="-8.95522un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="detailsPlaybackWindow" dstEdge="TOP" spacing="0un" src="titleLayout" srcEdge="BOTTOM"/>
+            <anchoritem dst="detailsPlaybackWindow" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+            <anchoritem dst="detailsPlaybackWindow" dstEdge="RIGHT" spacing="0un" src="" srcEdge="CENTERH"/>
+            <anchoritem dst="detailsPlaybackWindow" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="bitmapLayout" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+            <anchoritem dst="bitmapLayout" dstEdge="TOP" spacing="0un" src="titleLayout" srcEdge="TOP"/>
+            <anchoritem dst="bitmapLayout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="CENTERH"/>
+            <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="0un" src="controlBarLayout" srcEdge="TOP"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0un" src="" srcEdge="CENTERH"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="0un" src="titleLayout" srcEdge="BOTTOM"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="rnLogoBitmap" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
+            <anchoritem dst="rnLogoBitmap" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
         </layout>
     </widget>
-    <metadata activeUIState="Common ui state" display="NHD landscape" unit="px">
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_landscape" unit="un">
         <resource location="hbvideoplaybackview.qrc"/>
         <uistate name="Common ui state" sections="#common"/>
     </metadata>
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/hbeffect.h	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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:  Implementation of HbEffect
-*
-*/
-
-// Version : %version:   2 %
-
-
-
-#ifndef HBEFFECT_H
-#define HBEFFECT_H
-
-#include <hbwidget.h>
-
-
-class HbEffect : public HbWidget
-{
-    Q_OBJECT
-
-    public:
-        struct EffectStatus
-        {
-            Hb::EffectEvent reason;
-        };
-
-    public:
-        static bool add( QGraphicsItem *item, const QString &filePath, const QString &effectEvent );
-        static bool remove( QGraphicsItem *item, const QString &filePath, const QString &effectEvent );
-        
-        static bool start( QGraphicsItem *item, 
-                           const QString &effectEvent,
-                           QObject *receiver = 0,
-                           const char *member = 0 );
-
-        static bool cancel( QGraphicsItem *item );
-
-        static bool effectRunning( QGraphicsItem *item, const QString &effectEvent = QString() );
-
-    private:
-        void started();
-};
-
-#endif /*HBEFFECT_H*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:   1 %
+// Version : %version:   2 %
 
 
 
@@ -31,7 +31,6 @@
 #include "mpxvideoplaybackviewfiledetails.h"
 
 // FORWARD DECLARATIONS
-class QMPXVideoPlaybackDocumentLoader;
 class QMPXVideoPlaybackControlsController ;
 
 // DATA TYPES
@@ -90,15 +89,12 @@
         */
         inline QMPXVideoPlaybackViewFileDetails* fileDetails();
 
-        inline QMPXVideoPlaybackDocumentLoader* layoutLoader();
-
         TPlaybackViewMode viewMode();
 
         void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true );
 
     public:
         QMPXVideoPlaybackViewFileDetails          *mFileDetails;
-        QMPXVideoPlaybackDocumentLoader           *mLoader;
 
         TMPXPlaybackState                          mState;
         TPlaybackViewMode                          mViewMode;
@@ -129,16 +125,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::layoutLoader
-// -------------------------------------------------------------------------------------------------
-//
-inline
-QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader()
-{
-    return mLoader;
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::viewMode
 // -------------------------------------------------------------------------------------------------
 //
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h	Fri Jun 11 09:44:20 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:  Implementation of QMPXVideoPlaybackDocumentLoader
-*
-*/
-
-// Version : %version:   1 %
-
-
-
-#ifndef MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_
-#define MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_
-
-
-#include <qobject>
-
-class QList;
-class QGraphicsWidget;
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackDocumentLoader : public QObject
-{
-    public:
-        QMPXVideoPlaybackDocumentLoader( QMPXVideoPlaybackControlsController *controller );
-
-        virtual ~QMPXVideoPlaybackDocumentLoader();
-
-    public:
-        QGraphicsWidget* findWidget( const QString &name );
-
-    private:
-        QGraphicsWidget* createWidget( const QString &name );
-        int exist( const QString &name );
-
-    private:
-        QList<QGraphicsWidget*>                 mWidgets;
-        QMPXVideoPlaybackControlsController *mController;
-};
-
-#endif /*MPXVIDEOPLAYBACKDOCUMENTHANDLER_H_*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/hbeffect.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +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:  Implementation of HbEffect
-*
-*/
-
-// Version : %version:   3 %
-
-
-
-#include "mpxvideo_debug.h"
-#include "hbeffect.h"
-
-
-// -------------------------------------------------------------------------------------------------
-// HbEffect::add
-// -------------------------------------------------------------------------------------------------
-//
-bool HbEffect::add( QGraphicsItem *item, const QString &filePath, const QString &effectEvent )
-{
-    MPX_DEBUG(_L("HbEffect::add") );
-
-    Q_UNUSED( item );
-    Q_UNUSED( filePath );
-    Q_UNUSED( effectEvent );
-
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// HbEffect::remove
-// -------------------------------------------------------------------------------------------------
-//
-bool HbEffect::remove( QGraphicsItem *item, const QString &filePath, const QString &effectEvent )
-{
-    MPX_DEBUG(_L("HbEffect::remove") );
-
-    Q_UNUSED( item );
-    Q_UNUSED( filePath );
-    Q_UNUSED( effectEvent );
-
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// HbEffect::start
-// -------------------------------------------------------------------------------------------------
-//
-bool HbEffect::start( 
-    QGraphicsItem *item, const QString &effectEvent, QObject *receiver, const char *member )
-{
-    MPX_DEBUG(_L("HbEffect::start") );
-
-    Q_UNUSED( item );
-    Q_UNUSED( effectEvent );
-
-    HbEffect::EffectStatus status;
-    status.reason = Hb::EffectFinished;
-
-    QMetaObject::invokeMethod(
-        receiver,
-        member,
-        Qt::AutoConnection, 
-        QGenericReturnArgument(),
-        Q_ARG( HbEffect::EffectStatus, status ) );
-
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// HbEffect::cancel
-// -------------------------------------------------------------------------------------------------
-//
-bool HbEffect::cancel( QGraphicsItem *item )
-{
-    MPX_DEBUG(_L("HbEffect::cancel"));
-
-    Q_UNUSED( item );
-
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// HbEffect::effectRunning
-// -------------------------------------------------------------------------------------------------
-//
-bool HbEffect::effectRunning( QGraphicsItem *item, const QString &effectEvent )
-{
-    MPX_DEBUG(_L("HbEffect::effectRunning"));
-
-    Q_UNUSED( item );
-    Q_UNUSED( effectEvent );
-
-    return false;
-}
-
-// End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,14 +15,13 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
 // INCLUDE FILES
 
 
-#include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
 
 // ================= MEMBER FUNCTIONS ==============================================================
@@ -36,7 +35,6 @@
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController()"));
 
-    mLoader = new QMPXVideoPlaybackDocumentLoader( this );
     mFileDetails = new QMPXVideoPlaybackViewFileDetails();
 }
 
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +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:  Implementation of QMPXVideoPlaybackDocumentLoader
-*
-*/
-
-// Version : %version:   2 %
-
-
-
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackdocumentloader.h"
-#include "mpxvideoplaybackcontrolscontroller.h"
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader(
-     QMPXVideoPlaybackControlsController *controller )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader()"));
-
-    mController = controller;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackDocumentLoader::~QMPXVideoPlaybackDocumentLoader
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackDocumentLoader::~QMPXVideoPlaybackDocumentLoader()
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::QMPXVideoPlaybackDocumentLoader") );
-
-    for ( int i = 0 ; i < mWidgets.count() ; i++ )
-    {
-        mWidgets.removeAt( 0 );
-    }
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackDocumentLoader::findWidget()
-// -------------------------------------------------------------------------------------------------
-//
-QGraphicsWidget *QMPXVideoPlaybackDocumentLoader::findWidget( const QString &name )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::findWidget") );
-
-    QGraphicsWidget *object = NULL;
-
-    int index = exist( name );
-
-    if ( index == -1 )
-    {
-        object = createWidget( name );
-    }
-    else
-    {
-        object = mWidgets[ index ];
-    }
-
-    return object;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackDocumentLoader::createWidget()
-// -------------------------------------------------------------------------------------------------
-//
-QGraphicsWidget *QMPXVideoPlaybackDocumentLoader::createWidget( const QString &name )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::createWidget") );
-
-    QGraphicsWidget *object = NULL;
-        
-    if ( name == "progressBarLayout" )
-    {
-        object = new QMPXVideoPlaybackProgressBar( mController );
-        object->setObjectName( name );
-        mWidgets.append( object );
-    }
-
-    return object;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackDocumentLoader::exist()
-// -------------------------------------------------------------------------------------------------
-//
-int QMPXVideoPlaybackDocumentLoader::exist( const QString &name )
-{
-    int i = 0;
-
-    for ( ; i < mWidgets.count() ; i++ )
-    {
-        if( mWidgets[i]->objectName() == name )
-        {
-            break;
-        }
-    }
-
-    if ( i == mWidgets.count() )
-    {
-        i = -1;
-    }
-
-    MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::exist %d"), i );
-
-    return i;
-}
-
-// End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building testmpxvideoplaybackcontrolbar
 #
 #
-# Version : %version:   3 %
+# Version : %version:   4 %
 
 TEMPLATE = app
 TARGET = testmpxvideoplaybackcontrolbar
@@ -30,18 +30,14 @@
 # Input
 HEADERS += testmpxvideoplaybackcontrolbar.h \
            mpxvideoplaybackcontrolscontroller.h \
-           mpxvideoplaybackdocumentloader.h \
            mpxvideoplaybackviewfiledetails.h \
            mpxvideoplaybackprogressbar.h \
            mpxvideoplaybacktoolbar.h \
-           hbeffect.h \
            ../../controlinc/mpxvideoplaybackcontrolbar.h
   
 SOURCES += testmpxvideoplaybackcontrolbar.cpp \
            mpxvideoplaybackcontrolscontroller.cpp \
-           mpxvideoplaybackdocumentloader.cpp \
            mpxvideoplaybackviewfiledetails.cpp \
            mpxvideoplaybackprogressbar.cpp \
            mpxvideoplaybacktoolbar.cpp \
-           hbeffect.cpp \
            ../../controlsrc/mpxvideoplaybackcontrolbar.cpp
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* 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"
@@ -12,10 +12,10 @@
 * Contributors:
 *
 * Description:   tester for methods in TestMPXVideoPlaybackDocumentLoader
-* 
+*
 */
 
-// Version : %version:  5 %
+// Version : %version:  6 %
 
 
 #include <qdebug>
@@ -49,9 +49,9 @@
     pass[0] = argv[0];
     pass[1] = "-o";
     pass[2] = "c:\\data\\testmpxvideoplaybackdocumentloader.txt";
-    
+
     int res = QTest::qExec(&tv, 3, pass);
-    
+
     return res;
 }
 
@@ -102,9 +102,6 @@
     QObject *object = mLoader->createObject( "", "controlBarLayout" );
     QVERIFY( object->objectName() == "controlBarLayout" );
 
-    object = mLoader->createObject( "", "progressBarLayout" );
-    QVERIFY( object->objectName() == "progressBarLayout" );
-
     object = mLoader->createObject( "", "fileDetailsLayout" );
     QVERIFY( object->objectName() == "fileDetailsLayout" );
 
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackprogressbar.h	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +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:  Implementation of QMPXVideoPlaybackProgressBar
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-#ifndef MPXVIDEOPLAYBACKPROGRESSBAR_H_
-#define MPXVIDEOPLAYBACKPROGRESSBAR_H_
-
-#include <qobject>
-
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackProgressBar : public QObject
-{
-    Q_OBJECT
-
-    public:
-        QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller );
-        virtual ~QMPXVideoPlaybackProgressBar();
-
-    public:
-        QMPXVideoPlaybackControlsController *mController;
-};
-
-#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackprogressbar.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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:  Implementation of QMPXVideoPlaybackProgressBar
-*
-*/
-
-// Version : %version:  1 %
-
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackcontrolscontroller.h"
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( 
-        QMPXVideoPlaybackControlsController* controller )
-    : mController( controller )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()"));
-}
-
-//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building testmpxvideoplaybackdocumentloader
 #
 #
-# Version : %version:  5 %
+# Version : %version:  6 %
 
 TEMPLATE = app
 TARGET = testmpxvideoplaybackdocumentloader
@@ -32,7 +32,6 @@
            mpxvideoplaybackcontrolscontroller.h \
            mpxvideoplaybackfiledetailswidget.h \
            mpxvideoplaybackdetailsplaybackwindow.h \
-           mpxvideoplaybackprogressbar.h \
            mpxvideoplaybackcontrolbar.h \
            ../../controlinc/mpxvideoplaybackdocumentloader.h
   
@@ -40,6 +39,5 @@
            mpxvideoplaybackcontrolscontroller.cpp \
            mpxvideoplaybackfiledetailswidget.cpp \
            mpxvideoplaybackdetailsplaybackwindow.cpp \
-           mpxvideoplaybackprogressbar.cpp \
            mpxvideoplaybackcontrolbar.cpp \
            ../../controlsrc/mpxvideoplaybackdocumentloader.cpp
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/src/testmpxvideoviewwrapper.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/src/testmpxvideoviewwrapper.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* 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"
@@ -12,10 +12,10 @@
 * Contributors:
 *
 * Description:   tester for methods in VideoSortFilterProxyModel
-* 
+*
 */
 
-// Version : %version:  8 %
+// Version : %version:  9 %
 
 #include <e32err.h>
 #include <w32std.h>
@@ -53,16 +53,16 @@
 {
     HbApplication app(argc, argv);
     HbMainWindow window;
-    
+
     TestMPXVideoViewWrapper tv;
 
     char *pass[3];
     pass[0] = argv[0];
     pass[1] = "-o";
     pass[2] = "c:\\data\\testmpxvideoviewwrapper.txt";
-    
+
     int res = QTest::qExec(&tv, 3, pass);
-    
+
     return res;
 }
 
@@ -71,9 +71,9 @@
 // ---------------------------------------------------------------------------
 //
 void TestMPXVideoViewWrapper::init()
-{	  
+{
     mBaseVideoView    = new HbVideoBasePlaybackView();
-    TRAPD( err, mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView ) );	  
+    TRAPD( err, mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView ) );
     QVERIFY( err == KErrNone );
 }
 
@@ -86,7 +86,7 @@
     if ( mVideoViewWrapper )
     {
         delete mVideoViewWrapper;
-        mVideoViewWrapper = NULL;        
+        mVideoViewWrapper = NULL;
     }
 
     if ( mBaseVideoView )
@@ -102,9 +102,9 @@
 
     TRAPD(err, mVideoViewWrapper->RequestMediaL());
     QVERIFY( err == KErrNone );
-	        
+
     QVERIFY( mVideoViewWrapper->iMediaRequestStatus == MediaRequested );
-    
+
     cleanup();
 }
 
@@ -114,13 +114,13 @@
 
     TRAPD(err, mVideoViewWrapper->RequestMediaL());
     QVERIFY( err == KErrNone );
-    
+
     mVideoViewWrapper->iFileDetails->mPlaybackMode = EMPXVideoLiveStreaming;
     QVERIFY( mVideoViewWrapper->IsLive() );
 
     mVideoViewWrapper->iFileDetails->mPlaybackMode = EMPXVideoLocal;
     QVERIFY( ! mVideoViewWrapper->IsLive() );
-                
+
     cleanup();
 }
 
@@ -130,7 +130,7 @@
 
     mVideoViewWrapper->iPlaylistView = true;
     QVERIFY( mVideoViewWrapper->IsPlaylist() == true );
-        
+
     mVideoViewWrapper->iPlaylistView = false;
     QVERIFY( mVideoViewWrapper->IsPlaylist() == false );
 
@@ -140,180 +140,180 @@
 void TestMPXVideoViewWrapper::testHandleCommand()
 {
     init();
-    
+
     TRAPD( errReqMedia, mVideoViewWrapper->RequestMediaL() );
     QVERIFY( errReqMedia == KErrNone );
 
     //
     // Test 'Play' command
     //
-    TRAPD( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlay ) );    
+    TRAPD( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlay ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPlay );
-    
+
     //
     // Test 'Pause' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPause ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPause ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPause );
 
     //
     // Test 'Close' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdClose ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdClose ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdClose );
-    
+
     //
     // Test 'Seek Forward' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdSeekForward ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdSeekForward ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdStartVideoSeekingForward );
 
     //
     // Test 'Seek Backward' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdSeekBackward ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdSeekBackward ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdStartVideoSeekingBackward );
-    
+
     //
     // Test 'End Seek' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdEndSeek ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdEndSeek ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdStopVideoSeeking );
-    
+
     //
     // Test 'PlayPause' command
     //
     mVideoViewWrapper->iPlaybackState = EPbStatePlaying;
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlayPause ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlayPause ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPause );
 
     mVideoViewWrapper->iPlaybackState = EPbStatePaused;
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlayPause ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPlayPause ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPlay );
 
     //
     // Test 'Stop' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdStop ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdStop ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdStop );
-    
+
     //
     // Test 'Decrease Volume' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdDecreaseVolume ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdDecreaseVolume ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdHandleDecreaseVolume );
-    
+
     //
     // Test 'Increase Volume' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdIncreaseVolume ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdIncreaseVolume ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdHandleIncreaseVolume );
-        
+
     //
     // Test 'Natural Aspect Ratio' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdNaturalAspectRatio ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdNaturalAspectRatio ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iDisplayHandler->iCommand == EPbCmdNaturalAspectRatio );
-    
+
     //
     // Test 'Zoom Aspect Ratio' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdZoomAspectRatio ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdZoomAspectRatio ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iDisplayHandler->iCommand == EPbCmdZoomAspectRatio );
-    
+
     //
     // Test 'Stretch Aspect Ratio' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdStretchAspectRatio ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdStretchAspectRatio ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iDisplayHandler->iCommand == EPbCmdStretchAspectRatio );
-    
+
     //
     // Test 'Mute' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdMute ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdMute ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdMuteVolume );
-    
+
     //
     // Test 'Un-mute' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdUnMute ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdUnMute ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdUnMuteVolume );
-    
+
     //
     // Test 'Short Press Backward' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdShortPressBackward ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdShortPressBackward ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iProperty == EPbPropertyPosition );
-    
+
     //
     // Test 'Reset Controls' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdResetControls ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdResetControls ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdInitView );
-    
+
     //
     // Test 'Next List Item' command
     //
     mVideoViewWrapper->iPlaylistView = true;
-    mVideoViewWrapper->iFileDetails->mMultiItemPlaylist = true;    
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdNextListItem ) );    
+    mVideoViewWrapper->iFileDetails->mMultiItemPlaylist = true;
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdNextListItem ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdNext );
-    
+
     //
     // Test 'Previous List Item' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPreviousListItem ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdPreviousListItem ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPrevious );
-    
+
     //
     // Test 'End Of Clip' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdEndOfClip ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdEndOfClip ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdEndofClipReached );
-    
+
     //
     // Test 'Custom Pause' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdCustomPause ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdCustomPause ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdCustomPause );
-    
+
     //
     // Test 'Custom Play' command
     //
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdCustomPlay ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdCustomPlay ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdCustomPlay );
-    
+
     //
     // Test 'RealOne Bitmap Timeout' command
     //
     mVideoViewWrapper->iMediaRequestStatus = MediaDelivered;
-    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdRealOneBitmapTimeout ) );    
+    TRAP( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdRealOneBitmapTimeout ) );
     QVERIFY( errHdlCmd == KErrNone );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdPlay );
-    
+
     cleanup();
 }
 
@@ -323,11 +323,11 @@
 
     TRAPD(errReqMedia, mVideoViewWrapper->RequestMediaL());
     QVERIFY( errReqMedia == KErrNone );
-    
+
     mVideoViewWrapper->HandlePluginError( KErrNotSupported );
-    
+
     QVERIFY( mVideoViewWrapper->iView->mCurrentError == KErrNotSupported );
-    
+
     cleanup();
 }
 
@@ -339,51 +339,51 @@
     // Test Video Msg
     //***************************
     CMPXMessage* message = NULL;
-    TRAP_IGNORE( 
-        message = CMPXMessage::NewL();    
+    TRAP_IGNORE(
+        message = CMPXMessage::NewL();
         message->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, KMPXMediaIdVideoPlayback );
         message->SetTObjectValueL<TMPXVideoPlaybackCommand>
                                             ( KMPXMediaVideoPlaybackCommand, EPbCmdTvOutEvent );
         message->SetTObjectValueL<TInt>( KMPXMediaVideoTvOutConnected, ETrue );
     );
     mVideoViewWrapper->HandlePlaybackMessage( message, KErrNone );
-    QVERIFY( mVideoViewWrapper->iFileDetails->mTvOutConnected );    
+    QVERIFY( mVideoViewWrapper->iFileDetails->mTvOutConnected );
     if ( message )
     {
         delete message;
         message = NULL;
-    }    
+    }
 
     //***************************
     // Test General Msg
     //***************************
-    TRAP_IGNORE(     
+    TRAP_IGNORE(
         message = CMPXMessage::NewL();
         message->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, KMPXMessageGeneral );
-        message->SetTObjectValueL<TInt>( KMPXMessageGeneralEvent, 28 );   // EReachedEndOfPlaylist = 28 
+        message->SetTObjectValueL<TInt>( KMPXMessageGeneralEvent, 28 );   // EReachedEndOfPlaylist = 28
         message->SetTObjectValueL<TInt>( KMPXMessageGeneralType, 0 );
-        message->SetTObjectValueL<TInt>( KMPXMessageGeneralData, 0 );   
+        message->SetTObjectValueL<TInt>( KMPXMessageGeneralData, 0 );
     );
-    mVideoViewWrapper->HandlePlaybackMessage( message, KErrNone );    
-    QVERIFY( ! mVideoViewWrapper->iView->mViewActive );    
+    mVideoViewWrapper->HandlePlaybackMessage( message, KErrNone );
+    QVERIFY( ! mVideoViewWrapper->iView->mViewActive );
     if ( message )
     {
         delete message;
         message = NULL;
-    } 
+    }
 
     //***************************
     // Test Video Msg with err
     //***************************
     TRAP_IGNORE( message = CMPXMessage::NewL() );
     mVideoViewWrapper->HandlePlaybackMessage( message, KErrNotFound );
-    QVERIFY( mVideoViewWrapper->iView->mCurrentError == KErrNotFound );    
+    QVERIFY( mVideoViewWrapper->iView->mCurrentError == KErrNotFound );
     if ( message )
     {
         delete message;
         message = NULL;
-    } 
-        
+    }
+
     cleanup();
 }
 
@@ -417,7 +417,7 @@
     // Duration
     //
     int value = 5000;
-    TRAPD(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyDuration, value, KErrNone ) );   
+    TRAPD(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyDuration, value, KErrNone ) );
     QVERIFY( errHdlProp == KErrNone );
 
     QVERIFY( mVideoViewWrapper->iControlsController->mReceivedEvent == EMPXControlCmdSetDuration );
@@ -428,7 +428,7 @@
     //
     value = 500;
 
-    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyPosition, value, KErrNone ) );   
+    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyPosition, value, KErrNone ) );
     QVERIFY( errHdlProp == KErrNone );
 
     QVERIFY( mVideoViewWrapper->iControlsController->mReceivedEvent == EMPXControlCmdSetPosition );
@@ -439,7 +439,7 @@
     //
     value = 10;
 
-    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyVolume, value, KErrNone ) );   
+    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyVolume, value, KErrNone ) );
     QVERIFY( errHdlProp == KErrNone );
 
     QVERIFY( mVideoViewWrapper->iControlsController->mReceivedEvent == EMPXControlCmdSetVolume );
@@ -450,7 +450,7 @@
     //
     value = 1;
 
-    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyMute, value, KErrNone ) );   
+    TRAP(errHdlProp, mVideoViewWrapper->HandlePropertyL( EPbPropertyMute, value, KErrNone ) );
     QVERIFY( errHdlProp == KErrNone );
 
     QVERIFY( mVideoViewWrapper->iControlsController->mReceivedEvent == EMPXControlCmdSetVolume );
@@ -463,19 +463,19 @@
 {
     init();
 
-    mVideoViewWrapper->iFileDetails->clearFileDetails();  
+    mVideoViewWrapper->iFileDetails->clearFileDetails();
 
     CMPXCommand* cmd = NULL;
-    
+
     TRAP_IGNORE( cmd = CMPXCommand::NewL() );
 
     if ( cmd )
     {
         TRAPD(errRetFileName, mVideoViewWrapper->RetrieveFileNameAndModeL( cmd ) );
         QVERIFY( errRetFileName == KErrNone );
-        
-        QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdInitView );    
-        
+
+        QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdInitView );
+
         QCOMPARE( mVideoViewWrapper->iFileDetails->mClipName, QString("testClip.3gp"));
 
         delete cmd;
@@ -500,8 +500,8 @@
 {
     init();
 
-    TRAPD(err, mVideoViewWrapper->DoClosePlayerL());
-    QVERIFY( err == KErrNone );  
+    TRAPD(err, mVideoViewWrapper->DoClosePlayer());
+    QVERIFY( err == KErrNone );
 
     QVERIFY( ! mVideoViewWrapper->iView->mViewActive );
 
@@ -562,7 +562,7 @@
 
     TRAPD( errHdlCmd, mVideoViewWrapper->HandleCommandL( EMPXPbvCmdDecreaseVolume ) );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iCommand == EPbCmdHandleDecreaseVolume );
-    QVERIFY( errHdlCmd == KErrNone );    
+    QVERIFY( errHdlCmd == KErrNone );
 
     QVERIFY( mVideoViewWrapper->iFileDetails->mAudioEnabled );
 
@@ -584,7 +584,7 @@
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iProperty == EPbPropertyPosition );
     QVERIFY( mVideoViewWrapper->iPlaybackUtility->iPropertyValue == 0 );
 
-    QVERIFY( errHdlCmd == KErrNone );  
+    QVERIFY( errHdlCmd == KErrNone );
 
     cleanup();
 }
@@ -651,8 +651,8 @@
 
     TRect rect( 0, 0, 50, 50 );
 
-    mVideoViewWrapper->UpdateVideoRect( 
-        rect.iTl.iX, rect.iTl.iY, rect.iBr.iX, rect.iBr.iY, false );       
+    mVideoViewWrapper->UpdateVideoRect(
+        rect.iTl.iX, rect.iTl.iY, rect.iBr.iX, rect.iBr.iY, false );
 
     QVERIFY( rect == mVideoViewWrapper->iDisplayHandler->iRect );
 
@@ -687,22 +687,22 @@
 
     CMPXMessage* message = NULL;
     TRAP_IGNORE(
-        message = CMPXMessage::NewL();     
+        message = CMPXMessage::NewL();
         message->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, KMPXMediaIdVideoPlayback );
         message->SetTObjectValueL<TMPXVideoPlaybackCommand>
                                             ( KMPXMediaVideoPlaybackCommand, EPbCmdPluginError );
         message->SetTObjectValueL<TInt>( KMPXMediaVideoError, KErrNotSupported );
     );
-    
-    mVideoViewWrapper->HandleVideoPlaybackMessage( message );    
-    
-    QCOMPARE( mVideoViewWrapper->iView->mCurrentError, KErrNotSupported );   
+
+    mVideoViewWrapper->HandleVideoPlaybackMessage( message );
+
+    QCOMPARE( mVideoViewWrapper->iView->mCurrentError, KErrNotSupported );
     if ( message )
     {
         delete message;
-        message = NULL;            
+        message = NULL;
     }
-                        
+
     cleanup();
 }
 
@@ -711,23 +711,23 @@
     init();
 
     CMPXCommand* cmd = NULL;
-	  
+
     TRAP_IGNORE( cmd = CMPXCommand::NewL() );
-    
-    mVideoViewWrapper->HandlePlaybackCommandComplete( cmd, KErrNone );    
-    
+
+    mVideoViewWrapper->HandlePlaybackCommandComplete( cmd, KErrNone );
+
     QVERIFY( mVideoViewWrapper );
-    
+
     delete cmd;
-    cmd = NULL;    
-                            
+    cmd = NULL;
+
     cleanup();
 }
 
 void TestMPXVideoViewWrapper::testHandleMedia()
 {
     init();
-        
+
     CMPXMedia* media = NULL;
 
     //
@@ -735,38 +735,38 @@
     //
     TRAP_IGNORE(
         RArray<TInt> suppIds;
-        CleanupClosePushL( suppIds );            
+        CleanupClosePushL( suppIds );
         suppIds.AppendL( KMPXMediaIdGeneral );
         suppIds.AppendL( KMPXMediaIdVideo );
-    
+
         media = CMPXMedia::NewL( suppIds.Array() );
         CleanupStack::PopAndDestroy( &suppIds );
-    
+
         media->SetTObjectValueL<TInt>( TMPXAttribute( KMPXMediaVideoError ), KErrCancel );
     );
-    
+
     TRAPD( err, mVideoViewWrapper->HandleMediaL( *media, KErrNone ) );
     QVERIFY( err == KErrNone );
-    
+
     QCOMPARE( mVideoViewWrapper->iView->mCurrentError, KErrCancel );
     QVERIFY( ! mVideoViewWrapper->iControlsController->mFileDetailsAdded );
     QVERIFY( mVideoViewWrapper->iMediaRequestStatus == MediaNotRequested );
 
     if ( media )
-    {    
+    {
         delete media;
-        media = NULL;      
+        media = NULL;
     }
-    
+
     //
     // working case - RN logo is not visible
     //
     TRAP_IGNORE(
         RArray<TInt> suppIds;
-        CleanupClosePushL( suppIds );            
+        CleanupClosePushL( suppIds );
         suppIds.AppendL( KMPXMediaIdGeneral );
         suppIds.AppendL( KMPXMediaIdVideo );
-    
+
         media = CMPXMedia::NewL( suppIds.Array() );
         CleanupStack::PopAndDestroy( &suppIds );
     );
@@ -787,9 +787,9 @@
     QVERIFY( mVideoViewWrapper->iMediaRequestStatus == MediaDelivered );
 
     if ( media )
-    {    
+    {
         delete media;
-        media = NULL;      
+        media = NULL;
     }
 
     //
@@ -797,10 +797,10 @@
     //
     TRAP_IGNORE(
         RArray<TInt> suppIds;
-        CleanupClosePushL( suppIds );            
+        CleanupClosePushL( suppIds );
         suppIds.AppendL( KMPXMediaIdGeneral );
         suppIds.AppendL( KMPXMediaIdVideo );
-    
+
         media = CMPXMedia::NewL( suppIds.Array() );
         CleanupStack::PopAndDestroy( &suppIds );
     );
@@ -822,9 +822,9 @@
     QVERIFY( mVideoViewWrapper->iMediaRequestStatus == MediaDelivered );
 
     if ( media )
-    {    
+    {
         delete media;
-        media = NULL;      
+        media = NULL;
     }
 
     cleanup();
--- a/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/src/testprogressbar.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/src/testprogressbar.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* 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"
@@ -12,10 +12,10 @@
 * Contributors:
 *
 * Description:   tester for methods in TestMPXVideoPlaybackButtonBar
-* 
+*
 */
 
-// Version : %version:  5 %
+// Version : %version:  6 %
 
 
 #include <qdebug>
@@ -50,9 +50,9 @@
     pass[0] = argv[0];
     pass[1] = "-o";
     pass[2] = "c:\\data\\testprogressbar.txt";
-    
+
     int res = QTest::qExec(&tv, 3, pass);
-    
+
     return res;
 }
 
@@ -74,7 +74,7 @@
 {
     MPX_ENTER_EXIT(_L("TestProgressBar::setup()"));
 
-    mController = new QMPXVideoPlaybackControlsController();   
+    mController = new QMPXVideoPlaybackControlsController();
     mProgBar = new QMPXVideoPlaybackProgressBar( mController );
 
     mProgBar->initialize();
@@ -114,7 +114,7 @@
     //
     // If it is playing state
     //
-    mController->mState = EPbStatePlaying;        
+    mController->mState = EPbStatePlaying;
 
     emit mProgBar->mProgressSlider->press();
 
@@ -126,8 +126,8 @@
     //
     // If it is pause state
     //
-    mController->mState = EPbStatePaused;        
-    mController->mCommand = EMPXPbvCmdStop;        
+    mController->mState = EPbStatePaused;
+    mController->mCommand = EMPXPbvCmdStop;
 
     emit mProgBar->mProgressSlider->press();
 
@@ -155,7 +155,7 @@
     mProgBar->mDuration = 120;
     mProgBar->mProgressSlider->mSliderValue = 130;
     mController->mTimerAction = EMPXTimerCancel;
-    mController->mCommand = EMPXPbvCmdStop;        
+    mController->mCommand = EMPXPbvCmdStop;
 
     emit mProgBar->mProgressSlider->release();
     QVERIFY( mController->mTimerAction == EMPXTimerReset );
@@ -167,21 +167,21 @@
     //
     mProgBar->mProgressSlider->mSliderValue = -1;
     mController->mTimerAction = EMPXTimerCancel;
-    mController->mCommand = EMPXPbvCmdStop;        
-    mController->mValue = 100;        
+    mController->mCommand = EMPXPbvCmdStop;
+    mController->mValue = 100;
 
     emit mProgBar->mProgressSlider->release();
     QVERIFY( mController->mTimerAction == EMPXTimerReset );
     QVERIFY( ! mProgBar->mSliderDragging );
     QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
     QVERIFY( mController->mValue == 0 );
-    
+
     //
     // 0 <= moved position < duration
     //
     mProgBar->mProgressSlider->mSliderValue = 60;
     mController->mTimerAction = EMPXTimerCancel;
-    mController->mCommand = EMPXPbvCmdStop;        
+    mController->mCommand = EMPXPbvCmdStop;
 
     emit mProgBar->mProgressSlider->release();
     QVERIFY( mController->mTimerAction == EMPXTimerReset );
@@ -299,11 +299,11 @@
 
     // test for 1st block of cases
     mProgBar->updateState( EPbStatePlaying );
-    QVERIFY( mProgBar->isEnabled() );
+    QVERIFY( mProgBar->mProgressSlider->isEnabled() );
 
     // test for 2nd block of cases
     mProgBar->updateState( EPbStateBuffering );
-    QVERIFY( ! mProgBar->isEnabled() );
+    QVERIFY( ! mProgBar->mProgressSlider->isEnabled() );
 
     cleanup();
 }
@@ -399,7 +399,7 @@
 
     setup();
 
-    mProgBar->mDraggingPosition = 10; 
+    mProgBar->mDraggingPosition = 10;
     mProgBar->mDuration = 30;
     mProgBar->mSetPosition = 0;
 
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideodisplayhandler/src/testvideodisplayhandler.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideodisplayhandler/src/testvideodisplayhandler.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -212,24 +212,44 @@
 {
     setup();
         
+    //
+    // get window size
+    //
+    RWindow *window = mBaseVideoView->getWindow();
+    TRect displayRect = TRect( TPoint( window->Position() ), TSize( window->Size() ) );
+
+    //
+    // get window aspect ratio
+    //   if device is in landscape mode, width > height
+    //   if device is in portrait mode, width < height
+    //
+    TReal32 width = (TReal32) displayRect.Width();
+    TReal32 height = (TReal32) displayRect.Height();
+    TReal32 displayAspectRatio = (width > height)? (width / height) : (height / width);
+    
+    //
+    // aspect ratio zoom
+    //
     mFileDetails = new QMPXVideoPlaybackViewFileDetails(); 
     mFileDetails->mVideoHeight = 280;
     mFileDetails->mVideoWidth  = 600;
-    
-    RWindow *window = mBaseVideoView->getWindow();
 
-    TRect displayRect = TRect( window->Position().iX,
-                               window->Position().iY,
-                               window->Position().iX + window->Size().iWidth,                  
-                               window->Position().iY + window->Size().iHeight );
-
-    TReal displayAspectRatio = (TReal32)displayRect.Width() / (TReal32)displayRect.Height();
-    
     int aspectRatio = mDispHdlr->SetDefaultAspectRatioL( mFileDetails, displayAspectRatio );
     
     QVERIFY( aspectRatio == EMMFZoom ); 
        
-    mDispHdlr->RemoveDisplayWindow();    
+    //
+    // aspect ratio stretch
+    //
+    mFileDetails->mVideoHeight = 144;
+    mFileDetails->mVideoWidth  = 220;
+
+    aspectRatio = mDispHdlr->SetDefaultAspectRatioL( mFileDetails, displayAspectRatio );
+    
+    QVERIFY( aspectRatio == EMMFStretch ); 
+ 
+    mDispHdlr->RemoveDisplayWindow();   
+
     cleanup(); 
 }
 
--- a/videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  da1mmcf#14 %
+// Version : %version:  da1mmcf#16 %
 
 
 
@@ -64,14 +64,14 @@
         virtual ~CMPXVideoViewWrapper();
 
     private:
-        CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView );        
+        CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView );
         void ConstructL();
 
     public:
         virtual void HandleCommandL( TInt aCommand );
 
         void RetrieveFileNameAndModeL( CMPXCommand* aCmd );
-        
+
         /*
          *  From MMPXViewActivationObserver
          *  Handle view activation.
@@ -80,7 +80,7 @@
          *  @param aPreviousViewType Previous view type Uid.
          */
         inline void HandleViewActivation( const TUid& /*aCurrentViewType*/,
-                                          const TUid& /*aPreviousViewType*/ ) {}        
+                                          const TUid& /*aPreviousViewType*/ ) {}
 
         /**
         * From MMPXPlaybackObserver
@@ -163,19 +163,19 @@
         */
         void SetPropertyL( TMPXPlaybackProperty aProperty, TInt aValue );
         virtual void RetrievePdlInformationL();
-                     
+
         TBool IsLive();
-        
+
         TBool IsPlaylist();
-       
-        void IssueVideoAppForegroundCmdL(TBool aForeground);        
-        
-        void RequestMediaL();  
-        
+
+        void IssueVideoAppForegroundCmdL(TBool aForeground);
+
+        void RequestMediaL();
+
         void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd, TBool aDoSync = ETrue );
-        
+
         TBool IsAppInFrontL();
-        
+
         /*
          *  Activates an active object to close the player
          *  @since 5.0
@@ -203,14 +203,14 @@
          *  @param aPtr Pointer to callback class
          *  @return KErrNone
          */
-        static TInt ClosePlayerL( TAny* aPtr );
+        static TInt ClosePlayer( TAny* aPtr );
 
         /*
          *  Called to stop and exit the player
          *  @since 3.2
          *  @return void
          */
-        void DoClosePlayerL();
+        void DoClosePlayer();
 
         void HandleVideoPlaybackMessage( CMPXMessage* aMessage );
 
@@ -248,7 +248,7 @@
 
         void HandleGeneralPlaybackMessageL( CMPXMessage* aMessage );
 
-        void SetAspectRatioL( TMPXVideoPlaybackCommand aCmd );        
+        void SetAspectRatioL( TMPXVideoPlaybackCommand aCmd );
 
         void HandleVolumeCmdL( TMPXPlaybackCommand aCmd );
 
@@ -268,9 +268,13 @@
         CMPXVideoPlaybackDisplayHandler*     iDisplayHandler;
         CMPXVideoPlaybackUserInputHandler*   iUserInputHandler;
         QMPXVideoPlaybackControlsController* iControlsController;
-        
+
         TMPXMediaRequestStatus               iMediaRequestStatus;
         TBool                                iPlaylistView;
+        int                                  iPlayPosition;
+        
+    public:
+        friend class HbVideoBasePlaybackView;        
 };
 
 #endif  // __MPXVIDEOVIEWWRAPPER_H__
--- a/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#41 %
+// Version : %version: da1mmcf#43 %
 
 
 
@@ -40,11 +40,14 @@
 
 #include <mpxvideoplaybackdefs.h>
 #include <mpxplaybackcommanddefs.h>
+#include <mpxhbvideocommondefs.h>
 
 #include "mpxvideo_debug.h"
 #include "mpxvideoviewwrapper.h"
 #include "mpxvideoplaybackuids.hrh"
 #include "hbvideobaseplaybackview.h"
+#include "videoactivitystate.h"   
+#include "mpxvideoplaybackviewfiledetails.h"  
 #include "mpxcommonvideoplaybackview.hrh"
 
 
@@ -58,6 +61,7 @@
     : mVideoMpxWrapper( NULL )
     , mTimerForClosingView( NULL )
     , mActivated( false )
+    , mStayPaused ( false )
 {
     MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::HbVideoBasePlaybackView()"));
 }
@@ -79,6 +83,23 @@
     mTimerForClosingView->setSingleShot( true );
     mTimerForClosingView->setInterval( 10 );
     connect( mTimerForClosingView, SIGNAL( timeout() ), this, SIGNAL( activatePreviousView() ) );
+    
+    //
+    // Read activity data ...
+    // If last playback was forced to terminate due to low memory (GOOM, etc.)
+    // then the clip needs to be restored to the last played position 
+    // and the state needs to be paused, since forced termination can only occur for
+    // background apps - so if this happened Video Player must have been in background
+    // which implies paused state
+    //    
+    int lastViewType = VideoActivityState::instance().getActivityData(KEY_VIEWPLUGIN_TYPE).toInt();    
+    if ( lastViewType == MpxHbVideoCommon::PlaybackView ) 
+    {
+        QVariant data = VideoActivityState::instance().getActivityData(KEY_LAST_PLAY_POSITION_ID);
+        mLastPlayPosition = data.toInt();   
+        
+        mStayPaused = true;
+    }     
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -119,14 +140,14 @@
 {
     MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleActivateView()"));
 
-    TRAP_IGNORE( mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) );
+    MPX_TRAPD( err, mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) );
 
     QCoreApplication::instance()->installEventFilter( this );
 
     //
     //  Request the needed Media from the Playback Plugin
     //
-    TRAP_IGNORE( mVideoMpxWrapper->RequestMediaL() );
+    MPX_TRAP( err, mVideoMpxWrapper->RequestMediaL() );
 
     menu()->close();
 
@@ -148,6 +169,8 @@
 {
     MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleDeactivateView()"));
 
+    saveActivityData();
+    
     mActivated = false;
 
     QCoreApplication::instance()->removeEventFilter( this );
@@ -170,6 +193,25 @@
 }
 
 // -------------------------------------------------------------------------------------------------
+//   HbVideoBasePlaybackView::saveActivityData()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoBasePlaybackView::saveActivityData()
+{
+    MPX_DEBUG( _L("HbVideoBasePlaybackView::saveActivityData()") );  
+    
+    // save the activity data
+    QVariant data = QString( mVideoMpxWrapper->iFileDetails->mClipName );
+    VideoActivityState::instance().setActivityData(data, KEY_LAST_PLAYED_CLIP); 
+    
+    data = int( mVideoMpxWrapper->iPlayPosition );
+    VideoActivityState::instance().setActivityData(data, KEY_LAST_PLAY_POSITION_ID);
+    
+    data = bool( mVideoMpxWrapper->iFileDetails->mPlaybackMode == EMPXVideoLocal );
+    VideoActivityState::instance().setActivityData(data, KEY_LAST_LOCAL_PLAYBACK);     
+}
+
+// -------------------------------------------------------------------------------------------------
 //   HbVideoBasePlaybackView::handleClosePlaybackView()
 // -------------------------------------------------------------------------------------------------
 //
--- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackdisplayhandler.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackdisplayhandler.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  21 %
+// Version : %version:  22 %
 
 #include <sysutil.h>
 #include <s32file.h>
@@ -275,18 +275,22 @@
 
         //
         //  if can't find out match aspect ratio in dat file,
-        //  choose the scaling type through the rule
-        //      videoAspectRatio - aDisplayAspectRatio > 0.1 ==> zoom
-        //      videoAspectRatio - aDisplayAspectRatio < 0.1 ==> stretch
-        //      videoAspectRatio = aDisplayAspectRatio ==> natural
+        //  choose the scaling type through the rule        
+        //      aspectRatioDiff =  videoAspectRatio - aDisplayAspectRatio
+        //      aspectRatioDiff ==  0        ==> natural
+        //      aspectRatioDiff > 0.1        ==> zoom
+        //      aspectRatioDiff < - 0.3      ==> natural
+        //      aspectRatioDiff >= - 0.3 and <= 0.1   ==> stretch
         //
+        
         if ( i == cnt )
         {
             if ( videoAspectRatio - aDisplayAspectRatio > 0.1 )
             {
                 scalingType = EMMFZoom;
             }
-            else if ( videoAspectRatio != aDisplayAspectRatio )
+            else if ( ( videoAspectRatio != aDisplayAspectRatio ) &&
+                      ( videoAspectRatio - aDisplayAspectRatio > (- 0.3) ) )
             {
                 scalingType = EMMFStretch;
             }
--- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#33 %
+// Version : %version: da1mmcf#37 %
 
 
 
@@ -266,7 +266,7 @@
         }
         case EMPXPbvCmdPlayPause:
         {
-            MPX_DEBUG(_L("CMPXVideoViewWrapper::HandleCommandL() EMPXPbvCmdPause"));
+            MPX_DEBUG(_L("CMPXVideoViewWrapper::HandleCommandL() EMPXPbvCmdPlayPause"));
 
             if ( iPlaybackState == EPbStatePlaying )
             {
@@ -351,7 +351,7 @@
 
             if ( iPlaylistView && iFileDetails->mMultiItemPlaylist )
             {
-                iPlaybackUtility->CommandL( EPbCmdNext );
+                CreateGeneralPlaybackCommandL( EPbCmdNext );
             }
             else
             {
@@ -366,13 +366,11 @@
 
             if ( iPlaylistView && iFileDetails->mMultiItemPlaylist )
             {
-			    //
-			    // the command is being sent twice on purpose
-                // one EMPXPbvCmdPreviousListItem command only sets the position to 0
-                // the second cmd actually goes to the previous item in the list
+                //
+				// Need to send sync message to go back to a previous clip
+                // regardless of current positoin
 				//
-                iPlaybackUtility->CommandL( EPbCmdPrevious );
-                iPlaybackUtility->CommandL( EPbCmdPrevious );
+                CreateGeneralPlaybackCommandL( EPbCmdPrevious );
             }
             else
             {
@@ -1053,7 +1051,9 @@
                 {
                     iControlsController->handleEvent( EMPXControlCmdSetPosition, aValue );
                 }
-
+                
+                iPlayPosition = aValue;   
+                
                 break;
             }
             case EPbPropertyDuration:
@@ -1105,6 +1105,8 @@
 //
 void CMPXVideoViewWrapper::RetrieveFileNameAndModeL( CMPXCommand* aCmd )
 {
+    MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::RetrieveFileNameAndModeL()"));
+    
     //
     //  set attributes on the command
     //
@@ -1128,29 +1130,29 @@
 
     if ( ! iCloseAO->IsActive() )
     {
-        iCloseAO->Start( TCallBack( CMPXVideoViewWrapper::ClosePlayerL, this ) );
+        iCloseAO->Start( TCallBack( CMPXVideoViewWrapper::ClosePlayer, this ) );
     }
 }
 
 // -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::ClosePlayerL
+//   CMPXVideoViewWrapper::ClosePlayer
 // -------------------------------------------------------------------------------------------------
 //
-TInt CMPXVideoViewWrapper::ClosePlayerL( TAny* aPtr )
+TInt CMPXVideoViewWrapper::ClosePlayer( TAny* aPtr )
 {
-    MPX_DEBUG(_L("CMPXVideoViewWrapper::ClosePlayerL()"));
+    MPX_DEBUG(_L("CMPXVideoViewWrapper::ClosePlayer()"));
 
-    static_cast<CMPXVideoViewWrapper*>(aPtr)->DoClosePlayerL();
+    static_cast<CMPXVideoViewWrapper*>(aPtr)->DoClosePlayer();
     return KErrNone;
 }
 
 // -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::DoClosePlayerL
+//   CMPXVideoViewWrapper::DoClosePlayer
 // -------------------------------------------------------------------------------------------------
 //
-void CMPXVideoViewWrapper::DoClosePlayerL()
+void CMPXVideoViewWrapper::DoClosePlayer()
 {
-    MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::DoClosePlayerL()"));
+    MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::DoClosePlayer()"));
 
     iView->doClosePlayer();
 }
@@ -1505,7 +1507,21 @@
             }
         }
 
-        CreateGeneralPlaybackCommandL( EPbCmdPlay );
+        // if coming back after a forced termination, the playback position must
+        // be restored and state be set to paused, as forced termination can only
+        // happen when app is on background, in which case Video Player is paused
+        // by default
+        if ( iView->mStayPaused )
+        {            
+            CreateGeneralPlaybackCommandL( EPbCmdPause );      
+            SetPropertyL( EPbPropertyPosition, iView->mLastPlayPosition );    
+            iView->mStayPaused = false;
+        }
+        else
+        {
+            CreateGeneralPlaybackCommandL( EPbCmdPlay );
+        }
+        
     }
 }
 
--- a/videoplayback/inc/hbvideobaseplaybackview.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/inc/hbvideobaseplaybackview.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  da1mmcf#17 %
+// Version : %version:  da1mmcf#18 %
 
 
 
@@ -101,6 +101,10 @@
 
         void gestureEvent( QGestureEvent* event );
 
+    private:
+        
+        void saveActivityData();
+
     protected: // data
         CMPXVideoViewWrapper                *mVideoMpxWrapper;
 
@@ -108,6 +112,8 @@
 
         bool                                 mActivated;
         bool                                 mSyncClose;
+        int                                  mLastPlayPosition;
+        bool                                 mStayPaused;
 
     public:
         friend class CMPXVideoViewWrapper;
--- a/videoplayback/videohelix/inc/mpxvideoplaybackstate.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackstate.h	Thu Jun 24 09:49:13 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 
-// Version : %version: 20 %
+// Version : %version: 21 %
 
 
 #ifndef _CMPXVIDEOPLAYBACKSTATE_H_
@@ -225,6 +225,7 @@
         virtual void HandleStop();
         virtual void HandleForeground();
         virtual void HandleBackground();
+        virtual void HandlePause();
 
         // general method
         virtual void HandleSetPositionL(TInt aPosition);
--- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 
-// Version : %version: 45 %
+// Version : %version: 47 %
 
 
 //
@@ -1275,6 +1275,16 @@
     CommandHandleForeground();
 }
 
+//  ------------------------------------------------------------------------------------------------
+//  CMPXInitialisedState::HandlePause()
+//  ------------------------------------------------------------------------------------------------
+void CMPXInitialisedState::HandlePause()
+{
+    MPX_ENTER_EXIT(_L("CMPXInitialisedState::HandlePause()"));
+
+    iVideoPlaybackCtlr->iPlaybackMode->HandlePause();
+}
+
 // *************************************************************************************************
 //
 //                          CMPXPlayingState
@@ -1638,6 +1648,14 @@
     {
         IssuePlayCommand( EMPXVideoPlaying, MMPXPlaybackPluginObserver::EPPlaying, EFalse );
     }
+    else
+    {
+        // As the custom play command could not resume the playback. Send a pause event to 
+        // the view though the MPX FW to get the view state in sync playback plugin. 
+        iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent( MMPXPlaybackPluginObserver::EPPaused,
+                                                              0,
+                                                              KErrNone );
+    }
 }
 
 // -------------------------------------------------------------------------------------------------
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/inc/videohelixtest.h	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/inc/videohelixtest.h	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: e003sa33#15 %
+// Version : %version: 16 %
 
 
 #ifndef __VHPPTESTCASE_H__
@@ -35,10 +35,10 @@
 #include <ctsydomainpskeys.h>
 #include <mmf/common/mmferrors.h>
 
-#include <accessoryserver.h>
-#include <accessorycontrol.h>
-#include <accpolgidheader.h>
-#include <accpolgenericid.h>
+#include <AccessoryServer.h>
+#include <AccessoryControl.h>
+#include <AccPolGIDHeader.h>
+#include <AccPolGenericID.h>
 
 #include <mpxvideoplaybackdefs.h>
 #include "timeoutController.h"
--- a/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 33 %
+// Version : %version: da1mmcf#35 %
 
 
 #include <QApplication>
@@ -150,13 +150,20 @@
         // check latest plugin type from activity manager data and create + activate it 
         // CollectionView (default) and playbackview are the ones that are accepted
         MpxHbVideoCommon::MpxHbVideoViewType viewType = MpxHbVideoCommon::CollectionView;
-        int typeGotten = VideoActivityState::instance().getActivityData(VideoActivityData::KEY_VIEWPLUGIN_TYPE).toInt();
-        if(typeGotten == MpxHbVideoCommon::CollectionView || typeGotten == MpxHbVideoCommon::PlaybackView)
+        int typeGotten = VideoActivityState::instance().getActivityData(KEY_VIEWPLUGIN_TYPE).toInt();
+        
+        if ( typeGotten == MpxHbVideoCommon::PlaybackView )  
         {
+            createPlaybackView(); 
             viewType = MpxHbVideoCommon::MpxHbVideoViewType(typeGotten);
+            QVariant data = VideoActivityState::instance().getActivityData(KEY_LAST_PLAYED_CLIP);
+            playMedia( data.toString() );
         }
-        loadPluginAndCreateView( viewType );  
-        activateView( viewType );
+        else
+        {
+            loadPluginAndCreateView( viewType );  
+            activateView( viewType );        
+        }
     }
             
 }
@@ -462,22 +469,31 @@
         HbActivityManager *actManager = qobject_cast<HbApplication*>(qApp)->activityManager();
         
         //
+        // deactivate is the final point for current plugin to save it's activity data into 
+        // VideoActivityState before they are saved to to activity manager
+        //
+        mCurrentViewPlugin->deactivateView();        
+        
+        //
         // get and save recent view type: either playback or collection view plugins are currently used.
         // activity will not be saved from the details plugin
         //
         int viewType = MpxHbVideoCommon::CollectionView;
         if(mCurrentViewPlugin == mPlaybackViewPlugin)
         {
-            viewType = MpxHbVideoCommon::PlaybackView;
+            // for playback view, the state preservation and restoration should only be done
+            // for loacl clips (non-streaming) - so set KEY_VIEWPLUGIN_TYPE to PlaybackView only
+            // for local clips. Otherwise the default value CollectionView should be set.
+            //
+            QVariant playdata = VideoActivityState::instance().getActivityData(KEY_LAST_LOCAL_PLAYBACK);
+            if  ( playdata.toBool() )
+            {
+                viewType = MpxHbVideoCommon::PlaybackView;
+            }            
         }
-        data = viewType;
-        localActivity.setActivityData(data, VideoActivityData::KEY_VIEWPLUGIN_TYPE);
         
-        //
-        // deactivate is the final point for current plugin to save it's activity data into 
-        // VideoActivityState before they are saved to to activity manager
-        //
-        mCurrentViewPlugin->deactivateView();
+        data = viewType;
+        localActivity.setActivityData(data, KEY_VIEWPLUGIN_TYPE);
         
         // save data to activity manager
         actManager->addActivity(ACTIVITY_VIDEOPLAYER_MAINVIEW, 
--- a/videoplayerapp/videoplayerengine/videoplayerengine.pro	Fri Jun 11 09:44:20 2010 +0300
+++ b/videoplayerapp/videoplayerengine/videoplayerengine.pro	Thu Jun 24 09:49:13 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building Videoplayer components
 #
 #
-# Version : %version: 26 %
+# Version : %version: 27 %
 
 
 TEMPLATE = lib
@@ -31,6 +31,13 @@
     INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \
                    $$APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE
     BLD_INF_RULES.prj_exports += "rom/videoplayerengine.iby CORE_APP_LAYER_IBY_EXPORT_PATH(videoplayerengine.iby)"
+    defBlock = \      
+        "$${LITERAL_HASH}if defined(EABI)" \
+        "DEFFILE ../eabi/videoplayerengine.def" \
+        "$${LITERAL_HASH}else" \
+        "DEFFILE ../bwins/videoplayerengine.def" \
+        "$${LITERAL_HASH}endif"
+    MMP_RULES += defBlock
 }
 
 INCLUDEPATH += ../../inc \
@@ -48,6 +55,7 @@
         -lxqservice.dll \
         -lxqserviceutil.dll \
         -lflogger.dll \
+        -lefsrv
 
 DEPENDPATH += ../../inc ../inc inc
 VPATH += src