201011
authorhgs
Thu, 01 Apr 2010 23:32:44 +0300
changeset 35 3738fe97f027
parent 34 bbb98528c666
child 36 8aed59de29f9
201011
inc/mpxhbvideocommondefs.h
videocollection/bwins/videocollectionwrapperu.def
videocollection/eabi/videocollectionwrapperu.def
videocollection/inc/videocollectioncommon.h
videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp
videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h
videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h
videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfilecopy.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp
videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp
videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp
videocollection/tsrc/stubs/inc/centralrepository.h
videocollection/tsrc/stubs/inc/hbabstractitemview.h
videocollection/tsrc/stubs/inc/hbaction.h
videocollection/tsrc/stubs/inc/hbdialog.h
videocollection/tsrc/stubs/inc/hbdocumentloader.h
videocollection/tsrc/stubs/inc/hbeffect.h
videocollection/tsrc/stubs/inc/hbinputdialog.h
videocollection/tsrc/stubs/inc/hblistview.h
videocollection/tsrc/stubs/inc/hblistviewitem.h
videocollection/tsrc/stubs/inc/hbmainwindow.h
videocollection/tsrc/stubs/inc/hbmenu.h
videocollection/tsrc/stubs/inc/hbnamespace.h
videocollection/tsrc/stubs/inc/hbstackedwidget.h
videocollection/tsrc/stubs/inc/hbstyleloader.h
videocollection/tsrc/stubs/inc/hbview.h
videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h
videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h
videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h
videocollection/tsrc/stubs/src/centralrepository.cpp
videocollection/tsrc/stubs/src/hbdialog.cpp
videocollection/tsrc/stubs/src/hbdocumentloader.cpp
videocollection/tsrc/stubs/src/hbinputdialog.cpp
videocollection/tsrc/stubs/src/hblistview.cpp
videocollection/tsrc/stubs/src/hbmainwindow.cpp
videocollection/tsrc/stubs/src/hbmenu.cpp
videocollection/tsrc/stubs/src/hbstackedwidget.h
videocollection/tsrc/stubs/src/hbstyleloader.cpp
videocollection/tsrc/stubs/src/videocollectionuiloader.cpp
videocollection/tsrc/stubs/src/videocollectionviewutils.cpp
videocollection/tsrc/stubs/src/videolistdatamodel.cpp
videocollection/tsrc/stubs/src/videolistselectiondialog.cpp
videocollection/tsrc/stubs/src/videolistview.cpp
videocollection/tsrc/stubs/src/videolistwidget.cpp
videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp
videocollection/tsrc/stubs/stubs.pro
videocollection/videocollectionview/data/collectionview.docml
videocollection/videocollectionview/data/effects/slide_in_to_left_and_fade_in.fxml
videocollection/videocollectionview/data/effects/slide_out_to_left_and_fade_out.fxml
videocollection/videocollectionview/data/hblistviewitem.css
videocollection/videocollectionview/data/images/mono_video_addvideos.svg
videocollection/videocollectionview/data/images/mono_video_removevideos.svg
videocollection/videocollectionview/data/images/mono_video_sortvideos.svg
videocollection/videocollectionview/data/images/qtg_mono_remove_from_video_collection.svg
videocollection/videocollectionview/data/images/qtg_mono_video_collection.svg
videocollection/videocollectionview/data/images/qtg_mono_video_services.svg
videocollection/videocollectionview/data/images/services_icon.svg
videocollection/videocollectionview/data/images/services_icon_pressed.svg
videocollection/videocollectionview/data/videocollectionview.qrc
videocollection/videocollectionview/inc/videocollectionuiloader.h
videocollection/videocollectionview/inc/videocollectionviewplugin.h
videocollection/videocollectionview/inc/videolistselectiondialog.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/videolistselectiondialog.cpp
videocollection/videocollectionview/src/videolistview.cpp
videocollection/videocollectionview/src/videolistwidget.cpp
videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h
videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp
videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro
videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h
videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp
videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro
videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h
videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp
videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro
videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp
videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro
videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h
videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/videolistselectiondialogtester.h
videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp
videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro
videocollection/videocollectionwrapper/inc/videocollectionclient.h
videocollection/videocollectionwrapper/inc/videolistdatamodel.h
videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h
videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h
videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h
videocollection/videocollectionwrapper/src/videocollectionclient.cpp
videocollection/videocollectionwrapper/src/videocollectionlistener.cpp
videocollection/videocollectionwrapper/src/videocollectionutils.cpp
videocollection/videocollectionwrapper/src/videolistdatamodel.cpp
videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp
videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp
videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp
videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h
videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp
videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/stub/inc/mpxmediaarray.h
videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h
videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h
videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h
videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h
videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp
videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp
videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h
videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h
videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp
videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp
videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/mediaobjectfactory.h
videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h
videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp
videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp
videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h
videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp
videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h
videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp
videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp
videocollection/videofiledetailsview/data/videofiledetails.qrc
videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h
videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp
videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp
videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrol.hrh
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolpolicy.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfullscreencontrol.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp
videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro
videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/hbvideoplaybackview/resources/animation.axml
videoplayback/hbvideoplaybackview/resources/effects/controlbar_appear.fxml
videoplayback/hbvideoplaybackview/resources/effects/controlbar_disappear.fxml
videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml
videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc
videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackbuttonbar.h
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackbuttonbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/inc/testmpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/src/testmpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackbuttonbar.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackviewfiledetails.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackbuttonbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackviewfiledetails.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/hbvideobaseplaybackview.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp
videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/inc/mpxvideoplaybackfullscreencontrol.h
videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/src/mpxvideoplaybackfullscreencontrol.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoviewwrapper.h
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoviewwrapper.cpp
videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackbuttonbar.h
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrol.hrh
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrolbar.h
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackprogressbar.h
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackbuttonbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackprogressbar.cpp
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h
videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp
videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h
videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp
videoplayback/hbvideoplaybackview/viewsrc/hbvideoplaybackview.cpp
videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp
videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp
videoplayback/inc/hbvideobaseplaybackview.h
videoplayback/videohelix/src/mpxvideohelixplayback.cpp
videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp
videoplayback/videohelix/src/mpxvideoplaybackmode.cpp
videoplayback/videohelix/src/mpxvideoplaybackstate.cpp
videoplayback/videohelix/src/mpxvideoplayerutility.cpp
videoplayerapp/bwins/videoplayerengineu.def
videoplayerapp/eabi/videoplayerengineu.def
videoplayerapp/inc/videoplayerengine.h
videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h
videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h
videoplayerapp/videoplayerengine/src/mpxvideoplaybackwrapper.cpp
videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp
videoplayerapp/videoplayerengine/src/videoplayerengine.cpp
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbinstance.h
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbview.h
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/hbinstance.cpp
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp
videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mpxhbvideocommondefs.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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:  definition of enum value for each view
+*
+*/
+
+// Version : %version: 6 %
+
+#ifndef MPXHBVIDEOCOMMONDEFS_H
+#define MPXHBVIDEOCOMMONDEFS_H
+
+namespace MpxHbVideoCommon
+{
+
+    const long int KMpxVideoPluginTypePlaybackUid   = {0x20024338};
+    const long int KMpxVideoPluginTypeCollectionUid = {0x200211FC};
+    const long int KMpxVideoPluginTypeFileDetailsUid = {0x20021200};
+    
+    const long int KMpxVideoPluginDllPlaybackUid   = {0x20024335};
+    const long int KMpxVideoPluginDllCollectionUid = {0x200211FB};
+    const long int KMpxVideoPluginDllFileDetailsUid = {0x200211FF};
+
+    enum MpxHbVideoCommand 
+    {
+        ActivateCollectionView,
+        ActivatePlaybackView,
+        ActivateVideoDetailsView,
+        DoDelayedLoad
+    };
+
+    enum MpxHbVideoViewType 
+    {
+        CollectionView, 
+        PlaybackView,
+        VideoDetailsView
+    };
+}
+
+#endif	// MPXHBVIDEOCOMMONDEFS_H
--- a/videocollection/bwins/videocollectionwrapperu.def	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/bwins/videocollectionwrapperu.def	Thu Apr 01 23:32:44 2010 +0300
@@ -5,73 +5,74 @@
 	?removeThumbnail@VideoThumbnailData@@QAE_NVTMPXItemId@@@Z @ 4 NONAME ; bool VideoThumbnailData::removeThumbnail(class TMPXItemId)
 	?deleteItems@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 5 NONAME ; int VideoSortFilterProxyModel::deleteItems(class QList<class QModelIndex> const &)
 	?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 6 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *)
-	?instance@VideoCollectionWrapper@@SAAAV1@XZ @ 7 NONAME ; class VideoCollectionWrapper & VideoCollectionWrapper::instance(void)
-	?back@VideoSortFilterProxyModel@@QAEHXZ @ 8 NONAME ; int VideoSortFilterProxyModel::back(void)
-	?modelReady@VideoSortFilterProxyModel@@IAEXXZ @ 9 NONAME ; void VideoSortFilterProxyModel::modelReady(void)
-	?albumChangedSlot@VideoSortFilterProxyModel@@AAEXXZ @ 10 NONAME ; void VideoSortFilterProxyModel::albumChangedSlot(void)
-	?addItemsInAlbum@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 11 NONAME ; int VideoSortFilterProxyModel::addItemsInAlbum(class TMPXItemId, class QList<class TMPXItemId> const &)
+	?removeItemsFromAlbum@VideoSortFilterProxyModel@@QAEHAAVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 7 NONAME ; int VideoSortFilterProxyModel::removeItemsFromAlbum(class TMPXItemId &, class QList<class TMPXItemId> const &)
+	?instance@VideoCollectionWrapper@@SAAAV1@XZ @ 8 NONAME ; class VideoCollectionWrapper & VideoCollectionWrapper::instance(void)
+	?back@VideoSortFilterProxyModel@@QAEHXZ @ 9 NONAME ; int VideoSortFilterProxyModel::back(void)
+	?modelReady@VideoSortFilterProxyModel@@IAEXXZ @ 10 NONAME ; void VideoSortFilterProxyModel::modelReady(void)
+	?albumChangedSlot@VideoSortFilterProxyModel@@AAEXXZ @ 11 NONAME ; void VideoSortFilterProxyModel::albumChangedSlot(void)
 	?qt_metacall@VideoThumbnailData@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 12 NONAME ; int VideoThumbnailData::qt_metacall(enum QMetaObject::Call, int, void * *)
 	??1VideoThumbnailData@@EAE@XZ @ 13 NONAME ; VideoThumbnailData::~VideoThumbnailData(void)
 	??_EVideoThumbnailData@@UAE@I@Z @ 14 NONAME ; VideoThumbnailData::~VideoThumbnailData(unsigned int)
 	?getMediaFilePathForId@VideoSortFilterProxyModel@@QAE?AVQString@@VTMPXItemId@@@Z @ 15 NONAME ; class QString VideoSortFilterProxyModel::getMediaFilePathForId(class TMPXItemId)
-	?qt_metacast@VideoCollectionWrapper@@UAEPAXPBD@Z @ 16 NONAME ; void * VideoCollectionWrapper::qt_metacast(char const *)
-	?fullDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 17 NONAME ; void VideoSortFilterProxyModel::fullDetailsReady(class TMPXItemId)
-	?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *, int)
-	?removeAlbums@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 19 NONAME ; int VideoSortFilterProxyModel::removeAlbums(class QList<class QModelIndex> const &)
-	?instance@VideoThumbnailData@@SAAAV1@XZ @ 20 NONAME ; class VideoThumbnailData & VideoThumbnailData::instance(void)
-	?fetchItemDetails@VideoSortFilterProxyModel@@QAEHABVQModelIndex@@@Z @ 21 NONAME ; int VideoSortFilterProxyModel::fetchItemDetails(class QModelIndex const &)
-	??0VideoCollectionWrapper@@AAE@XZ @ 22 NONAME ; VideoCollectionWrapper::VideoCollectionWrapper(void)
-	?metaObject@VideoSortFilterProxyModel@@UBEPBUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const * VideoSortFilterProxyModel::metaObject(void) const
-	?metaObject@VideoCollectionWrapper@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * VideoCollectionWrapper::metaObject(void) const
-	?open@VideoSortFilterProxyModel@@QAEHH@Z @ 25 NONAME ; int VideoSortFilterProxyModel::open(int)
-	?lessThan@VideoSortFilterProxyModel@@MBE_NABVQModelIndex@@0@Z @ 26 NONAME ; bool VideoSortFilterProxyModel::lessThan(class QModelIndex const &, class QModelIndex const &) const
-	?getStaticMetaObject@VideoCollectionWrapper@@SAABUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const & VideoCollectionWrapper::getStaticMetaObject(void)
-	?indexOfId@VideoSortFilterProxyModel@@QAE?AVQModelIndex@@VTMPXItemId@@@Z @ 28 NONAME ; class QModelIndex VideoSortFilterProxyModel::indexOfId(class TMPXItemId)
-	??0VideoSortFilterProxyModel@@QAE@HPAVQObject@@@Z @ 29 NONAME ; VideoSortFilterProxyModel::VideoSortFilterProxyModel(int, class QObject *)
-	?getStaticMetaObject@VideoSortFilterProxyModel@@SAABUQMetaObject@@XZ @ 30 NONAME ; struct QMetaObject const & VideoSortFilterProxyModel::getStaticMetaObject(void)
-	?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 31 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *)
-	?doSorting@VideoSortFilterProxyModel@@QAEXHW4SortOrder@Qt@@_N@Z @ 32 NONAME ; void VideoSortFilterProxyModel::doSorting(int, enum Qt::SortOrder, bool)
-	?getOpenItem@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@XZ @ 33 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getOpenItem(void) const
-	?startBackgroundFetching@VideoThumbnailData@@QAEXPAVVideoSortFilterProxyModel@@H@Z @ 34 NONAME ; void VideoThumbnailData::startBackgroundFetching(class VideoSortFilterProxyModel *, int)
-	??_EVideoCollectionWrapper@@UAE@I@Z @ 35 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(unsigned int)
-	?resolveAlbumName@VideoSortFilterProxyModel@@QBE?AVQString@@ABV2@@Z @ 36 NONAME ; class QString VideoSortFilterProxyModel::resolveAlbumName(class QString const &) const
-	?setGenericIdFilter@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@_N@Z @ 37 NONAME ; void VideoSortFilterProxyModel::setGenericIdFilter(class TMPXItemId, bool)
-	?getStaticMetaObject@VideoThumbnailData@@SAABUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const & VideoThumbnailData::getStaticMetaObject(void)
-	?qt_metacall@VideoCollectionWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 39 NONAME ; int VideoCollectionWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *, int)
-	?enableBackgroundFetching@VideoThumbnailData@@QAEX_N@Z @ 41 NONAME ; void VideoThumbnailData::enableBackgroundFetching(bool)
-	?getMediaIdAtIndex@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@ABVQModelIndex@@@Z @ 42 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getMediaIdAtIndex(class QModelIndex const &) const
-	?connectSignals@VideoSortFilterProxyModel@@AAE_NXZ @ 43 NONAME ; bool VideoSortFilterProxyModel::connectSignals(void)
-	?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *, int)
-	?staticMetaObject@VideoSortFilterProxyModel@@2UQMetaObject@@B @ 45 NONAME ; struct QMetaObject const VideoSortFilterProxyModel::staticMetaObject
-	?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 46 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *)
-	?asyncStatus@VideoCollectionWrapper@@IAEXHAAVQVariant@@@Z @ 47 NONAME ; void VideoCollectionWrapper::asyncStatus(int, class QVariant &)
-	?initialize@VideoSortFilterProxyModel@@QAEHPAVVideoListDataModel@@@Z @ 48 NONAME ; int VideoSortFilterProxyModel::initialize(class VideoListDataModel *)
-	?modelChanged@VideoSortFilterProxyModel@@IAEXXZ @ 49 NONAME ; void VideoSortFilterProxyModel::modelChanged(void)
-	?thumbnailsFetched@VideoThumbnailData@@IAEXV?$QList@VTMPXItemId@@@@@Z @ 50 NONAME ; void VideoThumbnailData::thumbnailsFetched(class QList<class TMPXItemId>)
-	?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 51 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *)
-	?processSorting@VideoSortFilterProxyModel@@AAEXXZ @ 52 NONAME ; void VideoSortFilterProxyModel::processSorting(void)
-	?getSorting@VideoSortFilterProxyModel@@QAEXAAHAAW4SortOrder@Qt@@@Z @ 53 NONAME ; void VideoSortFilterProxyModel::getSorting(int &, enum Qt::SortOrder &)
-	?filterAcceptsRow@VideoSortFilterProxyModel@@MBE_NHABVQModelIndex@@@Z @ 54 NONAME ; bool VideoSortFilterProxyModel::filterAcceptsRow(int, class QModelIndex const &) const
-	?metaObject@VideoThumbnailData@@UBEPBUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const * VideoThumbnailData::metaObject(void) const
-	?tr@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 56 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *, int)
-	?disconnectSignals@VideoSortFilterProxyModel@@AAEXXZ @ 57 NONAME ; void VideoSortFilterProxyModel::disconnectSignals(void)
-	?getModel@VideoCollectionWrapper@@QAEPAVVideoSortFilterProxyModel@@H@Z @ 58 NONAME ; class VideoSortFilterProxyModel * VideoCollectionWrapper::getModel(int)
-	?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 59 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *, int)
-	?openItem@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@@Z @ 60 NONAME ; int VideoSortFilterProxyModel::openItem(class TMPXItemId)
-	?qt_metacast@VideoThumbnailData@@UAEPAXPBD@Z @ 61 NONAME ; void * VideoThumbnailData::qt_metacast(char const *)
-	?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 62 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *)
-	??_EVideoSortFilterProxyModel@@UAE@I@Z @ 63 NONAME ; VideoSortFilterProxyModel::~VideoSortFilterProxyModel(unsigned int)
-	?addNewAlbum@VideoSortFilterProxyModel@@QAE?AVTMPXItemId@@ABVQString@@@Z @ 64 NONAME ; class TMPXItemId VideoSortFilterProxyModel::addNewAlbum(class QString const &)
-	?enableThumbnailCreation@VideoThumbnailData@@QAEX_N@Z @ 65 NONAME ; void VideoThumbnailData::enableThumbnailCreation(bool)
-	?qt_metacall@VideoSortFilterProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 66 NONAME ; int VideoSortFilterProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?freeThumbnailData@VideoThumbnailData@@QAEXXZ @ 67 NONAME ; void VideoThumbnailData::freeThumbnailData(void)
-	?shortDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 68 NONAME ; void VideoSortFilterProxyModel::shortDetailsReady(class TMPXItemId)
-	?qt_metacast@VideoSortFilterProxyModel@@UAEPAXPBD@Z @ 69 NONAME ; void * VideoSortFilterProxyModel::qt_metacast(char const *)
-	?staticMetaObject@VideoCollectionWrapper@@2UQMetaObject@@B @ 70 NONAME ; struct QMetaObject const VideoCollectionWrapper::staticMetaObject
-	?tr@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *)
-	??1VideoCollectionWrapper@@EAE@XZ @ 72 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(void)
-	?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 73 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *, int)
-	??0VideoThumbnailData@@AAE@XZ @ 74 NONAME ; VideoThumbnailData::VideoThumbnailData(void)
-	?staticMetaObject@VideoThumbnailData@@2UQMetaObject@@B @ 75 NONAME ; struct QMetaObject const VideoThumbnailData::staticMetaObject
+	?setAlbumInUse@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@@Z @ 16 NONAME ; void VideoSortFilterProxyModel::setAlbumInUse(class TMPXItemId)
+	?qt_metacast@VideoCollectionWrapper@@UAEPAXPBD@Z @ 17 NONAME ; void * VideoCollectionWrapper::qt_metacast(char const *)
+	?addItemsInAlbum@VideoSortFilterProxyModel@@QAEHAAVTMPXItemId@@ABV?$QList@VTMPXItemId@@@@@Z @ 18 NONAME ; int VideoSortFilterProxyModel::addItemsInAlbum(class TMPXItemId &, class QList<class TMPXItemId> const &)
+	?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 19 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *, int)
+	?removeAlbums@VideoSortFilterProxyModel@@QAEHABV?$QList@VQModelIndex@@@@@Z @ 20 NONAME ; int VideoSortFilterProxyModel::removeAlbums(class QList<class QModelIndex> const &)
+	?instance@VideoThumbnailData@@SAAAV1@XZ @ 21 NONAME ; class VideoThumbnailData & VideoThumbnailData::instance(void)
+	?fetchItemDetails@VideoSortFilterProxyModel@@QAEHABVQModelIndex@@@Z @ 22 NONAME ; int VideoSortFilterProxyModel::fetchItemDetails(class QModelIndex const &)
+	??0VideoCollectionWrapper@@AAE@XZ @ 23 NONAME ; VideoCollectionWrapper::VideoCollectionWrapper(void)
+	?metaObject@VideoSortFilterProxyModel@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * VideoSortFilterProxyModel::metaObject(void) const
+	?metaObject@VideoCollectionWrapper@@UBEPBUQMetaObject@@XZ @ 25 NONAME ; struct QMetaObject const * VideoCollectionWrapper::metaObject(void) const
+	?open@VideoSortFilterProxyModel@@QAEHH@Z @ 26 NONAME ; int VideoSortFilterProxyModel::open(int)
+	?lessThan@VideoSortFilterProxyModel@@MBE_NABVQModelIndex@@0@Z @ 27 NONAME ; bool VideoSortFilterProxyModel::lessThan(class QModelIndex const &, class QModelIndex const &) const
+	?getStaticMetaObject@VideoCollectionWrapper@@SAABUQMetaObject@@XZ @ 28 NONAME ; struct QMetaObject const & VideoCollectionWrapper::getStaticMetaObject(void)
+	?indexOfId@VideoSortFilterProxyModel@@QAE?AVQModelIndex@@VTMPXItemId@@@Z @ 29 NONAME ; class QModelIndex VideoSortFilterProxyModel::indexOfId(class TMPXItemId)
+	??0VideoSortFilterProxyModel@@QAE@HPAVQObject@@@Z @ 30 NONAME ; VideoSortFilterProxyModel::VideoSortFilterProxyModel(int, class QObject *)
+	?getStaticMetaObject@VideoSortFilterProxyModel@@SAABUQMetaObject@@XZ @ 31 NONAME ; struct QMetaObject const & VideoSortFilterProxyModel::getStaticMetaObject(void)
+	?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *)
+	?doSorting@VideoSortFilterProxyModel@@QAEXHW4SortOrder@Qt@@_N@Z @ 33 NONAME ; void VideoSortFilterProxyModel::doSorting(int, enum Qt::SortOrder, bool)
+	?getOpenItem@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@XZ @ 34 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getOpenItem(void) const
+	?startBackgroundFetching@VideoThumbnailData@@QAEXPAVVideoSortFilterProxyModel@@H@Z @ 35 NONAME ; void VideoThumbnailData::startBackgroundFetching(class VideoSortFilterProxyModel *, int)
+	??_EVideoCollectionWrapper@@UAE@I@Z @ 36 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(unsigned int)
+	?resolveAlbumName@VideoSortFilterProxyModel@@QBE?AVQString@@ABV2@@Z @ 37 NONAME ; class QString VideoSortFilterProxyModel::resolveAlbumName(class QString const &) const
+	?setGenericIdFilter@VideoSortFilterProxyModel@@QAEXVTMPXItemId@@_N@Z @ 38 NONAME ; void VideoSortFilterProxyModel::setGenericIdFilter(class TMPXItemId, bool)
+	?getStaticMetaObject@VideoThumbnailData@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & VideoThumbnailData::getStaticMetaObject(void)
+	?qt_metacall@VideoCollectionWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 40 NONAME ; int VideoCollectionWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString VideoThumbnailData::trUtf8(char const *, char const *, int)
+	?enableBackgroundFetching@VideoThumbnailData@@QAEX_N@Z @ 42 NONAME ; void VideoThumbnailData::enableBackgroundFetching(bool)
+	?getMediaIdAtIndex@VideoSortFilterProxyModel@@QBE?AVTMPXItemId@@ABVQModelIndex@@@Z @ 43 NONAME ; class TMPXItemId VideoSortFilterProxyModel::getMediaIdAtIndex(class QModelIndex const &) const
+	?connectSignals@VideoSortFilterProxyModel@@AAE_NXZ @ 44 NONAME ; bool VideoSortFilterProxyModel::connectSignals(void)
+	?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 45 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *, int)
+	?staticMetaObject@VideoSortFilterProxyModel@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const VideoSortFilterProxyModel::staticMetaObject
+	?tr@VideoSortFilterProxyModel@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString VideoSortFilterProxyModel::tr(char const *, char const *)
+	?asyncStatus@VideoCollectionWrapper@@IAEXHAAVQVariant@@@Z @ 48 NONAME ; void VideoCollectionWrapper::asyncStatus(int, class QVariant &)
+	?initialize@VideoSortFilterProxyModel@@QAEHPAVVideoListDataModel@@@Z @ 49 NONAME ; int VideoSortFilterProxyModel::initialize(class VideoListDataModel *)
+	?modelChanged@VideoSortFilterProxyModel@@IAEXXZ @ 50 NONAME ; void VideoSortFilterProxyModel::modelChanged(void)
+	?thumbnailsFetched@VideoThumbnailData@@IAEXV?$QList@VTMPXItemId@@@@@Z @ 51 NONAME ; void VideoThumbnailData::thumbnailsFetched(class QList<class TMPXItemId>)
+	?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 52 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *)
+	?processSorting@VideoSortFilterProxyModel@@AAEXXZ @ 53 NONAME ; void VideoSortFilterProxyModel::processSorting(void)
+	?getSorting@VideoSortFilterProxyModel@@QAEXAAHAAW4SortOrder@Qt@@@Z @ 54 NONAME ; void VideoSortFilterProxyModel::getSorting(int &, enum Qt::SortOrder &)
+	?filterAcceptsRow@VideoSortFilterProxyModel@@MBE_NHABVQModelIndex@@@Z @ 55 NONAME ; bool VideoSortFilterProxyModel::filterAcceptsRow(int, class QModelIndex const &) const
+	?metaObject@VideoThumbnailData@@UBEPBUQMetaObject@@XZ @ 56 NONAME ; struct QMetaObject const * VideoThumbnailData::metaObject(void) const
+	?tr@VideoThumbnailData@@SA?AVQString@@PBD0H@Z @ 57 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *, int)
+	?disconnectSignals@VideoSortFilterProxyModel@@AAEXXZ @ 58 NONAME ; void VideoSortFilterProxyModel::disconnectSignals(void)
+	?getModel@VideoCollectionWrapper@@QAEPAVVideoSortFilterProxyModel@@H@Z @ 59 NONAME ; class VideoSortFilterProxyModel * VideoCollectionWrapper::getModel(int)
+	?trUtf8@VideoSortFilterProxyModel@@SA?AVQString@@PBD0H@Z @ 60 NONAME ; class QString VideoSortFilterProxyModel::trUtf8(char const *, char const *, int)
+	?openItem@VideoSortFilterProxyModel@@QAEHVTMPXItemId@@@Z @ 61 NONAME ; int VideoSortFilterProxyModel::openItem(class TMPXItemId)
+	?qt_metacast@VideoThumbnailData@@UAEPAXPBD@Z @ 62 NONAME ; void * VideoThumbnailData::qt_metacast(char const *)
+	?tr@VideoCollectionWrapper@@SA?AVQString@@PBD0@Z @ 63 NONAME ; class QString VideoCollectionWrapper::tr(char const *, char const *)
+	??_EVideoSortFilterProxyModel@@UAE@I@Z @ 64 NONAME ; VideoSortFilterProxyModel::~VideoSortFilterProxyModel(unsigned int)
+	?addNewAlbum@VideoSortFilterProxyModel@@QAE?AVTMPXItemId@@ABVQString@@@Z @ 65 NONAME ; class TMPXItemId VideoSortFilterProxyModel::addNewAlbum(class QString const &)
+	?enableThumbnailCreation@VideoThumbnailData@@QAEX_N@Z @ 66 NONAME ; void VideoThumbnailData::enableThumbnailCreation(bool)
+	?qt_metacall@VideoSortFilterProxyModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 67 NONAME ; int VideoSortFilterProxyModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?freeThumbnailData@VideoThumbnailData@@QAEXXZ @ 68 NONAME ; void VideoThumbnailData::freeThumbnailData(void)
+	?shortDetailsReady@VideoSortFilterProxyModel@@IAEXVTMPXItemId@@@Z @ 69 NONAME ; void VideoSortFilterProxyModel::shortDetailsReady(class TMPXItemId)
+	?qt_metacast@VideoSortFilterProxyModel@@UAEPAXPBD@Z @ 70 NONAME ; void * VideoSortFilterProxyModel::qt_metacast(char const *)
+	?staticMetaObject@VideoCollectionWrapper@@2UQMetaObject@@B @ 71 NONAME ; struct QMetaObject const VideoCollectionWrapper::staticMetaObject
+	?tr@VideoThumbnailData@@SA?AVQString@@PBD0@Z @ 72 NONAME ; class QString VideoThumbnailData::tr(char const *, char const *)
+	??1VideoCollectionWrapper@@EAE@XZ @ 73 NONAME ; VideoCollectionWrapper::~VideoCollectionWrapper(void)
+	?trUtf8@VideoCollectionWrapper@@SA?AVQString@@PBD0H@Z @ 74 NONAME ; class QString VideoCollectionWrapper::trUtf8(char const *, char const *, int)
+	??0VideoThumbnailData@@AAE@XZ @ 75 NONAME ; VideoThumbnailData::VideoThumbnailData(void)
+	?staticMetaObject@VideoThumbnailData@@2UQMetaObject@@B @ 76 NONAME ; struct QMetaObject const VideoThumbnailData::staticMetaObject
 
--- a/videocollection/eabi/videocollectionwrapperu.def	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/eabi/videocollectionwrapperu.def	Thu Apr 01 23:32:44 2010 +0300
@@ -38,40 +38,41 @@
 	_ZN25VideoSortFilterProxyModel11qt_metacastEPKc @ 37 NONAME
 	_ZN25VideoSortFilterProxyModel12modelChangedEv @ 38 NONAME
 	_ZN25VideoSortFilterProxyModel12removeAlbumsERK5QListI11QModelIndexE @ 39 NONAME
-	_ZN25VideoSortFilterProxyModel14connectSignalsEv @ 40 NONAME
-	_ZN25VideoSortFilterProxyModel14processSortingEv @ 41 NONAME
-	_ZN25VideoSortFilterProxyModel15addItemsInAlbumE10TMPXItemIdRK5QListIS0_E @ 42 NONAME
-	_ZN25VideoSortFilterProxyModel16albumChangedSlotEv @ 43 NONAME
-	_ZN25VideoSortFilterProxyModel16fetchItemDetailsERK11QModelIndex @ 44 NONAME
-	_ZN25VideoSortFilterProxyModel16fullDetailsReadyE10TMPXItemId @ 45 NONAME
+	_ZN25VideoSortFilterProxyModel13setAlbumInUseE10TMPXItemId @ 40 NONAME
+	_ZN25VideoSortFilterProxyModel14connectSignalsEv @ 41 NONAME
+	_ZN25VideoSortFilterProxyModel14processSortingEv @ 42 NONAME
+	_ZN25VideoSortFilterProxyModel15addItemsInAlbumER10TMPXItemIdRK5QListIS0_E @ 43 NONAME
+	_ZN25VideoSortFilterProxyModel16albumChangedSlotEv @ 44 NONAME
+	_ZN25VideoSortFilterProxyModel16fetchItemDetailsERK11QModelIndex @ 45 NONAME
 	_ZN25VideoSortFilterProxyModel16staticMetaObjectE @ 46 NONAME DATA 16
 	_ZN25VideoSortFilterProxyModel17disconnectSignalsEv @ 47 NONAME
 	_ZN25VideoSortFilterProxyModel17shortDetailsReadyE10TMPXItemId @ 48 NONAME
 	_ZN25VideoSortFilterProxyModel18setGenericIdFilterE10TMPXItemIdb @ 49 NONAME
 	_ZN25VideoSortFilterProxyModel19getStaticMetaObjectEv @ 50 NONAME
-	_ZN25VideoSortFilterProxyModel21getMediaFilePathForIdE10TMPXItemId @ 51 NONAME
-	_ZN25VideoSortFilterProxyModel4backEv @ 52 NONAME
-	_ZN25VideoSortFilterProxyModel4openEi @ 53 NONAME
-	_ZN25VideoSortFilterProxyModel8openItemE10TMPXItemId @ 54 NONAME
-	_ZN25VideoSortFilterProxyModel9doSortingEiN2Qt9SortOrderEb @ 55 NONAME
-	_ZN25VideoSortFilterProxyModel9indexOfIdE10TMPXItemId @ 56 NONAME
-	_ZN25VideoSortFilterProxyModelC1EiP7QObject @ 57 NONAME
-	_ZN25VideoSortFilterProxyModelC2EiP7QObject @ 58 NONAME
-	_ZN25VideoSortFilterProxyModelD0Ev @ 59 NONAME
-	_ZN25VideoSortFilterProxyModelD1Ev @ 60 NONAME
-	_ZN25VideoSortFilterProxyModelD2Ev @ 61 NONAME
-	_ZNK18VideoThumbnailData10metaObjectEv @ 62 NONAME
-	_ZNK22VideoCollectionWrapper10metaObjectEv @ 63 NONAME
-	_ZNK25VideoSortFilterProxyModel10metaObjectEv @ 64 NONAME
-	_ZNK25VideoSortFilterProxyModel11getOpenItemEv @ 65 NONAME
-	_ZNK25VideoSortFilterProxyModel16filterAcceptsRowEiRK11QModelIndex @ 66 NONAME
-	_ZNK25VideoSortFilterProxyModel16resolveAlbumNameERK7QString @ 67 NONAME
-	_ZNK25VideoSortFilterProxyModel17getMediaIdAtIndexERK11QModelIndex @ 68 NONAME
-	_ZNK25VideoSortFilterProxyModel8lessThanERK11QModelIndexS2_ @ 69 NONAME
-	_ZTI18VideoThumbnailData @ 70 NONAME
-	_ZTI22VideoCollectionWrapper @ 71 NONAME
-	_ZTI25VideoSortFilterProxyModel @ 72 NONAME
-	_ZTV18VideoThumbnailData @ 73 NONAME
-	_ZTV22VideoCollectionWrapper @ 74 NONAME
-	_ZTV25VideoSortFilterProxyModel @ 75 NONAME
+	_ZN25VideoSortFilterProxyModel20removeItemsFromAlbumER10TMPXItemIdRK5QListIS0_E @ 51 NONAME
+	_ZN25VideoSortFilterProxyModel21getMediaFilePathForIdE10TMPXItemId @ 52 NONAME
+	_ZN25VideoSortFilterProxyModel4backEv @ 53 NONAME
+	_ZN25VideoSortFilterProxyModel4openEi @ 54 NONAME
+	_ZN25VideoSortFilterProxyModel8openItemE10TMPXItemId @ 55 NONAME
+	_ZN25VideoSortFilterProxyModel9doSortingEiN2Qt9SortOrderEb @ 56 NONAME
+	_ZN25VideoSortFilterProxyModel9indexOfIdE10TMPXItemId @ 57 NONAME
+	_ZN25VideoSortFilterProxyModelC1EiP7QObject @ 58 NONAME
+	_ZN25VideoSortFilterProxyModelC2EiP7QObject @ 59 NONAME
+	_ZN25VideoSortFilterProxyModelD0Ev @ 60 NONAME
+	_ZN25VideoSortFilterProxyModelD1Ev @ 61 NONAME
+	_ZN25VideoSortFilterProxyModelD2Ev @ 62 NONAME
+	_ZNK18VideoThumbnailData10metaObjectEv @ 63 NONAME
+	_ZNK22VideoCollectionWrapper10metaObjectEv @ 64 NONAME
+	_ZNK25VideoSortFilterProxyModel10metaObjectEv @ 65 NONAME
+	_ZNK25VideoSortFilterProxyModel11getOpenItemEv @ 66 NONAME
+	_ZNK25VideoSortFilterProxyModel16filterAcceptsRowEiRK11QModelIndex @ 67 NONAME
+	_ZNK25VideoSortFilterProxyModel16resolveAlbumNameERK7QString @ 68 NONAME
+	_ZNK25VideoSortFilterProxyModel17getMediaIdAtIndexERK11QModelIndex @ 69 NONAME
+	_ZNK25VideoSortFilterProxyModel8lessThanERK11QModelIndexS2_ @ 70 NONAME
+	_ZTI18VideoThumbnailData @ 71 NONAME
+	_ZTI22VideoCollectionWrapper @ 72 NONAME
+	_ZTI25VideoSortFilterProxyModel @ 73 NONAME
+	_ZTV18VideoThumbnailData @ 74 NONAME
+	_ZTV22VideoCollectionWrapper @ 75 NONAME
+	_ZTV25VideoSortFilterProxyModel @ 76 NONAME
 
--- a/videocollection/inc/videocollectioncommon.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/inc/videocollectioncommon.h	Thu Apr 01 23:32:44 2010 +0300
@@ -148,7 +148,8 @@
         statusMultiRemoveFail,
         statusRemoveSucceed,
         statusVideosAddedToCollection,
-        statusAllVideosAlreadyInCollection
+        statusAllVideosAlreadyInCollection,
+        statusVideosRemovedFromCollection
     };
     
     /**
--- a/videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/group/vcxmyvideoscollectionplugin.mmp	Thu Apr 01 23:32:44 2010 +0300
@@ -46,6 +46,7 @@
 SOURCE          vcxmyvideosmdscmdqueue.cpp
 SOURCE          vcxmyvideosalbums.cpp
 SOURCE          vcxmyvideosalbum.cpp
+SOURCE          vcxmyvideosasyncfilecopy.cpp
 
 SOURCEPATH      ../data
 
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h	Thu Apr 01 23:32:44 2010 +0300
@@ -133,7 +133,7 @@
          *                   otherwise not.
          * @return           ETrue if album was found and removed.
          */
-        TBool RemoveAlbum( TUint32 aMdsId, TBool aCompress );
+        TBool RemoveAlbumL( TUint32 aMdsId, TBool aCompress );
         
         /**
          * Fetches albums from MDS. This is called from MDS insert event.
@@ -143,6 +143,24 @@
         void AddAlbumsFromMdsL( RArray<TUint32>& aAlbumIds );
 
         /**
+         * Updates albums from MDS. This is called from MDS modify event.
+         * 
+         * @param aAlbumIds  Album IDs to update.
+         */
+        void UpdateAlbumsFromMdsL( RArray<TUint32>& aAlbumIds );
+
+        /**
+         * Updates album attributes, does not write to MDS. Adds
+         * modify event to iCollection.iMessageList if necessarry.
+         * 
+         * @param aAlbum  New values are read from this.
+         * @return        ETrue if album was modified, EFalse otherwise.
+         */
+        TBool UpdateAlbumL( const CMPXMedia& aAlbum );
+
+protected:
+        
+        /**
          * From MVcxMyVideosMdsAlbumsObserver.
          * Process albums arriving from MDS. Response to VcxMyVideosMdsAlbums::GetAlbumsL.
          */
@@ -224,7 +242,8 @@
          * iCollection.ConstructL, CVcxMyVideosMdsDb::NewL(..,aAlbumsObserver,..).
          */
         void HandleRelationEvent( TObserverNotificationType aType,
-                const RArray<TMdERelation>& aRelationArray );    
+                const RArray<TMdERelation>& aRelationArray );
+        
     private:
 
         /**
@@ -283,7 +302,7 @@
         RArray<TUint32> iMdsOpTargetIds;
         
         /**
-         * Store album video data during relation deletion. This is to
+         * Stores album video data during relation deletion. This is to
          * avoid second search when resp arrives.
          */
         RArray<TVcxMyVideosAlbumVideo> iRemoveFromAlbumVideos;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:    Asynchronous file copy, implemented with several small sync block copies.*
+*/
+
+
+
+
+#ifndef VCXMYVIDEOSASYNCFILECOPY_H
+#define VCXMYVIDEOSASYNCFILECOPY_H
+
+// INCLUDES
+
+// FORWARD DECLARATIONS
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+* @lib mpxmyvideoscollectionplugin.lib
+*/
+NONSHARABLE_CLASS(CVcxMyVideosAsyncFileCopy) :
+    public CBase
+    {    
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor
+        * @return object constructed
+        */
+        static CVcxMyVideosAsyncFileCopy* NewL( RFs& aFs );
+
+        /**
+        * Destructor
+        */
+        virtual ~CVcxMyVideosAsyncFileCopy();
+
+    public:
+        /**
+        * Copies aSourceFileName to aSourceFileName. Leaves with KErrNotReady
+        * if there is already copy operation going on.
+        *
+        * @param aSourceFileName  Full path and name of the source file.
+        * @param aTargetFileName  Full path and name of the target file.
+        * @return                 ETrue if copy was finished. If EFalse, then
+        *                         user must do DoNextBlockCopyL calls to
+        *                         continue copying.
+        */
+        TBool CopyL( const TDesC& aSourceFileName, const TDesC& aTargetFileName );
+        
+        /**
+        * Checks if there is copy going on.
+        *
+        * @return ETrue if copy is going on, EFalse otherwise.
+        */
+        TBool CopyIsOngoing();
+        
+        /**
+        * Copies next block from the current copy operation.
+        *
+        * @return System wide error code.
+        */
+        TInt DoNextBlockCopy();
+
+        /**
+        * Cancels current copy operation (if any). Does nothing if copy
+        * operation is not going on. Cancel removes the possible target file
+        * which has been created during the current copy operation.
+        */
+        void Cancel();
+        
+    private:
+        /**
+        * Constructor
+        */
+        CVcxMyVideosAsyncFileCopy( RFs& aFs );
+
+        /**
+        * Symbian 2nd phase constructor.
+        */
+        void ConstructL ();
+        
+        /**
+        * Allocates buffer from RAM (iFileBlockBuffer) for a file block.
+        * 
+        * @param aFileSize  Size of the file to be copied.
+        */
+        void AllocateFileBlockBufferL( TInt aFileSize );
+        
+        /**
+        * Closes file handles and resets variables.
+        *
+        * @param aRemoveTargetFile If ETrue then the target file is removed.
+        */
+        void EndCopy( TBool aRemoveTargetFile );
+                
+    private:
+
+        /**
+        * File server session.
+        */
+        RFs& iFs;
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+        /**
+        * File in which we are copying from.
+        */ 
+        RFile64 iSourceFile;
+        
+        /**
+        * File which is being copied to.
+        */ 
+        RFile64 iTargetFile;
+
+        /**
+        * How much data is left for copying.
+        */
+        TInt64 iDataRemaining;
+        
+        /**
+        * Current read position in source file. 
+        */
+        TInt64 iReadPos;                      
+#else
+
+        /**
+        * File in which we are copying from.
+        */ 
+        RFile iSourceFile;
+        
+        /**
+        * File which is being copied to.
+        */ 
+        RFile iTargetFile;
+
+        /**
+        * How much data is left for copying.
+        */
+        TInt iDataRemaining;
+        
+        /**
+        * Current read position in source file. 
+        */
+        TInt iReadPos;                      
+
+#endif
+        /**
+        * Set to ETrue when copy starts and EFalse when copying ends.
+        */
+        TBool iIsCopying;
+        
+        /**
+        * Space for the one file block. Own
+        */
+        HBufC8* iFileBlockBuffer;
+
+#ifdef _DEBUG
+        /**
+        * Used to calculate copying speed.
+        */
+        TTime iStartTime;
+#endif        
+    };
+
+#endif   // VCXMYVIDEOSASYNCFILECOPY_H
+
+
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfileoperations.h	Thu Apr 01 23:32:44 2010 +0300
@@ -29,6 +29,7 @@
 
 // FORWARD DECLARATIONS
 class CVcxMyVideosCollectionPlugin;
+class CVcxMyVideosAsyncFileCopy;
 
 // CONSTANTS
 
@@ -88,10 +89,9 @@
         * Moves or copies video to another drive.
         *
         * @param aMdsId        MDS id of the item to be moved.
-        * @param aTargetDrive  Target drive.
         * @param aMove         If ETrue, the source file is deleted.
         */
-        void MoveOrCopyVideoL( TUint32 aMdsId, TInt aTargetDrive, TBool aMove );
+        void MoveOrCopyVideoL( TUint32 aMdsId );
                        
         /**
         * Generates and sends resp message for Move,Copy and Delete operations.
@@ -141,6 +141,28 @@
         void GenerateTargetPathForMoveOrCopyL(
                 const TDesC& aSourcePath, TDes& aTargetPath, TInt aTargetDrive );
 
+        /**
+        * Initializes member variables for the Copy or Move operations.
+        *
+        * @param aCmd  Command received from collection client.
+        */                
+        void InitMoveOrCopyOperationsL( CMPXMedia& aCmd );
+        
+        /**
+        * Called when file copying completes in Move or Copy operations.
+        *
+        * @param aErr Result code of the file copy.
+        */
+        void HandleFileCopyCompletedL( TInt aErr );
+        
+        /**
+        * Initializes MDS and collection cache before the actual file copy.
+        * Does some sanity checks also.
+        *
+        * @param aMdsId        MDS ID of the video being moved/copied.
+        */
+        void InitSingleMoveOrCopyL( TUint32 aMdsId );
+
     public:
 
         /**
@@ -172,9 +194,51 @@
         TInt iTargetDrive;
 
         /**
+        * Set to ETrue if current operation is Move.
+        */
+        TBool IsMoveOperation;
+        
+        /**
         * Owner of this class.
         */
         CVcxMyVideosCollectionPlugin& iCollection;
+        
+        /**
+        * Performs single file copy in multiple steps.
+        * Used to avoid long blockings when copying large files.
+        * Own.
+        */
+        CVcxMyVideosAsyncFileCopy* iFileCopier;
+        
+        /**
+        * New media which is created to collection cache in copy operation.
+        * It is stored in memeber variable in case that file operations
+        * fail and we have to roll MDS and cache back. Own.
+        */
+        CMPXMedia* iMediaForCopyOp;
+        
+        /**
+        * Updated media which is changed in move operation.
+        * It is stored in memeber variable in case that file operations
+        * fail and we have to roll MDS and cache back. Own.
+        */        
+        CMPXMedia* iMediaForMoveOp;
+        
+        /**
+        * Source path for move or copy operation.
+        */
+        TFileName iSourcePath;
+        
+        /**
+        * Target path for move or copy operation.
+        */
+        TFileName iTargetPath;
+        
+        /**
+        * Flag for move operation is stored just to avoid accessing
+        * CMPXMedia object too much.
+        */
+        TBool iIsMoveOperation;
                                 
     };
 
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscategories.h	Thu Apr 01 23:32:44 2010 +0300
@@ -231,8 +231,8 @@
         * @param aEventInfo      This is written to generated event's extra info attribute.
         * 
         */
-        void UpdateVideosCountL( CMPXMedia& aCategory, TInt aIncrement, TMPXAttributeData aCountAttribute,
-                TInt aEventInfo );
+        void UpdateVideosCountL( CMPXMedia& aCategory, TInt aIncrement,
+                TMPXAttributeData aCountAttribute, TInt aEventInfo );
 
         /**
         * aVideo is added(or removed) to aCategory. Updates category variables accordingly. 
@@ -277,7 +277,8 @@
         *                    Usefull if items are being deleted but are still on the
         *                    video list.
         */
-        void UpdateCategoryNewVideoNameAndDateL( TInt aOrigin, TBool& aModified, RArray<TUint32>& aIgnoredIds );
+        void UpdateCategoryNewVideoNameAndDateL( TInt aOrigin, TBool& aModified,
+                RArray<TUint32>& aIgnoredIds );
         
         /**
         * Goes through aVideoList and checks all videos which have new video
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h	Thu Apr 01 23:32:44 2010 +0300
@@ -366,7 +366,7 @@
         * Albums related functionality (except mds db operations). Own.
         */
         CVcxMyVideosAlbums* iAlbums;
-                                                                                                    
+
         /**
         * Target drive for Move operation.
         */
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h	Thu Apr 01 23:32:44 2010 +0300
@@ -148,7 +148,7 @@
         * @param aVideo  Media object to fetch parameter from.
         * @return        ID.
         */
-        static TMPXItemId IdL( CMPXMedia& aVideo );
+        static TMPXItemId IdL( const CMPXMedia& aVideo );
 
         /**
         * Gets KVcxMediaMyVideosDuration attribute of aVideo.
@@ -164,7 +164,7 @@
         * @return  KMPXMediaGeneralTitle value. If attribute is not supported,
         *          then KNullDesC is returned.
         */
-        static const TDesC& Title( CMPXMedia& aVideo );
+        static const TDesC& Title( const CMPXMedia& aVideo );
 
         /**
         * Gets KVcxMediaMyVideosRating attribute of the video.
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h	Thu Apr 01 23:32:44 2010 +0300
@@ -49,7 +49,8 @@
     public: // Constructors and destructor
         
         friend class CVcxMyVideosMdsCmdQueue;
-
+        friend class CVcxMyVideosMdsDb;
+        
         enum TVcxAsyncOperation
             {
             EVcxNone,
@@ -92,7 +93,16 @@
         * @param aClient     Response call is done to this object.
         */
         void GetAlbumsL( CMPXMedia* aAlbumList, MVcxMyVideosMdsAlbumsObserver& aClient );
-        
+
+        /**
+         * Gets album from MDS synchronously.
+         * 
+         * @param aId  MDS ID of the album to be fetched.
+         * @returm     MPX media containing album data. Ownership
+         *             moves to caller. NULL if not found.
+         */
+        CMPXMedia* GetAlbumL( TUint32 aId );
+
         /**
          * Gets album content IDs asynchronously.
          * HandleGetAlbumContentIdsResp() callback function is called when ready.
@@ -169,6 +179,13 @@
          */        
         void RemoveAlbumsL( CMPXMedia* aMpxCmd, MVcxMyVideosMdsAlbumsObserver& aClient );
         
+        /**
+         * Sets album attributes.
+         * 
+         * @param aVideo  Values from aVideo are written to MDS.
+         */
+        void SetAlbumL( CMPXMedia& aVideo );
+        
     protected:
         
         /**
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h	Thu Apr 01 23:32:44 2010 +0300
@@ -263,7 +263,8 @@
      *
      * @param aId          Video identifier in MDS database.
      * @param aFullDetails If ETrue, then all details are fetched, othewise only subset.
-     * @return             Pointer to media object, ownership moves.
+     * @return             Pointer to media object, ownership moves. NULL if
+     *                     not found.
      */
     CMPXMedia* CreateVideoL( TUint32 aId, TBool aFullDetails = ETrue );
 
@@ -346,10 +347,12 @@
     /**
      * Gets object from MDS.
      *
-     * @param aId   The ID of the object to get.
-     * @return      The object if found, NULL otherwise.
+     * @param aId      The ID of the object to get.
+     * @param aIsVideo Set to ETrue if the object to be fetched is video. If set to
+     *                 EFalse, then the object is assumed to be album.
+     * @return         The object if found, NULL otherwise.
      */
-    CMdEObject* ObjectL( const TItemId aId );
+    CMdEObject* ObjectL( const TItemId aId, TBool aIsVideo = ETrue );
 
     /**
      * Read the video details from the given object to the media class.
@@ -433,6 +436,13 @@
      */
     void SetCreationAndModifiedDatesL( CMdEObject& aObject );
 
+    /**
+     * Sets creation date to aObject from aVideo.
+     * 
+     * @param aVideo  Creation date is copied from here.
+     * @param aObject Creation date is written here.
+     */
+    void SetCreationDateToObjectL( const CMPXMedia& aVideo, CMdEObject& aObject );
 public:
 
     /**
@@ -579,14 +589,6 @@
      * The Last Play Point property definition. Not own.
      */
     CMdEPropertyDef* iLastPlayPositionPropertyDef;
-
-#if 0
-    /**
-     * 17.
-     * The Download ID property definition. Not own.
-     */
-    CMdEPropertyDef* iDownloadIdPropertyDef;
-#endif
     
     /**
     * 18.
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmessagelist.h	Thu Apr 01 23:32:44 2010 +0300
@@ -98,7 +98,8 @@
         *                   from vcxmyvideosdefs.h for values.
         * @param aVideo     Video object which is in cache already.
         */
-        void AddEventL(const TMPXItemId& aId, TMPXChangeEventType aChange, TInt32 aExtraInfo = 0, CMPXMedia* aVideo = NULL );
+        void AddEventL(const TMPXItemId& aId, TMPXChangeEventType aChange,
+                TInt32 aExtraInfo = 0, CMPXMedia* aVideo = NULL );
 
         /**
         * Creates My Videos custom event and appends it to iMessageList.
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h	Thu Apr 01 23:32:44 2010 +0300
@@ -229,7 +229,7 @@
         *                 attribute contains the media items. Ownership
         *                 moves to caller.
         */
-        CMPXMedia* GetVideosL( RArray<TUint32> aMdsIds );
+        CMPXMedia* GetVideosL( RArray<TUint32>& aMdsIds );
 
         /**
         * Removes video from iVideoList (or from iPartialVideoList).
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -93,7 +93,7 @@
 CVcxMyVideosAlbum* CVcxMyVideosAlbum::NewL( CVcxMyVideosCollectionPlugin& aCollectionPlugin )
     {
     CVcxMyVideosAlbum* self = CVcxMyVideosAlbum::NewLC( aCollectionPlugin );
-    CleanupStack::Pop(); // self;
+    CleanupStack::Pop( self );
     return self;
     }
 
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -21,6 +21,7 @@
 #include <mpxlog.h>
 #include <mpxmediacontainerdefs.h>
 #include <mpxcollectionpluginobserver.h>
+#include <mpxmediageneraldefs.h>
 #include "vcxmyvideosalbums.h"
 #include "vcxmyvideoscollectionutil.h"
 #include "vcxmyvideoscollectionplugin.h"
@@ -256,7 +257,7 @@
     TInt count = aAlbumIds.Count();
     for ( TInt i = count -1; i >= 0; i-- )
         {
-        TBool removed = RemoveAlbum( aAlbumIds[i], EFalse /* dont compress */);
+        TBool removed = RemoveAlbumL( aAlbumIds[i], EFalse /* dont compress */);
         if ( removed )
             {
             aAlbumIds.Remove( i );
@@ -268,10 +269,10 @@
     }
 
 // ----------------------------------------------------------------------------
-// CVcxMyVideosAlbums::RemoveAlbum
+// CVcxMyVideosAlbums::RemoveAlbumL
 // ----------------------------------------------------------------------------
 //
-TBool CVcxMyVideosAlbums::RemoveAlbum( TUint32 aMdsId, TBool aCompress )
+TBool CVcxMyVideosAlbums::RemoveAlbumL( TUint32 aMdsId, TBool aCompress )
     {
     TInt pos;
     CVcxMyVideosAlbum* album = Album( aMdsId, &pos );
@@ -282,6 +283,8 @@
         iAlbums.Remove( pos );
         albumArray->Remove( pos );
         
+        MPX_DEBUG2("CVcxMyVideosAlbums:: removing album from pos %d", pos);
+        
         if ( aCompress )
             {
             iAlbums.Compress();
@@ -311,7 +314,7 @@
 //
 void CVcxMyVideosAlbums::HandleGetAlbumsRespL( CMPXMedia* aAlbumList )
     {
-    // aAlbumList = iAlbums->iAlbumList
+    // aAlbumList = iAlbumList
     CMPXMediaArray* array = aAlbumList->Value<CMPXMediaArray>( KMPXMediaArrayContents );
     TInt count = array->Count();
     TMPXItemId mpxId;
@@ -364,13 +367,16 @@
     
     
 #ifdef _DEBUG
-    TInt count = album->iVideoList.Count();
-
-    MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: content ids for album %d arrived", aAlbumId);
+    if ( album )
+        {
+        TInt count = album->iVideoList.Count();
 
-    for ( TInt i = 0; i < album->iVideoList.Count(); i++ )
-        {
-        MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: mds id = %d", album->iVideoList[i].iMdsId );
+        MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: content ids for album %d arrived", aAlbumId);
+
+        for ( TInt i = 0; i < album->iVideoList.Count(); i++ )
+            {
+            MPX_DEBUG2("CVcxMyVideosCollectionPlugin:: mds id = %d", album->iVideoList[i].iMdsId );
+            }
         }
 #endif
     }
@@ -436,7 +442,8 @@
         MPX_DEBUG3( "CVcxMyVideosAlbums:: item result[%d] = %d (id)", i, video.iRelationMdsId );
         if ( video.iRelationMdsId == KNoId )
             {
-            mediaArray->AtL( i )->SetTObjectValueL<TInt>( KVcxMediaMyVideosInt32Value, KErrGeneral );
+            mediaArray->AtL( i )->SetTObjectValueL<TInt>( KVcxMediaMyVideosInt32Value,
+                    KErrGeneral );
             }
         else
             {
@@ -470,6 +477,8 @@
     
     // iRemoveFromAlbumVideos and mediaArray are in sync
     
+    TRAP_IGNORE(
+    
     CMPXMedia* cmd             = iCollection.iActiveTask->Command();
     CMPXMediaArray* mediaArray = TVcxMyVideosCollectionUtil::MediaArrayL( *cmd );
     TInt count                 = iRemoveFromAlbumVideos.Count();
@@ -489,6 +498,9 @@
             video->SetTObjectValueL( KVcxMediaMyVideosInt32Value, KErrGeneral );
             }
         }
+    
+    );
+    
     iRemoveFromAlbumVideos.Reset();
     
     iCollection.iActiveTask->Done();
@@ -502,7 +514,9 @@
 //
 void CVcxMyVideosAlbums::HandleRemoveAlbumsResp( CMPXMedia* aCmd,
         RArray<TUint32>& aResultIds )
-    {
+    {    
+    TRAP_IGNORE(
+    
     CMPXMediaArray* mediaArray = TVcxMyVideosCollectionUtil::MediaArrayL( *aCmd );
     TInt count = mediaArray->Count();
     TUint32 mdsId;
@@ -521,6 +535,8 @@
             }
         }
     
+    );
+    
     iCollection.iActiveTask->Done();
     }
 
@@ -547,9 +563,9 @@
             if ( album )
                 {
                 album->Remove( aRelationArray[i].RightObjectId(), ETrue /* compress */ );                
+                iCollection.iMessageList->AddEventL( TMPXItemId( albumId, KVcxMvcMediaTypeAlbum ),
+                        EMPXItemModified, EVcxMyVideosVideoListOrderChanged );
                 }
-            iCollection.iMessageList->AddEventL( TMPXItemId( albumId, KVcxMvcMediaTypeAlbum ),
-                    EMPXItemModified, EVcxMyVideosVideoListOrderChanged );
             }
         else
             {
@@ -563,4 +579,36 @@
     );
     }
 
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAlbums::UpdateAlbumL
+// Updates album attributes from aAlbum, if album is not found from memory,
+// nothing is done (no fetching from MDS).
+// ----------------------------------------------------------------------------
+//
+TBool CVcxMyVideosAlbums::UpdateAlbumL( const CMPXMedia& aAlbum )
+    {
+    TBool changed = EFalse;
+    
+    TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( aAlbum );
+    CVcxMyVideosAlbum* album = Album( mpxId.iId1 );
+
+    if ( album && album->iMedia )
+        {
+        CMPXMedia* media = album->iMedia;
+
+        if ( media->IsSupported( KMPXMediaGeneralTitle ) )
+            {
+            TPtrC newTitle( TVcxMyVideosCollectionUtil::Title( aAlbum ) );
+            TPtrC oldTitle( TVcxMyVideosCollectionUtil::Title( *media ) );
+
+            if ( newTitle != oldTitle )
+                {
+                media->SetTextValueL( KMPXMediaGeneralTitle, newTitle );
+                iCollection.iMessageList->AddEventL( mpxId, EMPXItemModified );
+                changed = ETrue;
+                }
+            }
+        }
+    return changed;
+    }
 // END OF FILE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfilecopy.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,294 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:    Asynchronous file copy, implemented with several small sync block copies.*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <mpxlog.h>
+#include <bautils.h>
+#include "vcxmyvideosasyncfilecopy.h"
+
+/**
+* One block shouldn't take more than 1 second to copy to keep cancel
+* response fast enough. On the otherhand, the deleting the already
+* copied data may take several seconds. 
+*
+* Copying speed tests (from massmemory to memorycard):
+*
+* Block size       speed        response time
+*   6MB        ->  3.20 MB/s    ~2sec    (unacceptable response time, full speed)
+*   3MB        ->  3.17 MB/s    ~1sec    (poor response time, almost full speed)
+*   1MB        ->  3.16 MB/s    ~0.3sec  (good response time, almost full speed)
+* 0.5MB        ->  2.60 MB/s    ~0.19sec (good response time, some speed loss)
+*
+* -> 1MB is the best.
+*
+* * Copying speed tests (from memorycard to massmemory):
+*
+* Block size       speed        response time
+*   3MB        ->  5.470 MB/s    0.548sec
+*   1MB        ->  4.393 MB/s    0.228sec
+*
+* 1M gives slightly reduced speed, great response time. 3MB would be better than
+* 1M but can't use it since it gives 1sec response time in memorycard writing.
+*/
+const TInt KBigBufSize    = 1024 * 1024; // 1MB
+const TInt KMediumBufSize = 512 * 1024;  // 0.5MB
+const TInt KSmallBufSize  = 100 * 1024;  // 0.1MB
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosAsyncFileCopy* CVcxMyVideosAsyncFileCopy::NewL( RFs& aFs )
+    {
+    CVcxMyVideosAsyncFileCopy* self = new (ELeave) CVcxMyVideosAsyncFileCopy( aFs );
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// Destructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosAsyncFileCopy::~CVcxMyVideosAsyncFileCopy()
+    {
+    iSourceFile.Close();
+    iTargetFile.Close();
+    delete iFileBlockBuffer;
+    }
+
+// ----------------------------------------------------------------------------
+// Constructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosAsyncFileCopy::CVcxMyVideosAsyncFileCopy( RFs& aFs )
+: iFs( aFs )
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileCopy::ConstructL ()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileCopy::CopyL
+// ----------------------------------------------------------------------------
+//
+TBool CVcxMyVideosAsyncFileCopy::CopyL( const TDesC& aSourceFileName,
+        const TDesC& aTargetFileName )
+    {
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::CopyL() start");
+    
+    if ( iIsCopying )
+        {
+        User::Leave( KErrNotReady );
+        }
+
+    TInt error = iSourceFile.Open( iFs, aSourceFileName, EFileRead | EFileShareReadersOnly );
+
+    User::LeaveIfError( error );
+
+    error = iTargetFile.Replace( iFs, aTargetFileName, EFileWrite | EFileWriteDirectIO
+            | EFileShareExclusive );
+
+    if ( error == KErrPathNotFound )
+        {
+        error = iFs.MkDirAll( aTargetFileName );
+        if ( error == KErrNone )
+            {
+            error = iTargetFile.Create( iFs, aTargetFileName, EFileWrite
+                    | EFileWriteDirectIO | EFileShareExclusive );
+            }
+        }
+
+    User::LeaveIfError( error );
+    User::LeaveIfError( iSourceFile.Size( iDataRemaining ) );
+    User::LeaveIfError( iTargetFile.SetSize( iDataRemaining ) );
+
+    TInt suggestBlockSize;
+    if ( iDataRemaining > KBigBufSize )
+        {
+        suggestBlockSize = KBigBufSize;
+        }
+    else
+        {
+        suggestBlockSize = iDataRemaining;
+        }
+    AllocateFileBlockBufferL( suggestBlockSize );
+
+    iReadPos   = 0;
+    iIsCopying = ETrue;
+
+#ifdef _DEBUG
+    iStartTime.UniversalTime();
+#endif
+
+    DoNextBlockCopy();
+
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::CopyL() exit");    
+    return !iIsCopying;
+    }
+    
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileCopy::CopyIsOngoing
+// ----------------------------------------------------------------------------
+//
+TBool CVcxMyVideosAsyncFileCopy::CopyIsOngoing()
+    {
+    return iIsCopying;
+    }
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileCopy::DoNextBlockCopy
+// ----------------------------------------------------------------------------
+//
+TInt CVcxMyVideosAsyncFileCopy::DoNextBlockCopy()
+    {    
+	TInt err = KErrNone;
+	TPtr8 fileBufPtr = iFileBlockBuffer->Des();
+
+	TInt bytesToCopy = Min( iDataRemaining, fileBufPtr.MaxSize() );
+
+	err = iSourceFile.Read( iReadPos, fileBufPtr, bytesToCopy );
+	if ( err == KErrNone && fileBufPtr.Length() != bytesToCopy )
+	    {
+		err = KErrCorrupt;
+	    }
+	if ( err == KErrNone )
+	    {
+		err = iTargetFile.Write( iReadPos, fileBufPtr, bytesToCopy );
+	    }
+	if ( err != KErrNone )
+		{
+		EndCopy( ETrue /* remove target file */);
+		return err;
+		}
+
+	iReadPos       += bytesToCopy;
+	iDataRemaining -= bytesToCopy;
+
+	if ( iDataRemaining == 0 )
+		{
+		EndCopy( EFalse /* keep target file */);
+		}
+
+	return KErrNone;
+    }
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileCopy::Cancel
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileCopy::Cancel()
+    {
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::Cancel() start");
+    
+    if ( iIsCopying )
+        {
+        EndCopy( ETrue /* remove target file */ );
+        }
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::Cancel() exit");
+    }
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileCopy::AllocateFileBlockBufferL
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileCopy::AllocateFileBlockBufferL( TInt aFileSize )
+	{
+    delete iFileBlockBuffer;
+    iFileBlockBuffer = NULL;
+    
+	TInt big = Min( aFileSize, KBigBufSize );
+	iFileBlockBuffer = HBufC8::New( big );
+	if ( !iFileBlockBuffer )
+	    {
+		iFileBlockBuffer = HBufC8::New( KMediumBufSize );
+		}
+	if ( !iFileBlockBuffer )
+	    {
+		iFileBlockBuffer = HBufC8::NewL( KSmallBufSize );
+		}
+	}
+
+void CVcxMyVideosAsyncFileCopy::EndCopy( TBool aRemoveTargetFile )
+	{
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::EndCopy() start");
+
+    TTime modified;
+    iSourceFile.Modified( modified );
+    iTargetFile.SetModified( modified );
+
+#ifdef _DEBUG
+
+    TDateTime dT = modified.DateTime();
+    TBuf<200> buf;
+    buf.Format(_L("CVcxMyVideosAsyncFileCopy:: setting file modified date: %2d.%2d.%4d %2d:%2d:%2d"),
+            dT.Day()+1, dT.Month()+1, dT.Year(), dT.Hour(), dT.Minute(), dT.Second() ); 
+    MPX_DEBUG2("%S", &buf ); 
+
+    const TInt megaBytes = 0x100000;
+    const TInt kiloBytes = 1024;
+    TInt dataCopiedInMegaBytes = iReadPos / megaBytes;
+    TTime now;
+    now.UniversalTime();
+    TTimeIntervalSeconds interval;
+    now.SecondsFrom( iStartTime, interval );
+    TInt copyingSpeed = 0;
+    if ( interval.Int() > 0 )
+        {
+        copyingSpeed = (iReadPos / kiloBytes) / interval.Int();
+        }
+    MPX_DEBUG3("CVcxMyVideosAsyncFileCopy:: Data copied: %d (MB), %d kB/s", dataCopiedInMegaBytes, copyingSpeed);
+#endif
+	    
+	delete iFileBlockBuffer;
+	iFileBlockBuffer = NULL;
+	iReadPos       = 0;
+	iDataRemaining = 0;
+	iSourceFile.Close();
+	iIsCopying = EFalse;
+
+	if ( aRemoveTargetFile )
+	    {
+	    TFileName fileName;
+	    TInt err = iTargetFile.FullName( fileName );
+
+        iTargetFile.Close();	
+	    
+	    if ( err == KErrNone )
+	        {
+            MPX_DEBUG2("CVcxMyVideosAsyncFileCopy:: removing file: %S", &fileName);
+	        iFs.Delete( fileName );
+	        }
+	    }
+	else
+	    {
+        iTargetFile.Close();
+	    }
+
+    MPX_DEBUG1("CVcxMyVideosAsyncFileCopy::EndCopy() exit");
+	}
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosasyncfileoperations.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -38,6 +38,7 @@
 #include "vcxmyvideoscategories.h"
 #include "vcxmyvideosmessagelist.h"
 #include "vcxmyvideosasyncfileoperations.h"
+#include "vcxmyvideosasyncfilecopy.h"
 
 // ============================ MEMBER FUNCTIONS ==============================
 
@@ -68,13 +69,17 @@
         
     iOperationIdArray.Close();
     iOperationResult.Close();
+    delete iFileCopier;
+    delete iMediaForMoveOp;
+    delete iMediaForCopyOp;
     }
 
 // ----------------------------------------------------------------------------
 // Constructor.
 // ----------------------------------------------------------------------------
 //
-CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations( CVcxMyVideosCollectionPlugin& aCollection )
+CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations(
+        CVcxMyVideosCollectionPlugin& aCollection )
 : iCollection( aCollection )
     {
     MPX_FUNC("CVcxMyVideosAsyncFileOperations::CVcxMyVideosAsyncFileOperations");
@@ -86,7 +91,7 @@
 //
 void CVcxMyVideosAsyncFileOperations::ConstructL ()
     {
-    MPX_FUNC("CVcxMyVideosAsyncFileOperations::ConstructL");
+    iFileCopier = CVcxMyVideosAsyncFileCopy::NewL( iCollection.iFs );
     }
     
 // ----------------------------------------------------------------------------
@@ -220,62 +225,30 @@
 // CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL
 // ----------------------------------------------------------------------------
 //
-MVcxMyVideosActiveTaskObserver::TStepResult CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL()
+MVcxMyVideosActiveTaskObserver::TStepResult
+        CVcxMyVideosAsyncFileOperations::HandleMoveOrCopyStepL()
     {
+    // Reset inactivity timer. This will prevent ThumbAGDaemon start running while
+    // Move/copy is ongoing and failing the operation due to locked file handle.
+    User::ResetInactivityTime();
+    
     CMPXMedia& cmd = iCollection.iActiveTask->GetCommand();
     
     MVcxMyVideosActiveTaskObserver::TStepResult stepResult;
-    
-    TBool isMoveOperation = EFalse;
-    TUint32 cmdId = cmd.ValueTObjectL<TUint32>( KVcxMediaMyVideosCommandId );    
-    if ( cmdId == KVcxCommandMyVideosMove )
+        
+    if ( iCurrentOperationIndex == 0 && !iFileCopier->CopyIsOngoing() )
         {
-        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation");
-        isMoveOperation = ETrue;
+        InitMoveOrCopyOperationsL( cmd );        
+        }
+
+    TRAPD( err, MoveOrCopyVideoL( iOperationIdArray[iCurrentOperationIndex] ) );
+
+    if ( iFileCopier->CopyIsOngoing() && err == KErrNone )
+        {
+        // copy didnt finish yet, lets do some more steps before jumping to next file
+        return MVcxMyVideosActiveTaskObserver::EMoreToCome;
         }
         
-    // Start operations
-    if ( iCurrentOperationIndex == 0 )
-        {
-        if ( !cmd.IsSupported( KMPXMediaArrayContents ) )
-            {
-            MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no array defined");
-            User::Leave( KErrArgument );
-            }
-    
-        CMPXMediaArray* idMediaArray = cmd.Value<CMPXMediaArray>(
-                KMPXMediaArrayContents );
-
-        if ( idMediaArray->Count() == 0 )
-            {
-            MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array ");
-            User::Leave( KErrArgument );
-            }
-        
-        iTargetDrive = cmd.ValueTObjectL<TInt32>( KVcxMediaMyVideosInt32Value );
-        
-        TMPXItemId mpxId;    
-        iOperationIdArray.Reset();
-        TInt count = idMediaArray->Count();
-        for ( TInt i = 0; i < count; i++ )
-            {
-            mpxId = idMediaArray->AtL( i )->
-                            ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
-            MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ",
-                    mpxId.iId1,
-                    mpxId.iId2);
-            iOperationIdArray.AppendL( idMediaArray->AtL( i )->
-                    ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId ).iId1 );
-            }
-        
-        iCollection.SendMyVideosMessageL( KVcxMessageMyVideosMoveOrCopyStarted, &cmd );
-
-        iOperationResult.Reset();
-        }
-
-    TRAPD( err, MoveOrCopyVideoL( iOperationIdArray[iCurrentOperationIndex],
-            iTargetDrive, isMoveOperation ));
-
     iOperationResult.AppendL( err );
     
     iCurrentOperationIndex++;
@@ -284,8 +257,8 @@
     if ( iCurrentOperationIndex > (iOperationIdArray.Count() - 1) )
         {
         iCurrentOperationIndex = 0;
-        stepResult = MVcxMyVideosActiveTaskObserver::EDone;
-        if ( isMoveOperation )
+        stepResult             = MVcxMyVideosActiveTaskObserver::EDone;
+        if ( iIsMoveOperation )
             {
             SendOperationRespL( KVcxMessageMyVideosMoveResp );
             }
@@ -303,6 +276,59 @@
     }
 
 // ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileOperations::InitMoveOrCopyOperationsL
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileOperations::InitMoveOrCopyOperationsL( CMPXMedia& aCmd )
+    {
+    if ( !aCmd.IsSupported( KMPXMediaArrayContents ) )
+        {
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no array defined");
+        User::Leave( KErrArgument );
+        }
+
+    CMPXMediaArray* idMediaArray = aCmd.Value<CMPXMediaArray>(
+            KMPXMediaArrayContents );
+
+    if ( idMediaArray->Count() == 0 )
+        {
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: error, no items in array ");
+        User::Leave( KErrArgument );
+        }
+    
+    TUint32 cmdId = aCmd.ValueTObjectL<TUint32>( KVcxMediaMyVideosCommandId );    
+    if ( cmdId == KVcxCommandMyVideosMove )
+        {
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation");
+        iIsMoveOperation = ETrue;
+        }
+    else
+        {
+        iIsMoveOperation = EFalse;
+        }
+
+    iTargetDrive = aCmd.ValueTObjectL<TInt32>( KVcxMediaMyVideosInt32Value );
+    
+    TMPXItemId mpxId;    
+    iOperationIdArray.Reset();
+    TInt count = idMediaArray->Count();
+    for ( TInt i = 0; i < count; i++ )
+        {
+        mpxId = idMediaArray->AtL( i )->
+                        ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
+        MPX_DEBUG3("CVcxMyVideosAsyncFileOperations:: MPX ID: (%d, %d) will be moved ",
+                mpxId.iId1,
+                mpxId.iId2);
+        iOperationIdArray.AppendL( idMediaArray->AtL( i )->
+                ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId ).iId1 );
+        }
+    
+    iCollection.SendMyVideosMessageL( KVcxMessageMyVideosMoveOrCopyStarted, &aCmd );
+
+    iOperationResult.Reset();
+    }
+    
+// ----------------------------------------------------------------------------
 // CVcxMyVideosAsyncFileOperations::CancelOperationL
 // Called when leave or cancel occurs for the operation, generates resp msg.
 // ----------------------------------------------------------------------------
@@ -327,11 +353,22 @@
             case KVcxCommandMyVideosMove:
                 MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: generating KVcxMessageMyVideosMoveResp");
                 messageId = KVcxMessageMyVideosMoveResp;
+                if ( iFileCopier->CopyIsOngoing() )
+                    {
+                    //these have to be in this order, otherwise wrong item gets removed from mds
+                    TRAP_IGNORE( HandleFileCopyCompletedL( aErr ) ); // rolls mds back
+                    iFileCopier->Cancel(); // removes generated file and resets variables
+                    }
                 break;
                 
             case KVcxCommandMyVideosCopy:
                 MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: generating KVcxMessageMyVideosCopyResp");
                 messageId = KVcxMessageMyVideosCopyResp;
+                if ( iFileCopier->CopyIsOngoing() )
+                    {
+                    TRAP_IGNORE( HandleFileCopyCompletedL( aErr ) ); // rolls mds back
+                    iFileCopier->Cancel(); // removes generated file and resets variables
+                    }
                 break;
                 
             case KVcxCommandMyVideosDelete:
@@ -408,13 +445,39 @@
 // CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL
 // ----------------------------------------------------------------------------
 //
-void CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL( TUint32 aMdsId, TInt aTargetDrive,
-        TBool aMove )
+void CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL( TUint32 aMdsId )
     {
-    MPX_FUNC("CVcxMyVideosAsyncFileOperations::MoveOrCopyVideoL");
+    if ( iFileCopier->CopyIsOngoing() )
+        {
+        TInt err = iFileCopier->DoNextBlockCopy();
+        if ( err != KErrNone || !iFileCopier->CopyIsOngoing() )
+            {
+            HandleFileCopyCompletedL( err );
+            }
+        return;
+        }
+        
+    //New file copy starts -> do sanity checks and mds and collection preparations
+    InitSingleMoveOrCopyL( aMdsId );
+            
+    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copying: %S", &iSourcePath);
+    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: to     : %S", &iTargetPath);
+    
+    TBool completed = ETrue; // set to avoid warning
+    TRAPD( err, completed = iFileCopier->CopyL( iSourcePath, iTargetPath ) );
+    
+    if ( completed || err )
+        {
+        HandleFileCopyCompletedL( err );
+        }
+    }    
 
-    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: mds id = %d", aMdsId);
-    
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileOperations::InitSingleMoveOrCopyL
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileOperations::InitSingleMoveOrCopyL( TUint32 aMdsId )
+    {
     //get media from cache or mds
     TInt pos;
     CMPXMedia* videoInCache = iCollection.iCache->FindVideoByMdsIdL( aMdsId, pos );
@@ -430,139 +493,139 @@
         video = iCollection.iMyVideosMdsDb->CreateVideoL( aMdsId, EFalse /* brief details */ );
         }
         
+    if ( !video )
+        {
+        MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: mds id %d not found from mds or cache", aMdsId);
+        User::Leave( KErrNotFound );
+        }
+
     CleanupStack::PushL( video ); // 1->
     
     // sanity checks
-    if ( video->ValueTObjectL<TUint32>( KVcxMediaMyVideosDownloadId ) != 0 )
+    if ( TVcxMyVideosCollectionUtil::DownloadIdL( *video ) != 0 )
         {
         MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: file is being downloaded, fail, leaving with KErrInUse code.");
         User::Leave( KErrInUse );
         }
 
-    const TInt KMaxPathLength = 255;    
-    TBuf<KMaxPathLength> sourcePath( video->ValueText( KMPXMediaGeneralUri ) );
+    iSourcePath = video->ValueText( KMPXMediaGeneralUri );
             
-    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: source path = %S", &sourcePath);
-
-    if ( !DriveHasEnoughFreeSpaceL( sourcePath, aTargetDrive ) )
+    if ( !DriveHasEnoughFreeSpaceL( iSourcePath, iTargetDrive ) )
         {
         MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: target drive full -> skipping");
         User::Leave( KErrDiskFull );
         }
 
-    TInt sourceDrive;
-    User::LeaveIfError( iCollection.iFs.CharToDrive( sourcePath[0], sourceDrive ) );
-
-    if ( sourceDrive == aTargetDrive )
+    TUint att = 0;
+    iCollection.iFs.Att( iSourcePath, att);    
+    if ( iIsMoveOperation && (att & KEntryAttReadOnly) )
         {
-        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source and target drives are the same, doing nothing.");
-        CleanupStack::PopAndDestroy( video ); // <-1
-        return;
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation and source file is read only -> skipping");
+        User::Leave( KErrAccessDenied );
         }
 
-    TBuf<KMaxPathLength> targetPath;
+    TInt sourceDrive;
+    User::LeaveIfError( iCollection.iFs.CharToDrive( iSourcePath[0], sourceDrive ) );
+
+    if ( sourceDrive == iTargetDrive )
+        {
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source and target drives are the same, leaving with KErrAlreadyExists.");
+        CleanupStack::PopAndDestroy( video ); // <-1
+        User::Leave( KErrAlreadyExists );
+        }
     
-    GenerateTargetPathForMoveOrCopyL( sourcePath, targetPath, aTargetDrive );
+    GenerateTargetPathForMoveOrCopyL( iSourcePath, iTargetPath, iTargetDrive );
 
-    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: target path = %S", &targetPath );
+    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: target path = %S", &iTargetPath );
     
     // update mds and cache
-    CMPXMedia* mediaForMoveOp = NULL;
-    CMPXMedia* mediaForCopyOp = NULL;
-    if ( aMove )
+    delete iMediaForMoveOp;
+    iMediaForMoveOp = NULL;
+    delete iMediaForCopyOp;
+    iMediaForCopyOp = NULL;
+
+    if ( iIsMoveOperation )
         {
         // Update existing media.
         // Create new media object with only KMPXMediaGeneralId, and KMPXMediaGeneralUri
         // attributes set, that way update is lighter operation.
-        mediaForMoveOp = CMPXMedia::NewL();
-        CleanupStack::PushL( mediaForMoveOp ); // 2->
-        mediaForMoveOp->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
+        iMediaForMoveOp = CMPXMedia::NewL();
+        iMediaForMoveOp->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
                video->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ) );
-        mediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, targetPath );
+        iMediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, iTargetPath );
         
-        iCollection.SetVideoL( *mediaForMoveOp );
+        iCollection.SetVideoL( *iMediaForMoveOp );
         }
     else
         {
         // Create new media.
-        mediaForCopyOp = CMPXMedia::CopyL( *video );
-        CleanupStack::PushL( mediaForCopyOp ); // 2->
-        mediaForCopyOp->SetTextValueL( KMPXMediaGeneralUri, targetPath );
-        iCollection.AddVideoToMdsAndCacheL( *mediaForCopyOp );
+        iMediaForCopyOp = CMPXMedia::CopyL( *video );
+        iMediaForCopyOp->SetTextValueL( KMPXMediaGeneralUri, iTargetPath );
+        iCollection.AddVideoToMdsAndCacheL( *iMediaForCopyOp );
         }
-        
-    //copy file, delete original if move case
-    TRAPD( err, BaflUtils::EnsurePathExistsL( iCollection.iFs, targetPath ) );
-    
-    TUint att = 0;
-    iCollection.iFs.Att( sourcePath, att);    
-    if ( aMove && (att & KEntryAttReadOnly) )
-        {
-        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move operation and source file is read only -> skipping");
-        err = KErrAccessDenied;
-        }
-         
-    if ( err == KErrNone )
+ 
+     CleanupStack::PopAndDestroy( video ); // <-1           
+    }
+
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosAsyncFileOperations::HandleFileCopyCompletedL
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosAsyncFileOperations::HandleFileCopyCompletedL( TInt aErr )
+    {
+    if ( aErr == KErrNone )
         {
-        MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copying: %S", &sourcePath);
-        MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: to     : %S", &targetPath);
-        err = BaflUtils::CopyFile( iCollection.iFs, sourcePath, targetPath );
-        if ( err == KErrNone )
+        MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: Copy succeeded");
+        if ( iIsMoveOperation )
             {
-            MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: Copy succeeded");
-            if ( aMove )
+            MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move case");
+            aErr = BaflUtils::DeleteFile( iCollection.iFs, iSourcePath );
+            if ( aErr != KErrNone )
                 {
-                MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: move case");
-                err = BaflUtils::DeleteFile( iCollection.iFs, sourcePath );
-                if ( err != KErrNone )
+                MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for source file failed: %d", aErr );
+                MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting target file");
+                TInt delErr = BaflUtils::DeleteFile( iCollection.iFs, iTargetPath );
+                if ( delErr != KErrNone )
                     {
-                    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for source file failed: %d", err );
-                    MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting target file");
-                    TInt delErr = BaflUtils::DeleteFile( iCollection.iFs, targetPath );
-                    if ( delErr != KErrNone )
-                        {
-                        MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for target file failed: %d", delErr );
-                        }
+                    MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: delete for target file failed: %d", delErr );
                     }
                 }
             }
-        else
-            {
-            MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: CopyFile failed: %d", err);
-            }
+        }
+    else
+        {
+        MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: CopyFile failed: %d", aErr);
         }
     
     // roll mds and cache back if file operations failed
-    if ( err != KErrNone )
+    if ( aErr != KErrNone )
         {
-        if ( aMove )
+        if ( iIsMoveOperation )
             {
-            MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: move failed %d", err );
+            MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: move failed %d", aErr );
             MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: setting media path back and leaving." );
-            mediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, sourcePath );
-            iCollection.SetVideoL( *mediaForMoveOp );
+            iMediaForMoveOp->SetTextValueL( KMPXMediaGeneralUri, iSourcePath );
+            iCollection.SetVideoL( *iMediaForMoveOp );
             }
         else
             {
-            MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copy failed %d", err );
+            MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: copy failed %d", aErr );
             MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: deleting the added media object and leaving");
-            iCollection.iMyVideosMdsDb->RemoveVideo( mediaForCopyOp->ValueTObjectL<TMPXItemId>(
+            iCollection.iMyVideosMdsDb->RemoveVideo( iMediaForCopyOp->ValueTObjectL<TMPXItemId>(
                     KMPXMediaGeneralId ).iId1 );
             }
-        User::Leave( err );
         }
     
-    if ( aMove )
-        {
-        CleanupStack::PopAndDestroy( mediaForMoveOp ); // <-2
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( mediaForCopyOp ); // <-2
-        }
-    CleanupStack::PopAndDestroy( video ); // <-1
-    }    
+    delete iMediaForMoveOp;
+    iMediaForMoveOp = NULL;    
+    delete iMediaForCopyOp;
+    iMediaForCopyOp = NULL;
 
+    User::LeaveIfError( aErr );
+    
+    }
+    
 // ----------------------------------------------------------------------------
 // CVcxMyVideosAsyncFileOperations::DriveHasEnoughFreeSpaceL
 // ----------------------------------------------------------------------------
@@ -603,6 +666,8 @@
     {
     MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: source path = %S", &aSourcePath );
     
+    aTargetPath.Zero();
+    
     TChar targetDriveChar;
     User::LeaveIfError( iCollection.iFs.DriveToChar( aTargetDrive, targetDriveChar ) );    
     aTargetPath.Append( targetDriveChar );
@@ -622,18 +687,24 @@
     if ( sourceDrive == systemDrive )
         {
         //remove *:\data\* from the path
-        TPtrC pathData( aSourcePath.Mid(3,4) );
+        const TInt dataWordStartPos = 3;
+        const TInt dataWordLength   = 4;
+        
+        TPtrC pathData( aSourcePath.Mid( dataWordStartPos, dataWordLength ) );
         MPX_DEBUG2("CVcxMyVideosAsyncFileOperations:: sourcePath.Mid(3,4)= %S", &pathData);
 
-        if ( aSourcePath.Mid(3,4) == KDataDes )
+        if ( pathData == KDataDes )
             {
             MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: source drive is system drive and 'data' exists in sourcePath");
             MPX_DEBUG1("CVcxMyVideosAsyncFileOperations:: not copying 'data' to the target path");
-            aTargetPath.Append( aSourcePath.Mid( 7 ) );
+            
+            const TInt skipDataWordPos = 7;
+            aTargetPath.Append( aSourcePath.Mid( skipDataWordPos ) );
             }
         else
             {
-            aTargetPath.Append( aSourcePath.Mid( 2 ) );
+            const TInt dontSkipDataWordPos = 2;
+            aTargetPath.Append( aSourcePath.Mid( dontSkipDataWordPos ) );
             }
         }    
     else if ( aTargetDrive == systemDrive )
@@ -660,6 +731,10 @@
 //
 MVcxMyVideosActiveTaskObserver::TStepResult CVcxMyVideosAsyncFileOperations::HandleDeleteStepL()
     {
+    // Reset inactivity timer. This will prevent ThumbAGDaemon start running while
+    // delete is ongoing and failing the operation due to locked file handle.
+    User::ResetInactivityTime();
+    
     CMPXMedia& cmd = iCollection.iActiveTask->GetCommand();
     
     //no sanity checks for array items, since we want to generate all events, even if there is nothing to delete
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -283,8 +283,8 @@
             category = aCategoryArray.AtL( i );
 
             //codescanner warning: aVideosIncrements count is same as aCategoryArray count, so the range is checked
-            UpdateVideosCountL( *category, aVideosIncrements[i], KVcxMediaMyVideosCategoryItemCount,
-                    EVcxMyVideosListNoInfo );
+            UpdateVideosCountL( *category, aVideosIncrements[i],
+                    KVcxMediaMyVideosCategoryItemCount, EVcxMyVideosListNoInfo );
 
             modified = ETrue;
             }
@@ -294,8 +294,8 @@
             {
             category = aCategoryArray.AtL( i );
 
-            UpdateVideosCountL( *category, aNewVideosIncrements[i], KVcxMediaMyVideosCategoryNewItemCount,
-                    EVcxMyVideosListNoInfo );
+            UpdateVideosCountL( *category, aNewVideosIncrements[i],
+                    KVcxMediaMyVideosCategoryNewItemCount, EVcxMyVideosListNoInfo );
 
             modified = ETrue;
             }
@@ -691,7 +691,8 @@
     prevNewVideoName.Set( iListArray->AtL( categoryIndex )->ValueText(
             KVcxMediaMyVideosCategoryNewItemName ) );
     CMPXMedia* newVideo;
-    currentNewVideoName.Set( CalculateNewVideoNameL( *videoList, aOrigin, aIgnoredIds, newVideo ) );
+    currentNewVideoName.Set( CalculateNewVideoNameL(
+            *videoList, aOrigin, aIgnoredIds, newVideo ) );
     if ( currentNewVideoName.CompareF( prevNewVideoName ) != 0 )
         {
         iListArray->AtL( categoryIndex )->SetTextValueL(
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -217,8 +217,15 @@
         MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: fetching from MDS");
         video = iMyVideosMdsDb->CreateVideoL( ids[0].iId1, ETrue /* full details */ );    
         }
-        
-    iObs->HandleMedia( video, KErrNone );
+    
+    if ( video )
+        {
+        iObs->HandleMedia( video, KErrNone );
+        }
+    else
+        {
+        iObs->HandleMedia( NULL, KErrNotFound );    
+        }
     
     CleanupStack::PopAndDestroy( &ids );          // <-2
     CleanupStack::PopAndDestroy( &supportedIds ); // <-1
@@ -290,7 +297,20 @@
                 MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: sync KMPXCommandIdCollectionSet arrived");
                 
                 CMPXMedia* video = aCmd.Value<CMPXMedia>( KMPXCommandColSetMedia );
-                SetVideoL( *video );
+                
+                TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( *video );
+                if ( mpxId.iId2 == KVcxMvcMediaTypeVideo )
+                    {
+                    SetVideoL( *video );
+                    }
+                else if ( mpxId.iId2 == KVcxMvcMediaTypeAlbum )
+                    {
+                    iMyVideosMdsDb->iAlbums->SetAlbumL( *video );
+                    }
+                else
+                    {
+                    User::Leave( KErrNotFound );
+                    }
                 }
                 break;
             
@@ -486,7 +506,9 @@
             MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() Items modified in MDS, updating cache |");
             MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() --------------------------------------'");
             CMPXMedia* video;
-            for ( TInt i = 0; i < aId.Count(); i++ )
+            CMPXMedia* album;
+            TInt count = aId.Count();
+            for ( TInt i = count - 1; i >= 0; i-- )
                 {
                 video = iMyVideosMdsDb->CreateVideoL( aId[i], ETrue /* full details */ );
                 
@@ -498,12 +520,24 @@
                     }
                 else
                     {
-                    MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: couldn't find the modified item from MDS");
+                    MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: item was not found from videos, checking albums");
+                    album = iMyVideosMdsDb->iAlbums->GetAlbumL( aId[i] );
+                    
+                    if ( album )
+                        {
+                        CleanupStack::PushL( album ); // 1->
+                        iAlbums->UpdateAlbumL( *album ); // this will add event to iMessageList if necessarry
+                        CleanupStack::PopAndDestroy( album ); // <-1
+                        }
+                    else
+                        {
+                        MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: couldn't find the modified item from MDS");
+                        }
+                    aId.Remove( i );
                     }
                 }
+            
             }
-            
-            //TODO: handle album modify events
             break;
         }
 
@@ -525,16 +559,13 @@
                 }
             }
 
-        if ( aEvent == EMPXItemInserted )
-            {
-            //nonVideoIds are albums
-            TInt count = nonVideoIds.Count();
-            for ( TInt i = 0; i < count; i++ )
-                {
-                TRAP_IGNORE( iMessageList->AddEventL(
-                        TMPXItemId( nonVideoIds[i], KVcxMvcMediaTypeAlbum ), aEvent ) );
-                }
-            }
+    //nonVideoIds are albums
+    count = nonVideoIds.Count();
+    for ( TInt i = 0; i < count; i++ )
+        {
+        TRAP_IGNORE( iMessageList->AddEventL(
+                TMPXItemId( nonVideoIds[i], KVcxMvcMediaTypeAlbum ), aEvent ) );
+        }
 
     CleanupStack::PopAndDestroy( &nonVideoIds );
     
@@ -598,6 +629,11 @@
                     CMPXMedia* video = iMyVideosMdsDb->CreateVideoL(
                             mpxId.iId1, ETrue /* full details */ );
                     
+                    if ( !video )
+                        {
+                        User::Leave( KErrNotFound );
+                        }
+                    
                     CleanupStack::PushL( video ); // 1->
                                         
                     cmd.SetCObjectValueL<CMPXMedia>( KMPXCommandColAddMedia, video );
@@ -968,7 +1004,7 @@
     ids.Reset();
     CleanupClosePushL( ids ); // 1->
     ids.AppendL( mpxId.iId1 );
-    HandleMyVideosDbEvent( EMPXItemInserted, ids ); //this will fetch from mds to cache and sync with downloads
+    HandleMyVideosDbEvent( EMPXItemInserted, ids ); //this will fetch from mds to cache
     CleanupStack::PopAndDestroy( &ids ); // <-1
     }
 
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -312,7 +312,7 @@
 // TVcxMyVideosCollectionUtil::IdL
 // ----------------------------------------------------------------------------
 //
-TMPXItemId TVcxMyVideosCollectionUtil::IdL( CMPXMedia& aVideo )
+TMPXItemId TVcxMyVideosCollectionUtil::IdL( const CMPXMedia& aVideo )
     {
     TMPXItemId id( 0, 0 );
                             
@@ -345,7 +345,7 @@
 // TVcxMyVideosCollectionUtil::Title
 // ----------------------------------------------------------------------------
 //
-const TDesC& TVcxMyVideosCollectionUtil::Title( CMPXMedia& aVideo )
+const TDesC& TVcxMyVideosCollectionUtil::Title( const CMPXMedia& aVideo )
     {                            
     if ( aVideo.IsSupported( KMPXMediaGeneralTitle ) )
         {
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsalbums.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -156,7 +156,34 @@
     iMdsDb.iCmdQueue->ExecuteCmdL( cmd ); //owneship moves
     CleanupStack::Pop( cmd );
     }
-    
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsAlbums::GetAlbumL
+// ---------------------------------------------------------------------------
+//
+CMPXMedia* CVcxMyVideosMdsAlbums::GetAlbumL( TUint32 aId )
+    {
+    CMdEObject* object = iMdsDb.ObjectL( aId, EFalse /* is not video, is album */);
+
+    if ( !object )
+        {
+        MPX_DEBUG2("CVcxMyVideosMdsAlbums:: mds id %d not found from mds", aId);
+        return NULL;
+        }
+        
+    CleanupStack::PushL( object ); // 1->
+
+    CMPXMedia* album = CMPXMedia::NewL( );
+    CleanupStack::PushL( album ); // 2->
+
+    Object2MediaL( *object, *album );
+
+    CleanupStack::Pop( album );            // <-2
+    CleanupStack::PopAndDestroy( object ); // <-1
+
+    return album;
+    }
+
 // ---------------------------------------------------------------------------
 // CVcxMyVideosMdsAlbums::DoGetAlbumsL
 // ---------------------------------------------------------------------------
@@ -338,7 +365,7 @@
     // ID
     TMPXItemId mpxId;
     mpxId.iId1 = aObject.Id();
-    mpxId.iId2 = 2;
+    mpxId.iId2 = KVcxMvcMediaTypeAlbum;
     aAlbum.SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, mpxId );
     
     // TITLE
@@ -777,6 +804,58 @@
     }
 
 // ---------------------------------------------------------------------------
+// CVcxMyVideosMdsAlbums::SetAlbumL
+// ---------------------------------------------------------------------------
+//
+void CVcxMyVideosMdsAlbums::SetAlbumL( CMPXMedia& aVideo )
+    {
+    MPX_DEBUG1("CVcxMyVideosMdsDb::SetAlbumL() start");
+
+    if ( !iMdsDb.iMdsSession )
+        {
+        MPX_DEBUG2("CVcxMyVideosMdsAlbums:: no mds session(%d), leaving", iMdsDb.iMdsError);
+        User::Leave( iMdsDb.iMdsError );
+        }
+
+    TMPXItemId mpxId = TVcxMyVideosCollectionUtil::IdL( aVideo );
+
+    MPX_DEBUG2("CVcxMyVideosMdsAlbums::SetAlbumL updating object %d ", mpxId.iId1);
+    
+    CMdEObject* object =
+            iMdsDb.iMdsSession->OpenObjectL( mpxId.iId1, *iAlbumObjectDef );
+    if ( !object )
+        {
+        // No object with this ID was found!
+        MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL no object found");
+        User::Leave( KErrNotFound );
+        }
+    else
+        {
+        MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL object found");
+        
+        if ( object->OpenForModifications() )
+            {
+            CleanupStack::PushL( object ); // 1->
+            
+            Media2ObjectL( aVideo, *object );
+            
+            iMdsDb.iMdsSession->CommitObjectL( *object );
+
+            CleanupStack::PopAndDestroy( object );
+            }
+        else
+            {
+            // Object is already locked!
+            MPX_DEBUG1("CVcxMyVideosMdsAlbums::SetAlbumL object was locked!");
+            delete object;
+            User::Leave( KErrInUse );
+            }
+        }
+
+    MPX_DEBUG1("CVcxMyVideosMdsDb::SetAlbumL() exit");
+    }
+
+// ---------------------------------------------------------------------------
 // CVcxMyVideosMdsAlbums::RemoveAlbumsL
 // ---------------------------------------------------------------------------
 //
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -249,21 +249,9 @@
     CMdEObject* object = iMdsSession->NewObjectLC(
             *iVideoObjectDef, aVideo.ValueText( KMPXMediaGeneralUri ) ); // 1->
 
-    // check if the file exists and use the creation time from the file
-
-    SetCreationAndModifiedDatesL( *object );
-
-#if 0    
-    TTime time;
-    time.UniversalTime();
-	TTimeIntervalSeconds timeOffset = User::UTCOffset();
-	TTime localTime = time + timeOffset;
+    // Value from aVideo is taken in use in Media2ObjectL if aVideo contains creation date
+    SetCreationAndModifiedDatesL( *object ); // use current time
     
-    const TInt secondsInMinute( 60 );    
-    object->AddTimePropertyL( *iCreationDatePropertyDef, localTime ); 
-	object->AddInt16PropertyL( *iTimeOffsetPropertyDef, timeOffset.Int() / secondsInMinute );
-    object->AddTimePropertyL( *iLastModifiedDatePropertyDef, localTime );
-#endif
     object->AddUint8PropertyL( *iOriginPropertyDef,
             aVideo.ValueTObjectL<TUint8>( KVcxMediaMyVideosOrigin ) );
     
@@ -655,7 +643,7 @@
     if ( !object )
         {
         MPX_DEBUG2("CVcxMyVideosMdsDb:: mds id %d not found from mds", aId);
-        User::Leave( KErrNotFound );
+        return NULL;
         }
         
     CleanupStack::PushL( object ); // 1->
@@ -740,7 +728,7 @@
 // CVcxMyVideosMdsDb::ObjectL
 // ---------------------------------------------------------------------------
 //
-CMdEObject* CVcxMyVideosMdsDb::ObjectL( const TItemId aId )
+CMdEObject* CVcxMyVideosMdsDb::ObjectL( const TItemId aId, TBool aIsVideo )
     {
     if ( !iMdsSession )
         {
@@ -755,8 +743,16 @@
         return NULL;
         }
 
-    CMdEObject* object = iMdsSession->GetObjectL( aId, *iVideoObjectDef );
-
+    CMdEObject* object;
+    if ( aIsVideo )
+        {
+        object = iMdsSession->GetObjectL( aId, *iVideoObjectDef );
+        }
+    else
+        {
+        object = iMdsSession->GetObjectL( aId, *iAlbums->iAlbumObjectDef );
+        }
+    
     if ( object )
         {
         MPX_DEBUG2( "CVcxMyVideosMdsDb::ObjectL found, id: %d", aId );
@@ -960,19 +956,6 @@
         
         aVideo.SetTObjectValueL<TInt>( KMPXMediaGeneralLastPlaybackPosition, pos );
         }
-
-#if 0    
-    //18. DOWNLOAD ID (BRIEF)
-    if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound )
-        {
-        aVideo.SetTObjectValueL<TUint32>( KVcxMediaMyVideosDownloadId,
-                static_cast<CMdEUint32Property*>(property)->Value() );
-        }
-    else
-        {
-        aVideo.SetTObjectValueL<TUint32>( KVcxMediaMyVideosDownloadId, 0 );
-        }
-#endif
     
     //19. RATING (FULL)
     if ( aObject.Property( *iRatingPropertyDef, property, 0 ) != KErrNotFound
@@ -1106,23 +1089,8 @@
         }
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
-#if 0    
     // 6. KMPXMediaGeneralDate ( creation date )
-    if ( aVideo.IsSupported( KMPXMediaGeneralDate ) )
-        {
-        TInt64 creationDateInt64 = 0;
-        creationDateInt64 = aVideo.ValueTObjectL<TInt64>( KMPXMediaGeneralDate );
-        TTime creationDate( creationDateInt64 );
-        if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound )
-            {
-            static_cast<CMdETimeProperty*>(property)->SetValueL( creationDate );
-            }
-        else
-            {
-            aObject.AddTimePropertyL( *iCreationDatePropertyDef, creationDate );
-            }
-        }
-#endif
+    SetCreationDateToObjectL( aVideo, aObject );
     
     // 7. KMPXMediaGeneralFlags (including DRM flag)
     if ( aVideo.IsSupported( KMPXMediaGeneralFlags ) )
@@ -1329,23 +1297,6 @@
             aObject.AddReal32PropertyL( *iLastPlayPositionPropertyDef, lastPlaybackPos );
             }
         }
-
-#if 0
-    // 18. DOWNLOAD ID
-    if ( aVideo.IsSupported( KVcxMediaMyVideosDownloadId ) )
-        {
-        TUint32 dlId = aVideo.ValueTObjectL<TUint32>( KVcxMediaMyVideosDownloadId );
-        
-        if ( aObject.Property( *iDownloadIdPropertyDef, property, 0 ) != KErrNotFound )
-            {
-            static_cast<CMdEUint32Property*>(property)->SetValueL( dlId );
-            }
-        else
-            {
-            aObject.AddUint32PropertyL( *iDownloadIdPropertyDef, dlId );
-            }
-        }
-#endif
     
     // 19. RATING
     if ( aVideo.IsSupported( KVcxMediaMyVideosRating ) )
@@ -1438,6 +1389,37 @@
     }
 
 // ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::SetCreationDateToObjectL
+// ---------------------------------------------------------------------------
+//
+void CVcxMyVideosMdsDb::SetCreationDateToObjectL( const CMPXMedia& aVideo, CMdEObject& aObject )
+    {
+    CMdEProperty* property;
+    
+    if ( aVideo.IsSupported( KMPXMediaGeneralDate ) )
+        {
+        TInt64 creationDateInt64 = 0;
+        creationDateInt64 = aVideo.ValueTObjectL<TInt64>( KMPXMediaGeneralDate );
+        TTime creationDate( creationDateInt64 );
+        if ( aObject.Property( *iCreationDatePropertyDef, property, 0 ) != KErrNotFound )
+            {
+            static_cast<CMdETimeProperty*>(property)->SetValueL( creationDate );
+            }
+        else
+            {
+            aObject.AddTimePropertyL( *iCreationDatePropertyDef, creationDate );
+            }
+#ifdef _DEBUG
+        TDateTime dT = creationDate.DateTime();
+        TBuf<200> buf;
+        buf.Format(_L("date from aVideo to aObject: %2d.%2d.%4d %2d:%2d:%2d"),
+                dT.Day()+1, dT.Month()+1, dT.Year(), dT.Hour(), dT.Minute(), dT.Second() ); 
+        MPX_DEBUG2("%S", &buf ); 
+#endif
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // CVcxMyVideosMdsDb::GetSchemaDefinitionsL
 // ---------------------------------------------------------------------------
 //
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -266,7 +266,7 @@
 // CVcxMyVideosVideoCache::GetVideosL
 // ----------------------------------------------------------------------------
 //
-CMPXMedia* CVcxMyVideosVideoCache::GetVideosL( RArray<TUint32> aMdsIds )
+CMPXMedia* CVcxMyVideosVideoCache::GetVideosL( RArray<TUint32>& aMdsIds )
     {
     CMPXMessage* videoList = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL();
     CleanupStack::PushL( videoList ); // 1->
@@ -593,7 +593,7 @@
     TBool changed = EFalse;
         
     // 1 MPX ID cant be changed
-    // 2 
+    // 2
     if ( aVideo.IsSupported( KMPXMediaGeneralTitle ) )
         {
         if ( videoInCache->ValueText( KMPXMediaGeneralTitle ) !=
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/conf/VCXMyVideosCollectionPluginTestAlbums.cfg	Thu Apr 01 23:32:44 2010 +0300
@@ -743,7 +743,6 @@
 delete VCXMV
 [Endtest]
 
-
 #------------------------------------------------------------------------------------
 #
 # Add videos to album, multiple adds from category level.
@@ -2200,3 +2199,315 @@
 print OK!
 delete VCXMV
 [Endtest]
+
+#------------------------------------------------------------------------------------
+#
+# Rename album at collection root level
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename album at 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 RenameAlbum Album1 Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CheckAlbumExists Album2
+allownextresult KERRNOTFOUND
+VCXMV CheckAlbumExists Album1
+VCXMV CheckAlbumCount 1
+
+print OK!
+delete VCXMV
+[Endtest]
+
+#------------------------------------------------------------------------------------
+#
+# Rename album when its open
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename album when its open
+
+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 OpenLevel Album1
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV RenameAlbum Album1 Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CloseLevel
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CheckAlbumExists Album2
+allownextresult KERRNOTFOUND
+VCXMV CheckAlbumExists Album1
+VCXMV CheckAlbumCount 1
+
+print OK!
+delete VCXMV
+[Endtest]
+
+
+#------------------------------------------------------------------------------------
+#
+# Rename album when another album is open
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename album when another album is open
+
+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 Album3
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CoolDown
+
+VCXMV OpenLevel Album3
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV RenameAlbum Album1 Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified
+waittestclass VCXMV
+
+VCXMV CoolDown
+
+VCXMV CloseLevel
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CheckAlbumExists Album2
+VCXMV CheckAlbumExists Album3
+allownextresult KERRNOTFOUND
+VCXMV CheckAlbumExists Album1
+VCXMV CheckAlbumCount 2
+
+print OK!
+delete VCXMV
+[Endtest]
+
+#------------------------------------------------------------------------------------
+#
+# Rename multiple albums
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename multiple albums
+
+callsub Cleanup
+
+// TESTCASE START
+
+create VCXMyVideosCollectionPluginTest VCXMV
+VCXMV Create
+
+VCXMV OpenCollection VCXCollectionMyVideos
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+loop 10
+    print "Create LOOP_COUNT "
+    VCXMV CreateAlbum "Video Album - LOOP_COUNT "
+    VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumInserted KVCXMYVideosTestMessageCollectionOpened
+    waittestclass VCXMV
+endloop
+
+VCXMV CoolDown
+VCXMV CheckAlbumCount 10
+
+loop 10
+    print "Rename LOOP_COUNT "
+    VCXMV RenameAlbum "Video Album - LOOP_COUNT " "Renamed - LOOP_COUNT "
+    VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified
+    waittestclass VCXMV
+endloop
+
+VCXMV CoolDown
+
+loop 10
+    print "Check LOOP_COUNT "
+    VCXMV CheckAlbumExists "Renamed - LOOP_COUNT "
+    allownextresult KERRNOTFOUND
+    VCXMV CheckAlbumExists "Video Album - LOOP_COUNT "
+endloop
+
+VCXMV CheckAlbumCount 10
+
+print OK!
+delete VCXMV
+[Endtest]
+
+#------------------------------------------------------------------------------------
+#
+# Rename album that has videos
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename album that has videos
+
+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 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 AddMediasToAlbum Album1 ANY_DRIVE 0 3
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCommandComplete KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CloseLevel
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV RenameAlbum Album1 Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+VCXMV CheckAlbumExists Album2
+allownextresult KERRNOTFOUND
+VCXMV CheckAlbumExists Album1
+VCXMV CheckAlbumCount 1
+
+VCXMV OpenLevel Album2
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageCollectionOpened KVCXMYVideosTestMessageListComplete
+waittestclass VCXMV
+
+VCXMV CheckMediaCount ANY_DRIVE 3
+
+print OK!
+delete VCXMV
+[Endtest]
+
+#------------------------------------------------------------------------------------
+#
+# Rename album with empty name
+#
+#------------------------------------------------------------------------------------   
+[Test]
+title Rename album with empty 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 "EmptyString"
+VCXMV WaitForMessages 1MINUTE KVCXMYVideosTestMessageMpxAlbumModified KVCXMYVideosTestMessageCollectionOpened
+waittestclass VCXMV
+
+allownextresult KERRNOTFOUND
+VCXMV CheckAlbumExists Album1
+VCXMV CheckAlbumCount 1
+
+print OK!
+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/inc/VCXMyVideosCollectionPluginTest.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h	Thu Apr 01 23:32:44 2010 +0300
@@ -341,6 +341,21 @@
          * @param expectedCount
          */
         virtual TInt CheckAlbumCountL( CStifItemParser& aItem );
+
+        /**
+         * Renames an album.
+         *
+         * @param albumName
+         * @param newAlbumName
+         */
+        virtual TInt RenameAlbumL( CStifItemParser& aItem );
+        
+        /**
+         * Checks that an album exists.
+         *
+         * @param albumName
+         */
+        virtual TInt CheckAlbumExistsL( CStifItemParser& aItem );                
         
         /**
          * Checks the video count and that the videos really exist.
@@ -580,13 +595,6 @@
          * @param aEndIndex index of last media 
          */
         virtual TInt RemoveMediasFromAlbumL( CStifItemParser& aItem );
-
-        /**
-         * Checks the count of albums.
-         *
-         * @param aExpectedAlbumCount
-         */
-        virtual TInt CheckAlbumCount( CStifItemParser& aItem );
         
         /**
          * Creates a video file to the file system.
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTester.h	Thu Apr 01 23:32:44 2010 +0300
@@ -281,12 +281,15 @@
          * @param aEndIndex 
          */
         void RemoveMediasFromAlbumL( const TDesC& aAlbumName, TInt aSourceDrive, TInt aStartIndex, TInt aEndIndex );
-        
+
         /**
-         * Checks the count of albums.
+         * Renames an album.
+         *
+         * @param aAlbumName
+         * @param aNewAlbumName
          */
-        bool CheckAlbumCount( int aExpectedCount );
-
+        void RenameAlbumL( const TDesC& aAlbumName, const TDesC& aNewAlbumName );
+        
         /**
          * Use to toggle automatic refresh of contents when open collection changes.
          */
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -226,7 +226,8 @@
         ENTRY( "DeleteAllAlbums", CVCXMyVideosCollectionPluginTest::DeleteAllAlbumsL ),
         ENTRY( "AddMediasToAlbum", CVCXMyVideosCollectionPluginTest::AddMediasToAlbumL ),
         ENTRY( "RemoveMediasFromAlbum", CVCXMyVideosCollectionPluginTest::RemoveMediasFromAlbumL ),
-        ENTRY( "CheckAlbumCount", CVCXMyVideosCollectionPluginTest::CheckAlbumCount ),
+        ENTRY( "RenameAlbum", CVCXMyVideosCollectionPluginTest::RenameAlbumL ),
+        ENTRY( "CheckAlbumExists", CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL ),
         
         ENTRY( "CreateVideoFile", CVCXMyVideosCollectionPluginTest::CreateVideoFileL ),
         ENTRY( "CreateVideoFileNoWait", CVCXMyVideosCollectionPluginTest::CreateVideoFileNoWaitL ),
@@ -1403,14 +1404,12 @@
     return err;
     }
 
-
 // -----------------------------------------------------------------------------
 // CVcxMyVideosApiTest::CheckAlbumCountL
 // -----------------------------------------------------------------------------
 //
 TInt CVCXMyVideosCollectionPluginTest::CheckAlbumCountL( CStifItemParser& aItem )
     {
-
     VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::CheckAlbumCountL ---------->");
     // Print to UI
     _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" );
@@ -2620,7 +2619,6 @@
     return err;
     }
 
-
 // -----------------------------------------------------------------------------
 // CVcxMyVideosApiTest::AddMediasToAlbumL
 // -----------------------------------------------------------------------------
@@ -2704,35 +2702,80 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVcxMyVideosApiTest::CheckAlbumCount
+// CVcxMyVideosApiTest::RenameAlbumL
 // -----------------------------------------------------------------------------
 //
-TInt CVCXMyVideosCollectionPluginTest::CheckAlbumCount( CStifItemParser& aItem )
+TInt CVCXMyVideosCollectionPluginTest::RenameAlbumL( CStifItemParser& aItem )
     {
-    VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::CreateAlbumL ---------->");
+    VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::RenameAlbumL ---------->");
     // Print to UI
     _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" );
-    _LIT( KWhere, "In CheckAlbumCount" );
+    _LIT( KWhere, "In RenameAlbumL" );
     TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere );
     // Print to log file
     iLog->Log( KWhere );
+
+    WaitForRefreshL( EFalse ); // Wait for possible refresh to finish.
     
     aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
 
-    TInt err( KErrNotReady );
-    
-    int expectedCount;
-    User::LeaveIfError( aItem.GetNextInt( expectedCount ) );
+    int err( KErrNotReady );
     
     if( iTester )
         {
-        if( !iTester->CheckAlbumCount( expectedCount ) )
+        TPtrC albumName;
+        User::LeaveIfError( aItem.GetNextString( albumName ) );
+        
+        TPtrC newAlbumName;
+        User::LeaveIfError( aItem.GetNextString( newAlbumName ) );
+
+        if( newAlbumName.Compare( KStifScript2KString ) == KErrNone )
             {
-            err = KErrCorrupt;
+            TRAP( err, iTester->RenameAlbumL( albumName, KAbout2050CharsString ) );
+            }
+        else if( newAlbumName.Compare( KStifScriptEmptyString ) == KErrNone )
+            {
+            TRAP( err, iTester->RenameAlbumL( albumName, KVcxTestEmptyString ) );
+            }
+        else
+            {
+            TRAP( err, iTester->RenameAlbumL( albumName, newAlbumName ) );    
             }
         }
-
-    VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTest::CheckAlbumCount <----------");
+  
+    VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTest::RenameAlbumL <----------");
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxMyVideosApiTest::CheckAlbumExistsL
+// -----------------------------------------------------------------------------
+//
+TInt CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL ---------->");
+    // Print to UI
+    _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" );
+    _LIT( KWhere, "In CheckAlbumExistsL" );
+    TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+    WaitForRefreshL( EFalse ); // Wait for possible refresh to finish.
+    
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+
+    int err( KErrNotReady );
+    
+    if( iTester )
+        {
+        TPtrC albumName;
+        User::LeaveIfError( aItem.GetNextString( albumName ) );
+        
+        TRAP( err, iTester->GetAlbumIdL(albumName) );
+        }
+  
+    VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTest::CheckAlbumExistsL <----------");
     return err;
     }
 
--- a/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTester.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -882,25 +882,35 @@
                         
             if( itemId.iId2 == KVcxMvcMediaTypeAlbum )
                 {
-                TBool albumFound( EFalse ); 
+                int albumIndex(-1);
                 for( TInt e = 0; e < iAlbumIds.Count(); e++ )
                     {
                     if( iAlbumIds[e] == itemId )
                         {
-                        albumFound = ETrue;
+                        albumIndex = e;
                         }
                     }
                 
-                if( !albumFound )
+                TBuf<256> title;
+                if( media->IsSupported( KMPXMediaGeneralTitle ) )
                     {
-                    TBuf<256> title;
-                    if( media->IsSupported( KMPXMediaGeneralTitle ) )
+                    title = media->ValueText( KMPXMediaGeneralTitle );
+                    
+                    if( albumIndex == -1 )
                         {
-                        title = media->ValueText( KMPXMediaGeneralTitle );
+                        HBufC* titleBuff = title.AllocL();
+                        iAlbumNames.Append( titleBuff );
+                        iAlbumIds.Append( itemId );
                         }
-                    HBufC* titleBuff = title.AllocL();
-                    iAlbumNames.Append( titleBuff );
-                    iAlbumIds.Append( itemId );
+                    else
+                        {
+                        if( iAlbumNames[albumIndex]->Compare( title )!= KErrNone )
+                            {
+                            iAlbumNames[albumIndex]->Des().SetLength( 0 );
+                            iAlbumNames[albumIndex]->ReAlloc( title.Length() );
+                            iAlbumNames[albumIndex]->Des().Copy( title );
+                            }
+                        }
                     }
                 }
             }
@@ -2893,22 +2903,22 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVCXMyVideosCollectionPluginTester::CheckAlbumCount
+// CVCXMyVideosCollectionPluginTester::RenameAlbumL
 // -----------------------------------------------------------------------------
 //
-bool CVCXMyVideosCollectionPluginTester::CheckAlbumCount( int aExpectedCount )
+void CVCXMyVideosCollectionPluginTester::RenameAlbumL( const TDesC& aAlbumName, const TDesC& aNewAlbumName )
     {
-    VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTester::CheckAlbumCount");
+    VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTester::RenameAlbumL");
     
-    TBool ret( ETrue );
-    if( iAlbumNames.Count() != aExpectedCount )
-        {
-        VCXLOGLO3("<<<CVCXMyVideosCollectionPluginTester::CheckAlbumCount: expected: %d, got: %d, error!", aExpectedCount, iAlbumNames.Count());
-        ret = EFalse;
-        }
+    TMPXItemId itemId = GetAlbumIdL( aAlbumName );
+    CMPXMedia *media = CMPXMedia::NewL();
+    CleanupStack::PushL( media );
+    media->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, itemId );
+    media->SetTextValueL( KMPXMediaGeneralTitle, aNewAlbumName );
+    SetMediaL( media, ETrue );
+    CleanupStack::PopAndDestroy( media );
     
-    VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTester::CheckAlbumCount");
-    return ret;
+    VCXLOGLO1("<<<CVCXMyVideosCollectionPluginTester::RenameAlbumL");
     }
 
 // -----------------------------------------------------------------------------
--- a/videocollection/tsrc/stubs/inc/centralrepository.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  stub central repository -class for testing CVideoCollectionClient
-* 
-*/
-
-#ifndef __CENTRALREPOSITORY_H__
-#define __CENTRALREPOSITORY_H__
-
-#include <e32base.h>
-
-
-class CRepository 
-{
-public:
-    
-    /**
-     * sets gCRNewLLeave
-     */
-    static void setNewLLeave(bool leave);
-    
-    /**
-     * sets gCRSetFail
-     */
-    static void setSetFail(int amount);
-    
-    /**
-     * sets gCRGetFail
-     */
-    static void setGetFail(int amount);
-    
-    /**
-     * gets gSettedRoleValue;
-     */
-    static int getRoleValue();
-    
-    /**
-     * gets gSettedOrderValue;
-     */
-    static int getOrderValue();
-    
-    /**
-     * gets gSettedTDesValue;
-     */
-    static TDesC& getTDesValue();
- 
-    /**
-     * sets gSettedRoleValue;
-     */
-    static void setRoleValue(int value);
-    
-    /**
-     * sets gSettedOrderValue;
-     */
-    static void setOrderValue(int value);
-    
-    /**
-     * sets gSettedTDesValue;
-     */
-    static void setTDesValue(const TDesC& value);
-
-    /**
-     * if gCRNewLLeave is true, will leave
-     * if gCRNewLLeave is false returns new CRepository
-     */
-    static CRepository* NewL(TUid aRepositoryUid);
-
-    /**
-     * contructor
-     */
-    CRepository();
-    
-    /**
-     * destructor
-     */
-    virtual ~CRepository();
-    
-    /**
-     * if gCRGetFail is true, returns KErrGeneral
-     * if gCRGetFail is false, returns gSettedValue and returns KErrNone
-     */
-    TInt Get(TUint32 aKey, TInt& aValue);
-
-    /**
-     * if gCRSetFail is true, returns KErrGeneral
-     * if gCRSetFail is false, saves value to gSettedValue and returns KErrNone
-     */
-    TInt Set(TUint32 aKey, TInt aValue);
-    
-    /**
-     * if gCRGetFail is true, returns KErrGeneral
-     * if gCRGetFail is false, returns gSettedValue and returns KErrNone
-     */
-    TInt Get(TUint32 aKey, TDes& aValue);
-    
-private:
-
-};
-
-#endif // __CENTRALREPOSITORY_H__
--- a/videocollection/tsrc/stubs/inc/hbabstractitemview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbabstractitemview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,16 +15,17 @@
 * 
 */
 
-
 #ifndef HBABSTRACTITEMVIEW_H
 #define HBABSTRACTITEMVIEW_H
 
+#include "hbwidget.h"
 #include <QGraphicsWidget>
 #include <QItemSelectionModel>
-#include "hbwidget.h"
 
 class HbAbstractItemView : public HbWidget
 {
+    Q_OBJECT
+    
 public:
     
     enum SelectionMode
@@ -41,7 +42,7 @@
 signals:
 
     void activated(const QModelIndex &index);
-    
+
 };
 
 #endif
--- a/videocollection/tsrc/stubs/inc/hbaction.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbaction.h	Thu Apr 01 23:32:44 2010 +0300
@@ -26,50 +26,55 @@
 #include "hbicon.h"
 #include "hbmenu.h"
 
-class  HbAction : public QAction
+class  HbAction : public QObject
 {
     Q_OBJECT
+
 public:
     
     /**
      * Constructor
      */
-    explicit HbAction(QObject *parent = 0) : QAction(parent)
+    explicit HbAction(QObject *parent = 0)
     {
         Q_UNUSED(parent);
         initializeCount++;
+        mTriggeredCount = 0;
     }
     
     /**
      * Contructor.
      */       
-    explicit HbAction(const QString &txt, QObject *parent = 0) : mTxt(txt), QAction(parent) 
+    explicit HbAction(const QString &txt, QObject *parent = 0) : mTxt(txt) 
     {
         Q_UNUSED(parent);
         initializeCount++;
+        mTriggeredCount = 0;
     }
     
     /**
      * Contructor.
      */ 
-    explicit HbAction(Hb::SoftKeyAction actType, QObject *parent = 0) : mTxt(""), QAction(parent) 
+    explicit HbAction(Hb::SoftKeyAction actType, QObject *parent = 0) : mTxt("")
     {
         Q_UNUSED(parent);
         Q_UNUSED(actType);
         initializeCount++;
+        mTriggeredCount = 0;
     }
     
-    explicit HbAction(Hb::NavigationAction action, QObject* parent = 0) : mTxt(""), QAction(parent)
+    explicit HbAction(Hb::NavigationAction action, QObject* parent = 0) : mTxt("")
     {
         Q_UNUSED(parent);
         Q_UNUSED(action);
         initializeCount++;
+        mTriggeredCount = 0;
     }
     
     /**
      * destructor
      */
-   virtual ~HbAction(){initializeCount--;}
+    virtual ~HbAction(){initializeCount--;}
     
     /**
      * sets mDisable;
@@ -97,6 +102,25 @@
     HbMenu *menu() const { return 0; }
     
     /**
+     * Trigger stub
+     */
+    void trigger() { mTriggeredCount++; };
+    
+    /**
+     * SetText stub
+     */
+    void setText(QString text) { mText = text; };
+
+signals:
+        
+        /**
+         * dummy triggered
+         */
+        void triggered();
+        
+public: // data
+    
+    /**
      * dummy member 
      */
     bool mDisable;
@@ -116,13 +140,15 @@
      */
     static int initializeCount;
     
-signals:
+    /**
+     * Count how many times this was triggered.
+     */
+    int mTriggeredCount;
     
     /**
-     * dummy triggered
+     * Set text.
      */
-    void triggered();
-        
+    QString mText;    
 };
 
 #endif
--- a/videocollection/tsrc/stubs/inc/hbdialog.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbdialog.h	Thu Apr 01 23:32:44 2010 +0300
@@ -29,6 +29,13 @@
 {
    Q_OBJECT
    
+signals:
+
+    /**
+     * emitted from open -method 
+     */
+    void finished(HbAction*); 
+   
 public:
     
     enum DefaultTimeout
@@ -57,6 +64,15 @@
      */
     ~HbDialog();
     
+public slots:
+    
+    /**
+     * emits finished -signal with mPrimaryAction if execReturnPrimary is true. 
+     */
+    void open( QObject* receiver = 0, const char* member = 0 );
+    
+public:
+    
     /**
      * sets mDismissPolicy
      */
@@ -116,7 +132,7 @@
      * returns mPrimaryAction if execReturnPrimary is true.
      */
     HbAction* exec();
-    
+        
     /**
      * stubbed member
      */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/tsrc/stubs/inc/hbdocumentloader.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* 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:  hbdocumentloader stub
+*
+*/
+
+#ifndef HBDOCUMENTLOADER_H
+#define HBDOCUMENTLOADER_H
+
+#include "hbwidget.h"
+#include <qlist.h>
+#include <qpointer.h>
+
+class HbMainWindow;
+class VideoCollectionUiLoader;
+
+class ObjectData : public QObject
+{
+    Q_OBJECT
+public:
+    ObjectData(QObject *obj, QString name)
+    {
+        mObject = obj;
+        mName = name;
+    }
+    ~ObjectData()
+    {
+        delete mObject;
+    }
+public:
+    QPointer<QObject> mObject;
+    QString mName;
+};
+
+class HbDocumentLoader
+{
+
+public:
+    HbDocumentLoader();
+    HbDocumentLoader(const HbMainWindow *window);
+    virtual ~HbDocumentLoader();
+
+    QObjectList load( const QString &fileName, const QString &section , bool *ok = 0 );
+    QObjectList load( const QString &fileName, bool *ok = 0 );
+        
+    QGraphicsWidget *findWidget(const QString &name);
+    QObject *findObject(const QString &name);
+
+    void reset();
+    
+protected:
+    virtual QObject *createObject(const QString& type, const QString &name);
+    
+private:
+    
+    QObject *doCreateObject(const QString &name);
+    
+    QList<ObjectData *> mObjects;
+    
+    bool mCreatingObject;
+    
+public:
+    static bool mFindWidgetFails;
+    static bool mFindObjectFails;
+    static bool mCreateObjectFails;
+};
+
+#endif // HBDOCUMENTLOADER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/tsrc/stubs/inc/hbeffect.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  hbdocumentloader stub
+*
+*/
+
+#ifndef HBEFFECT_H
+#define HBEFFECT_H
+
+#include <qobject.h>
+#include <qgraphicsitem.h>
+#include <qvariant.h>
+#include <qrect.h>
+
+class HbEffect : public QObject
+{
+    Q_OBJECT
+    
+    HbEffect() { }
+    ~HbEffect() { }
+    
+public:
+
+    enum EffectEvent
+    {
+        EffectFinished                = 1,
+        EffectCancelled               = 2,
+        EffectNotStarted              = 3
+    };
+    
+    struct EffectStatus {
+        QGraphicsItem *item;
+        QString effectEvent;
+        EffectEvent reason;
+        QVariant userData;
+    };
+    
+    static bool start(QGraphicsItem */*item*/, 
+                            const QString &/*itemType*/, 
+                            const QString &/*effectEvent*/,
+                            QObject */*receiver = 0*/,
+                            const char */*member = 0*/,
+                            const QVariant &/*userData = QVariant()*/,
+                            const QRectF &/*extRect = QRectF()*/)
+    {
+      /*  HbEffect::EffectStatus status;
+        status.item = item;
+        status.effectEvent = effectEvent;
+        status.userData = userData;
+        status.reason = EffectNotStarted;
+        
+        QMetaObject::invokeMethod(
+            receiver,
+            member,
+            Qt::AutoConnection,
+            QGenericReturnArgument(),
+            Q_ARG(HbEffect::EffectStatus, status));*/
+        return false;
+    }
+
+    static bool start(QGraphicsItem */*item*/, 
+                            const QString &/*effectEvent*/,
+                            QObject */*receiver = 0*/,
+                            const char */*member = 0*/,
+                            const QVariant &/*userData = QVariant()*/,
+                            const QRectF &/*extRect = QRectF()*/)
+    {
+       /* HbEffect::EffectStatus status;
+        status.item = item;
+        status.effectEvent = effectEvent;
+        status.userData = userData;
+        status.reason = EffectNotStarted;
+        
+        QMetaObject::invokeMethod(
+            receiver,
+            member,
+            Qt::AutoConnection,
+            QGenericReturnArgument(),
+            Q_ARG(HbEffect::EffectStatus, status));*/
+        return false;
+    }
+    
+    static bool start(const QList<QGraphicsItem *> &/*items*/, 
+                            const QString &/*itemType*/, 
+                            const QString &/*effectEvent*/,
+                            QObject */*receiver = 0*/,
+                            const char */*member = 0*/,
+                            const QVariant &/*userData = QVariant()*/)
+    {
+
+        return false;
+    }
+    
+    static bool effectRunning(QGraphicsItem */*item*/, const QString &/*effectEvent = QString()*/) {return false;}
+
+    static bool cancel(
+        QGraphicsItem */*item*/,
+        const QString &/*effectEvent = QString()*/,
+        bool /*hideEffect = false*/,
+        bool /*sendCallback = true*/,
+        bool /*itemIsValid = true*/) {return false;}
+
+    static bool add(const QString &/*itemType*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;}
+    static bool add(const QStringList &/*itemType*/, const QStringList &/*filePath*/, const QStringList &/*effectEvent = QStringList()*/) {return false;}
+
+    static bool add(QGraphicsItem */*item*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;}
+    static bool add(QGraphicsItem */*item*/, const QStringList &/*filePath*/, const QStringList &/*effectEvent = QStringList()*/) {return false;}
+    
+    static bool remove(const QString &/*itemType*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;}
+    static bool remove(QGraphicsItem */*item*/, const QString &/*filePath*/, const QString &/*effectEvent = QString()*/) {return false;}
+    static bool remove(QGraphicsItem */*item*/) {return false;}
+
+    static void enable(QGraphicsItem */*item*/) {}
+    static void disable(QGraphicsItem */*item*/) {}
+    
+private:
+    
+};
+
+#endif
+
--- a/videocollection/tsrc/stubs/inc/hbinputdialog.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbinputdialog.h	Thu Apr 01 23:32:44 2010 +0300
@@ -31,14 +31,9 @@
     ~HbInputDialog() {}
 
     static QString getText(const QString &label,const QString &text = QString(),
-            bool *ok = 0, QGraphicsScene *scene = 0, QGraphicsItem *parent = 0)
-    {
-        Q_UNUSED(label);
-        Q_UNUSED(ok);
-        Q_UNUSED(scene);
-        Q_UNUSED(parent);
-        return text;
-    }
+            bool *ok = 0, QGraphicsScene *scene = 0, QGraphicsItem *parent = 0);
+    
+    static bool mGetTextFails;
 };
 
 #endif //HBINPUT_DIALOG_H
--- a/videocollection/tsrc/stubs/inc/hblistview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hblistview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,10 +15,15 @@
 *
 */
 
-
 #ifndef HBLISTVIEW_H
 #define HBLISTVIEW_H
 
+#include "hbwidget.h"
+#include "hblistviewitem.h"
+#include "hbscrollbar.h"
+#include "hbabstractitemview.h"
+#include "videosortfilterproxymodel.h"
+
 #include <QGraphicsItem>
 #include <QModelIndex>
 #include <qgraphicswidget.h>
@@ -26,11 +31,6 @@
 #include <QPointF>
 #include <qitemselectionmodel.h>
 
-#include "videosortfilterproxymodel.h"
-#include "hblistviewitem.h"
-#include "hbscrollbar.h"
-#include "hbabstractitemview.h"
-
 class HbScrollArea
 {
 public:
@@ -49,7 +49,7 @@
 class HbListView : public HbAbstractItemView
 {
     Q_OBJECT
-   
+    
 public:
 
 signals:
@@ -63,13 +63,18 @@
      * dummy signal
      */
     void scrollingEnded();
+    
+    /**
+     * dummy signal
+     */
+    void scrollingStarted();
         
 public:  
     /**
      * contructor
      */
     HbListView(QGraphicsItem *parent = 0) :
-            mItem(0)
+            mItem(0), mVerticalSB(0), mSelectionModel(0)
     {
         Q_UNUSED(parent);
         mItem = new HbListViewItem();
@@ -161,7 +166,7 @@
     {
         mLatestUniformItemSizes = value;
     }
-
+    
     /**
      * dummy method
      */
@@ -220,7 +225,7 @@
      */
     void clearSelection()
     {
-        // nop
+        mAllSelectedStatus = 0;
     }
     
     /**
@@ -238,7 +243,7 @@
      */
     void selectAll()
     {
-        // nop
+        mAllSelectedStatus = 1;
     }
     
     /**
@@ -252,6 +257,15 @@
         }
         return mSelectionModel;
     }
+
+    /**
+     * dummy method
+     */
+    HbAbstractViewItem* itemAtPosition(const QPointF &position)
+    {
+        return mItem;
+    }
+public:
     
     /**
      * items to be returned from visibleItems
@@ -263,14 +277,20 @@
      */
     static HbAbstractItemView::SelectionMode mSelectionMode;
     
-    
     /**
      * provided model
      */
     static VideoSortFilterProxyModel *mLatestModel;
     
     /**
-     * item to returned from listItemPrototype
+     * -1 == initialized
+     *  0 == nothing selected
+     *  1 == all selected
+     */
+    static int mAllSelectedStatus;
+    
+    /**
+     * item to returned from listItemPrototype and from itemAtPosition
      */
     HbListViewItem *mItem;
     
@@ -283,7 +303,7 @@
      * selection model
      */
     QItemSelectionModel *mSelectionModel;
-    
+
     /**
      * if true verticalScrollBar return null
      */
--- a/videocollection/tsrc/stubs/inc/hblistviewitem.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hblistviewitem.h	Thu Apr 01 23:32:44 2010 +0300
@@ -72,7 +72,8 @@
     enum GraphicsSize
     {
         InvalidSize,
-        Thumbnail
+        Thumbnail,
+        WideThumbnail,
     };
     
    
--- a/videocollection/tsrc/stubs/inc/hbmainwindow.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbmainwindow.h	Thu Apr 01 23:32:44 2010 +0300
@@ -98,6 +98,12 @@
         Q_UNUSED(animate);
         mOrientation = Qt::Vertical;
     }
+
+signals:
+
+    void orientationChanged(Qt::Orientation orientation);
+    
+public:
     
     /**
      * value to return from softKeyAction
--- a/videocollection/tsrc/stubs/inc/hbmenu.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbmenu.h	Thu Apr 01 23:32:44 2010 +0300
@@ -25,6 +25,31 @@
 class QPointF;
 class HbAction;
 
+class HbPopup
+{
+public:
+    enum Placement
+    {
+        TopLeftCorner,
+        TopRightCorner,
+        BottomLeftCorner,
+        BottomRightCorner,
+        TopEdgeCenter,
+        RightEdgeCenter,
+        BottomEdgeCenter,
+        LeftEdgeCenter,
+        Center
+    };
+
+    enum DismissPolicy
+    {
+        NoDismiss   = 0,
+        TapInside   = 1,
+        TapOutside  = 2,
+        TapAnywhere = TapInside | TapOutside
+    };
+};
+
 class HbMenu: public HbWidget
 {
     Q_OBJECT
@@ -57,6 +82,13 @@
     /** stubbed from HbMenu */
     QList<HbAction*> actions();
     
+    /** stubbed from HbMenu */
+    void setPreferredPos(const QPointF& position,
+        HbPopup::Placement placement = HbPopup::TopLeftCorner);
+    
+    /** stubbed from HbMenu */
+    void setDismissPolicy(HbPopup::DismissPolicy dismissPolicy);
+    
 public:
     /** dummy actions */
     QMap<QString, HbAction*> mActions;
--- a/videocollection/tsrc/stubs/inc/hbnamespace.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbnamespace.h	Thu Apr 01 23:32:44 2010 +0300
@@ -106,7 +106,8 @@
         SeparatorItem,
         UserItem = 1000
     };
-    
+
+*/ 
     enum GraphicsItemType
     {
         ItemType_NotificationDialog = QGraphicsItem::UserType+10000,
@@ -205,6 +206,7 @@
         ItemType_IndexFeedback,
         ItemType_Last = QGraphicsItem::UserType + 20000
     };
+    /*
 
     enum WidgetAttribute
     {
--- a/videocollection/tsrc/stubs/inc/hbstackedwidget.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbstackedwidget.h	Thu Apr 01 23:32:44 2010 +0300
@@ -19,6 +19,7 @@
 #define HBSTACKEDWIDGET
 
 #include <QGraphicsWidget>
+#include <qpointer.h>
 #include "hbwidget.h"
 
 class HbStackedWidget : public HbWidget
@@ -55,7 +56,7 @@
      */
     static int initializeCount;
     
-    QObject *mCurrentWidget;
+    QPointer<QObject> mCurrentWidget;
 
 };
 
--- a/videocollection/tsrc/stubs/inc/hbstyleloader.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbstyleloader.h	Thu Apr 01 23:32:44 2010 +0300
@@ -43,7 +43,7 @@
    static bool registerFilePath(const QString &filePath) 
    { 
        Q_UNUSED(filePath);
-       return true; 
+       return mRegisterFilePathReturnValue; 
    }
    
    static bool unregisterFilePath(const QString &filePath) 
@@ -57,6 +57,11 @@
      */
     static int initializeCount;
     
+    /**
+     * returned from registerFilePath
+     */
+    static bool mRegisterFilePathReturnValue;
+    
 signals:
             
 };
--- a/videocollection/tsrc/stubs/inc/hbview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/hbview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -22,6 +22,7 @@
 #include <QGraphicsWidget>
 #include "hbinstance.h"
 #include "hbtoolbar.h"
+#include "hbeffect.h"
 
 class HbView : public QGraphicsWidget
 {
@@ -30,7 +31,7 @@
 
 public:
 
-    HbView(QGraphicsItem *parent = 0) : QGraphicsWidget(parent), mToolBar(0)
+    HbView(QGraphicsItem *parent = 0) : QGraphicsWidget(parent), mToolBar(0), mNavigationAction(0)
     {
         Q_UNUSED(parent);
     }
@@ -63,9 +64,12 @@
     
     void setNavigationAction(HbAction *action)
     {
-        Q_UNUSED(action);
+        mNavigationAction = action;
     }
     
+    
+    HbAction *mNavigationAction;
+    
     mutable HbToolBar* mToolBar;
 };
 
--- a/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/videocollectionviewutilsdata.h	Thu Apr 01 23:32:44 2010 +0300
@@ -19,6 +19,7 @@
 #define VIDEOCOLLECTIONVIEWUTILSDATA_H
 
 #include <qnamespace.h>
+#include <qvariant.h>
 
 class VideoCollectionViewUtilsData
 {
@@ -32,6 +33,7 @@
         mSortOrder = Qt::AscendingOrder;
         mIconString = "";
         mPressedString = "";
+        mLastStatusAdditional = QVariant();
     }   
     
 public: // data
@@ -42,6 +44,7 @@
     static Qt::SortOrder mSortOrder;
     static QString mIconString;
     static QString mPressedString;
+    static QVariant mLastStatusAdditional;
 };
 
 #endif /* VIDEOCOLLECTIONVIEWUTILSDATA_H */
--- a/videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/videolistselectiondialogdata.h	Thu Apr 01 23:32:44 2010 +0300
@@ -18,6 +18,8 @@
 #ifndef VIDEOLISTSELECTIONDIALOGDATA_H
 #define VIDEOLISTSELECTIONDIALOGDATA_H
 
+#include <mpxitemid.h>
+
 class VideoListSelectionDialogData
 {
 public: // methods
@@ -27,6 +29,8 @@
         mSelectionCount = 0;
         mMultiSelectionLaunchCount = 0;
         mMultiSelectionItemSelectionCount = 0;
+        mSelectionType = -1;
+        mSettedMpxId = TMPXItemId::InvalidId();
     }
     
 public: // data
@@ -34,6 +38,8 @@
     static int mSelectionCount;
     static int mMultiSelectionLaunchCount;
     static int mMultiSelectionItemSelectionCount;
+    static int mSelectionType;
+    static TMPXItemId mSettedMpxId;
 };
 
 #endif /* VIDEOLISTSELECTIONDIALOGDATA_H */
--- a/videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/inc/videosortfilterproxymodeldata.h	Thu Apr 01 23:32:44 2010 +0300
@@ -30,10 +30,18 @@
         mSortOrder = Qt::AscendingOrder;
         mSortAsync = false;
         mDeleteItemsFails = true;
+        mRemoveAlbumsFails = true;
         mDoSortingCallCount = 0;
         mItemIds.clear();
         mLastIndex = QModelIndex();
+        mLastItemId = TMPXItemId::InvalidId();
+        mOpenedItemId = TMPXItemId::InvalidId();
         mDetailsReturnValue = 0;
+        mAddItemsInAlbumReturnValue = 0;
+        mRemoveItemsFromAlbumReturnValue = 0;
+        mGenericFilterId = TMPXItemId::InvalidId();
+        mGenericFilterValue = false;
+        mNewAlbumId = TMPXItemId::InvalidId(); 
     }
     
 public: // data
@@ -42,11 +50,18 @@
     static Qt::SortOrder mSortOrder;
     static bool mSortAsync;
     static bool mDeleteItemsFails;
+    static bool mRemoveAlbumsFails;
     static int mDoSortingCallCount;
     static QList<TMPXItemId> mItemIds;
     static QModelIndex mLastIndex;
     static TMPXItemId mLastItemId;
+    static TMPXItemId mOpenedItemId;
     static int mDetailsReturnValue;
+    static int mAddItemsInAlbumReturnValue;
+    static int mRemoveItemsFromAlbumReturnValue; 
+    static TMPXItemId mGenericFilterId;
+    static bool mGenericFilterValue; 
+    static TMPXItemId mNewAlbumId;
 };
 
 #endif /* VIDEOSORTFILTERPROXYMODEL_H */
--- a/videocollection/tsrc/stubs/src/centralrepository.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  stub central repository -class for testing CVideoCollectionClient
-* 
-*/
-
-
-#include "centralrepository.h"
-
-const int KVideoCollectionViewCenrepSortingRoleKey(0x5);
-const int KVideoCollectionViewCenrepSortingOrderKey(0x6);
-
-/**
- * if true, Newl will leave
- */
-bool gCRNewLLeave = false;
-
-/**
- * if zero, Set will fail. Every Set call decreases this value by one.
- */
-int gCRSetFail = 255;
-
-/**
- * if zero, Get will fail. Every Get call decreases this value by one.
- */
-int gCRGetFail = 255;
-
-/**
- * role value will be saved here in correct cases
- */
-int gSettedRoleValue = -1;
-
-/**
- * order value will be saved here in correct cases
- */
-int gSettedOrderValue = -1;
-
-/**
- * order value will be saved here in correct cases
- */
-TBuf<255> gSettedTDesValue = TBuf<255>();
-
-// -----------------------------------------------------------------------------
-// setNewLLeave
-// -----------------------------------------------------------------------------
-//
-void CRepository::setNewLLeave(bool leave)
-{
-    gCRNewLLeave = leave;
-}
-
-// -----------------------------------------------------------------------------
-// setSetFail
-// -----------------------------------------------------------------------------
-//
-void CRepository::setSetFail(int amount)
-{
-    gCRSetFail = amount;
-}
-    
-// -----------------------------------------------------------------------------
-// setGetFail
-// -----------------------------------------------------------------------------
-//
-void CRepository::setGetFail(int amount)
-{
-    gCRGetFail = amount;
-}
-
-// -----------------------------------------------------------------------------
-// getRoleValue
-// -----------------------------------------------------------------------------
-//
-int CRepository::getRoleValue()
-{
-    return gSettedRoleValue;
-}
-
-// -----------------------------------------------------------------------------
-// getOrderValue
-// -----------------------------------------------------------------------------
-//
-int CRepository::getOrderValue()
-{
-    return gSettedOrderValue;
-}
-
-// -----------------------------------------------------------------------------
-// getTDesValue
-// -----------------------------------------------------------------------------
-//
-TDesC& CRepository::getTDesValue()
-{
-    return gSettedTDesValue;
-}
-
-// -----------------------------------------------------------------------------
-// setRoleValue
-// -----------------------------------------------------------------------------
-//
-void CRepository::setRoleValue(int value)
-{
-    gSettedRoleValue = value;
-}
-
-// -----------------------------------------------------------------------------
-// setOrderValue
-// -----------------------------------------------------------------------------
-//
-void CRepository::setOrderValue(int value)
-{
-    gSettedOrderValue = value;
-}
-
-// -----------------------------------------------------------------------------
-// setOrderValue
-// -----------------------------------------------------------------------------
-//
-void CRepository::setTDesValue(const TDesC& value)
-{
-    gSettedTDesValue = value;
-}
-
-// -----------------------------------------------------------------------------
-// NewL
-// -----------------------------------------------------------------------------
-//
-CRepository* CRepository::NewL(TUid /*aRepositoryUid*/)
-{
-    if(gCRNewLLeave)
-    {
-        User::Leave(KErrGeneral);  
-    }
-    return new CRepository();
-}
-
-// -----------------------------------------------------------------------------
-// CRepository
-// -----------------------------------------------------------------------------
-//
-CRepository::CRepository()
-{
-    
-}
-
-// -----------------------------------------------------------------------------
-// ~CRepository
-// -----------------------------------------------------------------------------
-//
-CRepository::~CRepository()
-{
-    
-}
-
-// -----------------------------------------------------------------------------
-// Get
-// -----------------------------------------------------------------------------
-//
-TInt CRepository::Get(TUint32 aKey, TInt& aValue)
-{
-    if(gCRGetFail == 0)
-    {
-        return KErrGeneral;
-    } else {
-        gCRGetFail--;
-    }
-    
-    if(aKey == KVideoCollectionViewCenrepSortingRoleKey) {
-        aValue = gSettedRoleValue;
-    } else {
-        aValue = gSettedOrderValue;
-    }
-    
-    return KErrNone;
-}
-
-// -----------------------------------------------------------------------------
-// Set
-// -----------------------------------------------------------------------------
-//
-TInt CRepository::Set(TUint32 aKey, TInt aValue)
-{
-    if(gCRSetFail == 0)
-    {
-        return KErrGeneral;
-    } else {
-        gCRSetFail--;
-    }
-    
-    if(aKey == KVideoCollectionViewCenrepSortingRoleKey) {
-        gSettedRoleValue = aValue;
-    } else {
-        gSettedOrderValue = aValue;
-    }
-    return KErrNone;
-}
-
-// -----------------------------------------------------------------------------
-// Get
-// -----------------------------------------------------------------------------
-//
-TInt CRepository::Get(TUint32 /*aKey*/, TDes& aValue)
-{
-    if(gCRGetFail == 0)
-    {
-        return KErrGeneral;
-    } else {
-        gCRGetFail--;
-    }
-    
-    aValue = gSettedTDesValue;
-    
-    return KErrNone;
-}
--- a/videocollection/tsrc/stubs/src/hbdialog.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hbdialog.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -51,6 +51,26 @@
     currentInstance = 0;
     mActions.clear();
 }
+
+void HbDialog::open( QObject* receiver, const char* member)
+{
+    if(receiver && member)
+    {
+        connect(this, SIGNAL(finished(HbAction*)), receiver, SLOT(member));
+    }
+    if(execReturnPrimary)
+    {
+        emit finished(mPrimaryAction);
+    }
+    else
+    {
+        emit finished(mSecondaryAction);
+    }
+    if(receiver && member)
+    {
+        disconnect(this, SIGNAL(finished(HbAction*)), receiver, SLOT(member));
+    }  
+}
     
 void HbDialog::setDismissPolicy(HbDialog::DismissPolicy dismissPolicy)
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/tsrc/stubs/src/hbdocumentloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,284 @@
+/*
+* 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:
+*
+*/
+
+#include "hbdocumentloader.h"
+#include "hbmainwindow.h"
+#include "hbmenu.h"
+#include "hbview.h"
+#include "hbstackedwidget.h"
+#include "hblabel.h"
+#include "hbwidget.h"
+#include "hbcheckbox.h"
+#include "hbpushbutton.h"
+#include "hblabel.h"
+#include "videocollectionuiloader.h"
+
+bool HbDocumentLoader::mFindWidgetFails = false;
+bool HbDocumentLoader::mFindObjectFails = false;
+bool HbDocumentLoader::mCreateObjectFails = false;
+
+HbDocumentLoader::HbDocumentLoader() : mCreatingObject(false)
+{
+
+}
+
+HbDocumentLoader::HbDocumentLoader(const HbMainWindow *window) : mCreatingObject(false)
+{
+    Q_UNUSED(window);
+    // Not stubbed.
+}
+
+HbDocumentLoader::~HbDocumentLoader()
+{
+    reset();
+}
+
+QObjectList HbDocumentLoader::load( const QString &fileName, const QString &section , bool *ok)
+{
+    Q_UNUSED(fileName);
+    Q_UNUSED(section);
+
+    *ok = true;
+    
+    QObjectList objs;
+    return objs;
+}
+
+QObjectList HbDocumentLoader::load( const QString &fileName, bool *ok)
+{
+    Q_UNUSED(fileName);
+    Q_UNUSED(ok);
+
+    *ok = true;
+    
+    QObjectList objs;
+    return objs;
+}
+    
+QGraphicsWidget *HbDocumentLoader::findWidget(const QString &name)
+{   
+    if(mFindWidgetFails)
+    {
+        return 0;
+    }
+    
+    QObject *obj = 0;
+    
+    for(int i = 0; i < mObjects.count(); i++)
+    {
+        if(mObjects[i]->mName == name)
+        {
+            obj = mObjects[i]->mObject;
+            break;
+        }
+    }
+    
+    if(!obj && !mCreatingObject)
+    {
+        mCreatingObject = true;
+        obj = createObject(QString(), name);
+        mCreatingObject = false;
+    }
+    
+    if(obj)
+    {
+        return qobject_cast<QGraphicsWidget *>(obj);
+    }
+    
+    return 0;
+}
+
+QObject *HbDocumentLoader::findObject(const QString &name)
+{
+    if(mFindObjectFails)
+    {
+        return 0;
+    }
+    
+    QObject *obj = 0;
+    for(int i = 0; i < mObjects.count(); i++)
+    {
+        if(mObjects[i]->mName == name)
+        {
+            obj = mObjects[i]->mObject;
+            break;
+        }
+    }
+
+    if(!obj && !mCreatingObject)
+    {
+        mCreatingObject = true;
+        obj = createObject(QString(), name);
+        mObjects.append(new ObjectData(obj, name));
+        mCreatingObject = false;
+    }    
+    
+    return obj;
+}
+
+void HbDocumentLoader::reset()
+{
+    while(!mObjects.isEmpty())
+    {
+        ObjectData *o = mObjects.takeFirst();
+        delete o;
+    }
+    mObjects.clear();
+}
+
+QObject *HbDocumentLoader::createObject(const QString& type, const QString &name)
+{
+    Q_UNUSED(type);
+    
+    QObject *obj = 0;
+    
+    if(mCreateObjectFails) 
+    {
+        return 0;
+    }
+    
+    if(name == DOCML_NAME_OPTIONS_MENU ||
+       name == DOCML_NAME_SORT_MENU)
+    {
+        obj = new HbMenu();
+        mObjects.append(new ObjectData(obj, name));
+    }
+
+    if(obj)
+    {
+        return obj;
+    }
+    
+    obj = doCreateObject(name);
+    return obj;
+}
+
+QObject *HbDocumentLoader::doCreateObject(const QString &name)
+{
+    QObject *obj = 0;
+    if(name == DOCML_NAME_VIEW)
+    {
+        
+    } 
+    else if(name == DOCML_NAME_VC_HEADINGBANNER)
+    {
+        
+    }
+    else if(name == DOCML_NAME_VC_COLLECTIONWIDGET)
+    {
+        
+    }
+    else if(name == DOCML_NAME_VC_COLLECTIONCONTENTWIDGET)
+    {
+        
+    }
+    else if(name == DOCML_NAME_VC_VIDEOLISTWIDGET)
+    {
+        
+    }
+    else if(name == DOCML_NAME_VC_VIDEOHINTWIDGET)
+    {
+        
+    }
+    else if(name == DOCML_NAME_OPTIONS_MENU)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_MENU)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_BY_DATE)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_BY_NAME)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_BY_RATING)
+    {
+        
+    }
+    else if(name == DOCML_NAME_SORT_BY_SIZE)
+    {
+        
+    }
+    else if(name == DOCML_NAME_ADD_TO_COLLECTION)
+    {
+        
+    }
+    else if(name == DOCML_NAME_CREATE_COLLECTION)
+    {
+        
+    }
+    else if(name == DOCML_NAME_DELETE_MULTIPLE)
+    {
+        
+    }
+    else if(name == DOCML_NAME_HINT_BUTTON)
+    {
+        obj = new HbPushButton();
+    }
+    else if(name == DOCML_NAME_HINT_LABEL)
+    {
+        obj = new HbLabel();
+    }
+    else if(name == DOCML_NAME_NO_VIDEOS_LABEL)
+    {
+        obj = new HbLabel();
+    }
+    else if(name == DOCML_VIDEOSELECTIONDIALOG_FILE)
+    {
+        
+    }
+    else if(name == DOCML_NAME_DIALOG)
+    {
+        
+    }
+    else if(name == DOCML_NAME_DLG_HEADINGLBL)
+    {
+        obj = new HbLabel();
+    }
+    else if(name == DOCML_NAME_CHECK_CONTAINER)
+    {
+        obj = new HbWidget();
+    }
+    else if(name == DOCML_NAME_MARKALL)
+    {
+        obj = new HbCheckBox();
+    }
+    else if(name == DOCML_NAME_LBL_SELECTION)
+    {
+        obj = new HbLabel();
+    }
+    else if(name == DOCML_NAME_LIST_CONTAINER)
+    {
+        obj = new HbStackedWidget();
+    }
+    
+    if(obj)
+    {   
+        mObjects.append(new ObjectData(obj, name));
+    }
+    return obj;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/tsrc/stubs/src/hbinputdialog.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: stub hbinputdialog
+* 
+*/
+
+#include "hbinputdialog.h"
+
+bool HbInputDialog::mGetTextFails = false;
+
+
+QString HbInputDialog::getText(const QString &label,const QString &text,
+           bool *ok, QGraphicsScene *scene, QGraphicsItem *parent)
+{
+   Q_UNUSED(label);
+   Q_UNUSED(scene);
+   Q_UNUSED(parent);
+   QString textReturn = text;
+   if(mGetTextFails)
+   {
+       *ok = false;
+       textReturn = "";
+   }
+   else
+   {
+       *ok = true;            
+   }
+   return textReturn;
+}
+
--- a/videocollection/tsrc/stubs/src/hblistview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hblistview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -32,7 +32,4 @@
 bool HbListView::mLatestVisibility = false;
 bool HbListView::mLatestEnableValue = false;
 QModelIndex HbListView::mCurrentIndex = QModelIndex();
-
-
-
-
+int HbListView::mAllSelectedStatus = -1;
--- a/videocollection/tsrc/stubs/src/hbmainwindow.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hbmainwindow.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -48,7 +48,11 @@
     return mViews;
 }
 
-HbView *currentView() const
+HbView* HbMainWindow::currentView() const
 {
+    if(mViews.count())
+    {
+        return mViews.at(0);
+    }
     return 0;
 }
--- a/videocollection/tsrc/stubs/src/hbmenu.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hbmenu.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -103,4 +103,17 @@
     return mActions.values();
 }
 
+void HbMenu::setPreferredPos(const QPointF &position,
+    HbPopup::Placement placement)
+{
+    Q_UNUSED(placement);
+
+    HbMenuData::mExecPoint = position;
+}
+
+void HbMenu::setDismissPolicy(HbPopup::DismissPolicy dismissPolicy)
+{
+    Q_UNUSED(dismissPolicy);
+}
+
 // end of file
--- a/videocollection/tsrc/stubs/src/hbstackedwidget.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hbstackedwidget.h	Thu Apr 01 23:32:44 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef HBSTACKEDWIDGET
 #define HBSTACKEDWIDGET
 
+#include <qpointer.h>
 #include <QGraphicsWidget>
 #include "hbwidget.h"
 
@@ -55,8 +56,7 @@
      */
     static int initializeCount;
     
-    QObject *mCurrentWidget;
-
+    QPointer<QObject> mCurrentWidget;
 };
 
 #endif
--- a/videocollection/tsrc/stubs/src/hbstyleloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/hbstyleloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -18,5 +18,6 @@
 #include "hbstyleloader.h"
 
 int HbStyleLoader::initializeCount = 0;
+bool HbStyleLoader::mRegisterFilePathReturnValue = true;
 
 
--- a/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videocollectionuiloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,9 +15,11 @@
 *
 */
 
+#include <qdebug.h>
 #include <qset.h>
 #include <qstring.h>
 #include <hblistview.h>
+#include <hbmenu.h>
 
 #include "videocollectionuiloader.h"
 #include "videolistview.h"
@@ -64,14 +66,28 @@
 QGraphicsWidget* VideoCollectionUiLoader::doFindWidget(const QString &name)
 {
     QGraphicsWidget *widget = 0;
-    widget = HbDocumentLoader::findWidget(name);
+    if(VideoCollectionUiLoaderData::mFindFailure)
+    {
+        return 0; 
+    }
+    if(!VideoCollectionUiLoaderData::mFindFailureNameList.contains(name))
+    {
+        widget = HbDocumentLoader::findWidget(name);
+    }
     return widget;
 }
 
 QObject* VideoCollectionUiLoader::doFindObject(const QString &name)
 {
     QObject *object = 0;
-    object = HbDocumentLoader::findObject(name);
+    if(VideoCollectionUiLoaderData::mFindFailure)
+    {
+        return 0; 
+    }
+    if(!VideoCollectionUiLoaderData::mFindFailureNameList.contains(name))
+    {
+        object = HbDocumentLoader::findObject(name);
+    }
     return object;
 }
 
@@ -109,27 +125,28 @@
     QObject* object = doFindObject(name);
     if (!object)
     {
-        if (type == VideoListView::staticMetaObject.className())
+        if (name == DOCML_NAME_VIEW)
         {
             object = new VideoListView(this);
         }
-        else if (type == VideoListWidget::staticMetaObject.className())
+        else if (name == DOCML_NAME_VC_COLLECTIONWIDGET ||
+                 name == DOCML_NAME_VC_COLLECTIONCONTENTWIDGET ||
+                 name == DOCML_NAME_VC_VIDEOLISTWIDGET)
         {
             object = new VideoListWidget(this);
         }
-        else if ( type == VideoListSelectionDialog::staticMetaObject.className() )
+        else if (name == DOCML_NAME_DIALOG)
         {
             if(!VideoCollectionUiLoaderData::mFailDialogLoad)
             {
                 object = new VideoListSelectionDialog(this);
-                
             }
             else
             {
                 return 0;
             }
         }
-        else if (type == VideoHintWidget::staticMetaObject.className())
+        else if (name == DOCML_NAME_VC_VIDEOHINTWIDGET)
         {
             object = new VideoHintWidget(this);
         }
@@ -137,25 +154,9 @@
         {
             object->setObjectName(name);
 
-            if (VideoCollectionUiLoaderData::mFindFailure)
-            {
-                if (!VideoCollectionUiLoaderData::mFindFailureNameList.empty())
-                {
-                    if (VideoCollectionUiLoaderData::mFindFailureNameList.contains(name))
-                    {
-                        delete object;
-                        object = 0;
-                    }
-                }
-                else
-                {
-                    delete object;
-                    object = 0;
-                }
-            }
+
             return object;
         }
-
         object = HbDocumentLoader::createObject(type, name);
     }
     
--- a/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videocollectionviewutils.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -25,6 +25,7 @@
 Qt::SortOrder VideoCollectionViewUtilsData::mSortOrder = Qt::AscendingOrder;
 QString VideoCollectionViewUtilsData::mIconString = "";
 QString VideoCollectionViewUtilsData::mPressedString = "";
+QVariant VideoCollectionViewUtilsData::mLastStatusAdditional = QVariant();
 
 VideoCollectionViewUtils& VideoCollectionViewUtils::instance()
 {
@@ -100,6 +101,6 @@
 
 void VideoCollectionViewUtils::showStatusMsgSlot(int statusCode, QVariant &additional)
 {
-    Q_UNUSED(additional);
+    VideoCollectionViewUtilsData::mLastStatusAdditional = additional;
     VideoCollectionViewUtilsData::mLastError = statusCode;
 }
--- a/videocollection/tsrc/stubs/src/videolistdatamodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistdatamodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -46,15 +46,19 @@
     {
         int newCount = VideoListDataModelData::mRowCount;
         int oldCount = VideoListDataModelData::mData.count();
+        if(newCount == oldCount)
+        {
+            return 0;
+        }
         if (newCount < oldCount)
         {
-            beginInsertRows(QModelIndex(), oldCount, newCount - 1);
-            endInsertRows();
+            beginRemoveRows(QModelIndex(), newCount, oldCount);
+            endRemoveRows();
         }
         else
         {
-            beginRemoveRows(QModelIndex(), newCount, oldCount);
-            endRemoveRows();
+            beginInsertRows(QModelIndex(), oldCount, newCount-1);
+            endInsertRows();
         }
     }
     else
--- a/videocollection/tsrc/stubs/src/videolistselectiondialog.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistselectiondialog.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -26,6 +26,8 @@
 int VideoListSelectionDialogData::mSelectionCount = 0;
 int VideoListSelectionDialogData::mMultiSelectionLaunchCount = 0;    
 int VideoListSelectionDialogData::mMultiSelectionItemSelectionCount = 0;
+int VideoListSelectionDialogData::mSelectionType = -1;
+TMPXItemId VideoListSelectionDialogData::mSettedMpxId = TMPXItemId::InvalidId();
 
 VideoListSelectionDialog::VideoListSelectionDialog(
     VideoCollectionUiLoader *uiLoader,
@@ -66,9 +68,8 @@
 
 void VideoListSelectionDialog::setupContent(int type, TMPXItemId activeItem)
 {
-    Q_UNUSED(type);
-    Q_UNUSED(activeItem);
-    // not stubbed
+    VideoListSelectionDialogData::mSelectionType = type;
+    VideoListSelectionDialogData::mSettedMpxId = activeItem;
 }
 
 bool VideoListSelectionDialog::initDialog()
@@ -77,7 +78,7 @@
     return false;
 }
 
-HbAction* VideoListSelectionDialog::exec()
+void VideoListSelectionDialog::exec()
 {
     // fill selection
     VideoListSelectionDialogData::mMultiSelectionLaunchCount++;
@@ -96,18 +97,11 @@
     }
     VideoListSelectionDialogData::mMultiSelectionItemSelectionCount = mSelection.indexes().count();
     
-    // return wanted action
-    HbAction *action = 0;
-    if (VideoListSelectionDialogData::mExecReturnPrimary)
-    {
-        action = primaryAction();
-    }
-    else
-    {
-        action = secondaryAction();
-    }
-    
-    return action;
+}
+
+void VideoListSelectionDialog::finishedSlot(HbAction *action)
+{
+    Q_UNUSED(action);
 }
 
 void VideoListSelectionDialog::markAllStateChangedSlot(int state)
--- a/videocollection/tsrc/stubs/src/videolistview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -43,8 +43,6 @@
 
 VideoListView::~VideoListView()
 {
-    VideoListViewData::reset();
-    
     // disconnect signals
     disconnect();
 }
@@ -204,6 +202,11 @@
     // not stubbed
 }
 
+void VideoListView::removeVideosFromCollectionSlot()
+{
+    // not stubbed
+}
+
 void VideoListView::aboutToShowMainMenuSlot()
 {
     // not stubbed
@@ -226,11 +229,6 @@
     // not stubbed
 }
 
-void VideoListView::openSortByMenuSlot()
-{
-    // not stubbed
-}
-
 void VideoListView::widgetReadySlot(QGraphicsWidget *widget, const QString &name)
 {
     Q_UNUSED(widget);
@@ -245,6 +243,27 @@
     // not stubbed
 }
 
+
+void VideoListView::finishCollectionOpenedSlot(const HbEffect::EffectStatus &status)
+{
+    Q_UNUSED(status);
+}
+
+void VideoListView::finishCollectionClosedSlot(const HbEffect::EffectStatus &status)
+{
+    Q_UNUSED(status);
+}
+
+void VideoListView::doSorting(int value)
+{
+    Q_UNUSED(value);
+}
+
+void VideoListView::doDelayedsSlot()
+{
+    // not stubbed    
+}
+
 void VideoListView::debugNotImplementedYet()
 {
     // not stubbed
--- a/videocollection/tsrc/stubs/src/videolistwidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videolistwidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -32,9 +32,11 @@
     mVideoServices(0),
     mCurrentLevel(VideoCollectionCommon::ELevelInvalid),
     mSignalsConnected(false),
-    mDetailsReady(false),
     mIsService(false),
+    mNavKeyBackAction(0),
+    mNavKeyQuitAction(0),
     mContextMenu(0),
+    mSelectionMode(HbAbstractItemView::NoSelection),
     mScrollPositionTimer(0),
     mUiLoader(uiLoader)
 {
@@ -88,11 +90,6 @@
     // not stubbed
 }
 
-void VideoListWidget::shareItemSlot()
-{
-    // not stubbed
-}
-
 void VideoListWidget::deleteItemSlot()
 {
     // not stubbed
@@ -125,6 +122,12 @@
     // not stubbed
 }
 
+void VideoListWidget::setSelectionMode(int mode)
+{
+    Q_UNUSED(mode);
+    // not stubbed
+}
+
 void VideoListWidget::longPressGesture (const QPointF &point)
 {
     Q_UNUSED(point);
@@ -136,6 +139,11 @@
     // not stubbed
 }
 
+void VideoListWidget::doDelayedsSlot()
+{
+    // not stubbed    
+}
+
 void VideoListWidget::openDetailsSlot()
 {   
     // not stubbed
@@ -156,6 +164,11 @@
     // not stubbed
 }
 
+void VideoListWidget::removeFromCollectionSlot()
+{
+    // not stubbed
+}
+
 void VideoListWidget::playAllSlot()
 {
     // not stubbed
--- a/videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/tsrc/stubs/src/videosortfilterproxymodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -24,13 +24,19 @@
 Qt::SortOrder VideoSortFilterProxyModelData::mSortOrder = Qt::AscendingOrder;
 bool VideoSortFilterProxyModelData::mSortAsync = false;
 bool VideoSortFilterProxyModelData::mDeleteItemsFails = false;
+bool VideoSortFilterProxyModelData::mRemoveAlbumsFails = false;
 int VideoSortFilterProxyModelData::mDoSortingCallCount = 0;
 bool VideoSortFilterProxyModelData::mOpenFails = false;
 QList<TMPXItemId> VideoSortFilterProxyModelData::mItemIds = QList<TMPXItemId>();
 QModelIndex VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
 TMPXItemId VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId();
+TMPXItemId VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId::InvalidId();
 int VideoSortFilterProxyModelData::mDetailsReturnValue = 0;
-
+int VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0;
+int VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0;
+TMPXItemId VideoSortFilterProxyModelData::mGenericFilterId  = TMPXItemId::InvalidId();
+bool VideoSortFilterProxyModelData::mGenericFilterValue = false;
+TMPXItemId VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId::InvalidId();
 
 VideoSortFilterProxyModel::VideoSortFilterProxyModel(int type, QObject *parent):
     QSortFilterProxyModel(parent),
@@ -99,7 +105,6 @@
 
 int VideoSortFilterProxyModel::deleteItems(const QModelIndexList &indexList)
 {
-    Q_UNUSED(indexList);
     
     int err = 0;
     if (VideoSortFilterProxyModelData::mDeleteItemsFails)
@@ -176,6 +181,21 @@
     return TMPXItemId::InvalidId();
 }
 
+QModelIndex VideoSortFilterProxyModel::indexOfId(TMPXItemId id)
+{
+    //VideoListDataModel *sourceModel = qobject_cast<VideoListDataModel*>(sourceModel());
+
+    for(int i = 0; i < VideoSortFilterProxyModelData::mItemIds.count(); i++)
+    {
+        if(VideoSortFilterProxyModelData::mItemIds.at(i) == id)
+        {
+            //return sourceModel->index(i, 0);
+            return index(i, 0);
+        }
+    }
+    return QModelIndex();
+}
+
 QString VideoSortFilterProxyModel::getMediaFilePathForId(TMPXItemId mediaId)
 {
     Q_UNUSED(mediaId);
@@ -186,30 +206,74 @@
 TMPXItemId VideoSortFilterProxyModel::addNewAlbum(const QString &title)
 {
     Q_UNUSED(title);
-    // not stubbed
-    return TMPXItemId::InvalidId();
+    return VideoSortFilterProxyModelData::mNewAlbumId;
 }
 
 QString VideoSortFilterProxyModel::resolveAlbumName(
     const QString& albumName) const
 {
-    Q_UNUSED(albumName);
+    QString name = albumName;
+    return name;
+}
+
+int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds)
+{
+    if(VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue >= 0)
+    {
+        VideoSortFilterProxyModelData::mLastItemId = albumId;
+        VideoSortFilterProxyModelData::mItemIds.clear();
+        VideoSortFilterProxyModelData::mItemIds = mediaIds;
+    }
     // not stubbed
-    return QString();
+    return VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue;
 }
 
-int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId albumId, const QList<TMPXItemId> &mediaIds)
+int VideoSortFilterProxyModel::removeAlbums(const QModelIndexList &indexList)
 {
-    Q_UNUSED(albumId);
-    Q_UNUSED(mediaIds);
-    // not stubbed
-    return 0;
+    
+    int err = 0;
+    if (VideoSortFilterProxyModelData::mRemoveAlbumsFails)
+    {
+        err = -1;
+    }
+    else
+    {
+        if (indexList.count() > 0)
+        {
+            VideoSortFilterProxyModelData::mLastIndex = indexList.at(0);
+        }
+    }
+    
+    return err;
 }
 
+int VideoSortFilterProxyModel::removeItemsFromAlbum(class TMPXItemId &album, QList<class TMPXItemId> const &mediaIds)
+{
+    if(VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue >= 0)
+    {
+        VideoSortFilterProxyModelData::mLastItemId = album;
+        VideoSortFilterProxyModelData::mItemIds.clear();
+        VideoSortFilterProxyModelData::mItemIds = mediaIds;
+    }
+    return VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue;
+}
+
+void VideoSortFilterProxyModel::setAlbumInUse(TMPXItemId albumId)
+{
+    VideoSortFilterProxyModelData::mLastItemId = albumId;
+}
+
+
 TMPXItemId VideoSortFilterProxyModel::getOpenItem() const
 {
-    // not stubbed
-    return TMPXItemId();
+    return VideoSortFilterProxyModelData::mOpenedItemId;
+}
+
+void VideoSortFilterProxyModel::setGenericIdFilter(TMPXItemId itemId, bool filterValue)
+{
+    VideoSortFilterProxyModelData::mGenericFilterId  = itemId;
+    VideoSortFilterProxyModelData::mGenericFilterValue = filterValue;
+    return;
 }
 
 // end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/tsrc/stubs/stubs.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,116 @@
+#
+# 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: 
+#
+    
+CONFIG += qtestlib \
+    Hb \
+    symbian_test
+
+LIBS += -lestor.dll \
+    -lfbscli.dll \
+    -lbitgdi.dll \
+    -lxqplugins.dll \
+    -lmpxviewframeworkqt.dll \
+    -lxqservice.dll \
+    -lxqserviceutil.dll
+
+HEADERS_TEMP = \
+    inc/hbabstractitemview.h \
+    inc/hbdocumentloader.h \
+    inc/hbaction.h \
+    inc/hbcheckbox.h \
+    inc/hbdeviceprofile.h \
+    inc/hbdialog.h \
+    inc/hbglobal.h \
+    inc/hbgroupbox.h \
+    inc/hbinputdialog.h \
+    inc/hbinstance.h \
+    inc/hblabel.h \
+    inc/hblistwidget.h \
+    inc/hblistview.h \
+    inc/hblistviewitem.h \
+    inc/hbmainwindow.h \
+    inc/hbmenu.h \
+    inc/hbmenudata.h \
+    inc/hbmessagebox.h \
+    inc/hbmessageboxdata.h \
+    inc/hbnamespace.h \
+    inc/hbpushbutton.h \
+    inc/hbscrollbar.h \
+    inc/hbstackedwidget.h \
+    inc/hbstyleloader.h \
+    inc/hbtoolbar.h \
+    inc/hbwidget.h \
+    inc/hbview.h \
+    inc/hbeffect.h \
+    inc/videocollectionexport.h \
+    inc/videocollectionuiloaderdata.h \
+    inc/videocollectionviewutilsdata.h \
+    inc/videocollectionwrapperdata.h \
+    inc/videolistdatamodeldata.h \
+    inc/videolistselectiondialogdata.h \
+    inc/videolistwidgetdata.h \
+    inc/videolistviewdata.h \
+    inc/videoplayerappexport.h \
+    inc/videosortfilterproxymodeldata.h \
+    inc/videothumbnailtestdata.h \
+    inc/xqserviceutil.h \
+    inc/xqserviceutilxtra.h \
+    ../../videocollectionview/inc/videocollectionuiloader.h \
+    ../../videocollectionview/inc/videocollectionviewutils.h \
+    ../../videocollectionview/inc/videohintwidget.h \
+    ../../videocollectionview/inc/videolistselectiondialog.h \
+    ../../videocollectionview/inc/videolistwidget.h \
+    ../../videocollectionview/inc/videolistview.h \
+    ../../videocollectionwrapper/inc/videolistdatamodel.h \
+    ../../videocollectionwrapper/inc/videocollectionwrapper.h \
+    ../../videocollectionwrapper/inc/videosortfilterproxymodel.h \
+    ../../videocollectionwrapper/inc/videothumbnaildata.h \
+    ../../../videoplayerapp/videoplayerengine/inc/videoservices.h \
+    ../../../videoplayerapp/videoplayerengine/inc/videoserviceurifetch.h \
+
+SOURCES_TEMP = \
+    src/hbdocumentloader.cpp \
+    src/hbaction.cpp \
+    src/hbcheckbox.cpp \
+    src/hbdialog.cpp \
+    src/hbinputdialog.cpp \
+    src/hbglobal.cpp \
+    src/hblabel.cpp \
+    src/hblistview.cpp \
+    src/hblistviewItem.cpp \
+    src/hbmainwindow.cpp \
+    src/hbmenu.cpp \
+    src/hbmessagebox.cpp \
+    src/hbscrollbar.cpp \
+    src/hbstackedwidget.cpp \
+    src/hbstyleloader.cpp \
+    src/hbwidget.cpp \
+    src/xqserviceutilxtra.cpp \
+    src/videocollectionuiloader.cpp \
+    src/videocollectionviewutils.cpp \
+    src/videohintwidget.cpp \
+    src/videolistselectiondialog.cpp \
+    src/videolistwidget.cpp \
+    src/videolistview.cpp \
+    src/videolistdatamodel.cpp \
+    src/videocollectionwrapper.cpp \
+    src/videosortfilterproxymodel.cpp \
+    src/videothumbnaildata.cpp \
+    src/videoservices.cpp \
+    src/videoserviceurifetch.cpp \
+
+HEADERS += $$find(HEADERS_TEMP, ^(?!.*$$TESTEDCLASS).*$)
+SOURCES += $$find(SOURCES_TEMP, ^(?!.*$$TESTEDCLASS).*$)
--- a/videocollection/videocollectionview/data/collectionview.docml	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/data/collectionview.docml	Thu Apr 01 23:32:44 2010 +0300
@@ -18,9 +18,6 @@
     <object name="vc:mNumberOfItems" type="HbAction">
         <string locid="txt_videos_opt_sort_by_sub_number_of_items" name="text"/>
     </object>
-    <object name="vc:mTotalLength" type="HbAction">
-        <string locid="txt_videos_opt_sort_by_sub_total_length" name="text"/>
-    </object>
     <object name="vc:mSize" type="HbAction">
         <string locid="txt_videos_opt_sort_by_sub_size" name="text"/>
     </object>
@@ -33,7 +30,6 @@
                 <ref object="vc:mDate" role="HbMenu:addAction"/>
                 <ref object="vc:mName" role="HbMenu:addAction"/>
                 <ref object="vc:mNumberOfItems" role="HbMenu:addAction"/>
-                <ref object="vc:mTotalLength" role="HbMenu:addAction"/>
                 <ref object="vc:mSize" role="HbMenu:addAction"/>
                 <string locid="txt_videos_opt_sort_by" name="title"/>
             </widget>
@@ -41,17 +37,37 @@
         <widget name="content" role="HbView:widget" type="HbWidget">
             <widget name="vc:mStackedLayout" type="HbWidget">
                 <widget name="vc:mListWidget" type="VideoListWidget">
-                    <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
+                    <sizehint height="72un" type="PREFERRED" width="53.6un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <widget name="vc:mCollectionWidget" type="VideoListWidget">
-                    <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
+                <real name="z" value="0"/>
+                <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+                    <bool name="visible" value="TRUE"/>
+                <layout type="stacked">
+                    <stackitem itemname="vc:mListWidget"/>
+                </layout>
+            </widget>
+            <widget name="vc:mBanner" type="HbGroupBox">
+                <sizehint height="4.92537un" type="PREFERRED" width="53.6un"/>
+                <bool name="collapsable" value="FALSE"/>
                     <bool name="visible" value="FALSE"/>
-                </widget>
-                <widget name="vc:mCollectionContentWidget" type="VideoListWidget">
-                    <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
-                    <bool name="visible" value="FALSE"/>
-                </widget>
+            </widget>
+            <real name="z" value="0"/>
+            <layout type="anchor">
+                <anchoritem dst="vc:mBanner" dstEdge="LEFT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="vc:mBanner" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="" srcEdge="TOP"/>
+                <anchoritem dst="vc:mBanner" dstEdge="RIGHT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="vc:mStackedLayout" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="vc:mStackedLayout" dstEdge="RIGHT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="vc:mStackedLayout" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="vc:mBanner" srcEdge="BOTTOM"/>
+                <anchoritem dst="vc:mStackedLayout" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+    </widget>
+    <section name="hintSection">
+    <widget name="view" type="VideoListView">
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <widget name="vc:mStackedLayout" type="HbWidget">
                 <widget name="vc:mHintWidget" type="VideoHintWidget">
                     <widget name="vc:mNoVideosLabel" type="HbLabel">
                         <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
@@ -96,21 +112,33 @@
                     </layout>
                 </widget>
                 <real name="z" value="0"/>
-                <sizehint height="77.31344un" type="PREFERRED" width="51.04478un"/>
-                <bool name="visible" value="TRUE"/>
+                <layout type="stacked">
+                    <stackitem itemname="vc:mListWidget"/>
+                    <stackitem itemname="vc:mHintWidget"/>
+                </layout>
+            </widget>
+        </widget>
+	</widget>
+    </section>
+    <section name="listsSection">
+    <widget name="view" type="VideoListView">
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <widget name="vc:mStackedLayout" type="HbWidget">
+                <widget name="vc:mCollectionWidget" type="VideoListWidget">
+                    <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="vc:mCollectionContentWidget" type="VideoListWidget">
+                    <sizehint height="72un" type="PREFERRED" width="53.6un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <real name="z" value="0"/>
                 <layout type="stacked">
                     <stackitem itemname="vc:mListWidget"/>
                     <stackitem itemname="vc:mCollectionWidget"/>
                     <stackitem itemname="vc:mCollectionContentWidget"/>
-                    <stackitem itemname="vc:mHintWidget"/>
                 </layout>
             </widget>
-            <widget name="vc:mBanner" type="HbGroupBox">
-                <string name="titleText" value="Group Box"/>
-                <sizehint height="4.92537un" type="PREFERRED" width="51.04478un"/>
-                <bool name="collapsable" value="FALSE"/>
-                <bool name="visible" value="FALSE"/>
-            </widget>
             <real name="z" value="0"/>
             <layout type="anchor">
                 <anchoritem dst="vc:mBanner" dstEdge="LEFT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="LEFT"/>
@@ -122,8 +150,11 @@
                 <anchoritem dst="vc:mStackedLayout" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
-    </widget>
+	</widget>
+    </section>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
+        <uistate name="hintState" sections="#common hintSection"/>
+        <uistate name="listsState" sections="#common listsSection"/>
     </metadata>
 </hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/data/effects/slide_in_to_left_and_fade_in.fxml	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,21 @@
+<layers>
+    <visual>
+
+        <param name="translation_x" type="anim">
+            <duration>.6</duration>
+            <!--style>inoutcubic</style-->
+            <keyframe at="0.0">0.0</keyframe>
+            <keyframe at="1.0">1.0</keyframe>
+            <start ref="screen.right">.3</start>
+            <end ref="screen.left">1</end>
+        </param>
+
+        <param name="opacity" type="anim">
+            <duration>.6</duration>
+            <!--style>inoutcubic</style-->
+	          <keyframe at="0.0">0.0</keyframe>
+	          <keyframe at="1.0">1.0</keyframe>
+	      </param>
+
+    </visual>
+</layers>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/data/effects/slide_out_to_left_and_fade_out.fxml	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,21 @@
+<layers>
+    <visual>
+
+        <param name="translation_x" type="anim">
+            <duration>.6</duration>
+            <!--style>inoutcubic</style-->
+            <keyframe at="0.0">0.0</keyframe>
+            <keyframe at="1.0">1.0</keyframe>
+            <start ref="screen.left">1</start>
+            <end ref="screen.right">-0.3</end>
+        </param>
+
+        <param name="opacity" type="anim">
+            <duration>.6</duration>
+            <!--style>inoutcubic</style-->
+	          <keyframe at="0.0">1.0</keyframe>
+	          <keyframe at="1.0">0.0</keyframe>
+	      </param>
+	      
+    </visual>
+</layers>
\ No newline at end of file
--- a/videocollection/videocollectionview/data/hblistviewitem.css	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-HbListViewItem::icon-1[graphicsSize="Image"]:portrait{
-	fixed-height: 12.0un;
-	fixed-width: 16.8645un;
-}
--- a/videocollection/videocollectionview/data/images/mono_video_addvideos.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
-	stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
-	xmlns="http://www.w3.org/2000/svg"
-	xmlns:xlink="http://www.w3.org/1999/xlink"
-	xmlns:ev="http://www.w3.org/2001/xml-events"
-	xml:space="preserve" version="1.1" baseProfile="Normal">
- 
-<!-- Scene 1 -->
-<g id="Scene_1">
-	<rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
-	<path
-		d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16 
-			h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2 
-			h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61 
-			h-3 v3 h-3 v-3 h-3 v5 
-			h-12 v-5 h-3 v3 h-3 v-3 
-			h-3 v32 h3 v-3 h3 v3 
-			h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2 
-			Z M28 8 h3 v4 h-3 v-4 Z M10 30 
-			h-3 v-4 h3 v4 Z M10 24 h-3 
-			v-4 h3 v4 Z M10 18 h-3 v-4 
-			h3 v4 Z M10 12 h-3 v-4 h3 
-			v4 Z"/>
-	<rect x="19.5" y="24.2" width="18.37" height="5.51"/>
-	<rect x="25.87" y="19.37" width="5.87" height="16.24"/>
-</g>
- 
-</svg>
\ No newline at end of file
--- a/videocollection/videocollectionview/data/images/mono_video_removevideos.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
-	stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
-	xmlns="http://www.w3.org/2000/svg"
-	xmlns:xlink="http://www.w3.org/1999/xlink"
-	xmlns:ev="http://www.w3.org/2001/xml-events"
-	xml:space="preserve" version="1.1" baseProfile="Normal">
- 
-<!-- Scene 1 -->
-<g id="Scene_1">
-	<rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
-	<path
-		d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16 
-			h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2 
-			h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61 
-			h-3 v3 h-3 v-3 h-3 v5 
-			h-12 v-5 h-3 v3 h-3 v-3 
-			h-3 v32 h3 v-3 h3 v3 
-			h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2 
-			Z M28 8 h3 v4 h-3 v-4 Z M10 30 
-			h-3 v-4 h3 v4 Z M10 24 h-3 
-			v-4 h3 v4 Z M10 18 h-3 v-4 
-			h3 v4 Z M10 12 h-3 v-4 h3 
-			v4 Z"/>
-	<rect x="19.5" y="24.2" width="18.37" height="5.51"/>
-</g>
- 
-</svg>
\ No newline at end of file
--- a/videocollection/videocollectionview/data/images/mono_video_sortvideos.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Mobile Designer 3.0 2.0 -->
-<svg width="40" height="40" viewBox="0 0 40 40"
-	stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
-	xmlns="http://www.w3.org/2000/svg"
-	xmlns:xlink="http://www.w3.org/1999/xlink"
-	xmlns:ev="http://www.w3.org/2001/xml-events"
-	xml:space="preserve" version="1.1" baseProfile="Normal">
- 
-<!-- Scene 1 -->
-<g id="Scene_1">
-	<rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
-	<path
-		d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16 
-			h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2 
-			h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61 
-			h-3 v3 h-3 v-3 h-3 v5 
-			h-12 v-5 h-3 v3 h-3 v-3 
-			h-3 v32 h3 v-3 h3 v3 
-			h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2 
-			Z M28 8 h3 v4 h-3 v-4 Z M10 30 
-			h-3 v-4 h3 v4 Z M10 24 h-3 
-			v-4 h3 v4 Z M10 18 h-3 v-4 
-			h3 v4 Z M10 12 h-3 v-4 h3 
-			v4 Z"/>
-	<ellipse cx="19.87" cy="19.49" rx="2.74" ry="2.62"/>
-	<ellipse cx="26.24" cy="25.37" rx="2.74" ry="2.62"/>
-	<ellipse cx="32.75" cy="31.74" rx="2.74" ry="2.62"/>
-</g>
- 
-</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/data/images/qtg_mono_remove_from_video_collection.svg	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Mobile Designer 3.0 2.0 -->
+<svg width="40" height="40" viewBox="0 0 40 40"
+	stroke-miterlimit="2" enable-background="new" zoomAndPan="disable"
+	xmlns="http://www.w3.org/2000/svg"
+	xmlns:xlink="http://www.w3.org/1999/xlink"
+	xmlns:ev="http://www.w3.org/2001/xml-events"
+	xml:space="preserve" version="1.1" baseProfile="Normal">
+ 
+<!-- Scene 1 -->
+<g id="Scene_1">
+	<rect x="0" y="0" width="40" height="40" opacity="0.5019" fill="none"/>
+	<path
+		d="M16 28 c0 -0.33 0.02 -0.67 0.05 -1 h-3.05 v-16 
+			h12 v5.39 c0.96 -0.24 1.96 -0.39 3 -0.39 v-2 
+			h3 v2.39 c1.06 0.27 2.07 0.68 3 1.22 v-14.61 
+			h-3 v3 h-3 v-3 h-3 v5 
+			h-12 v-5 h-3 v3 h-3 v-3 
+			h-3 v32 h3 v-3 h3 v3 
+			h3 v-5 h3.18 c-0.1 -0.65 -0.17 -1.31 -0.17 -2 
+			Z M28 8 h3 v4 h-3 v-4 Z M10 30 
+			h-3 v-4 h3 v4 Z M10 24 h-3 
+			v-4 h3 v4 Z M10 18 h-3 v-4 
+			h3 v4 Z M10 12 h-3 v-4 h3 
+			v4 Z"/>
+	<rect x="19.5" y="24.2" width="18.37" height="5.51"/>
+</g>
+ 
+</svg>
\ No newline at end of file
--- a/videocollection/videocollectionview/data/images/qtg_mono_video_collection.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<polygon points="35,8 17,8 17,5 3,5 3,11 35,11 "/>
-<polygon points="17,16 34,16 37,16 37,13 3,13 3,33 17,33 17,30 6,30 6,16 "/>
-<path d="M37,18v2h-2v-2h-2v3h-8v-3h-2v2h-2v-2h-2v21h2v-2h2v2h2v-3h8v3h2v-2h2v2h2V18H37z M23,35h-2v-3h2V35z M23,30h-2v-3h2V30z
-	 M23,25h-2v-3h2V25z M33,33h-8v-9h8V33z M37,35h-2v-3h2V35z M37,30h-2v-3h2V30z M37,25h-2v-3h2V25z"/>
-</svg>
--- a/videocollection/videocollectionview/data/images/qtg_mono_video_services.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
-	c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
-	h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
-	c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
-	C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
-	c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
-	c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
-	c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
-	c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
-	s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
-	l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
-	C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
-	c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</svg>
--- a/videocollection/videocollectionview/data/images/services_icon.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
-	c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
-	h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
-	c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
-	C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
-	c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
-	c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
-	c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
-	c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
-	s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
-	l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
-	C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
-	c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</svg>
--- a/videocollection/videocollectionview/data/images/services_icon_pressed.svg	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-	 x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
-<defs>
-</defs>
-<rect opacity="0.5" fill="none" width="40" height="40"/>
-<path d="M16,28c0-0.338,0.023-0.67,0.05-1H13V11h12v5.394C25.961,16.146,26.963,16,28,16v-2h3v2.394
-	c1.064,0.275,2.072,0.687,3,1.225V3h-3v3h-3V3h-3v5H13V3h-3v3H7V3H4v32h3v-3h3v3h3v-5h3.18C16.07,29.348,16,28.684,16,28z M28,8h3v4
-	h-3V8z M10,30H7v-4h3V30z M10,24H7v-4h3V24z M10,18H7v-4h3V18z M10,12H7V8h3V12z"/>
-<path d="M28,18c-5.523,0-10,4.476-10,10s4.477,10,10,10s10-4.477,10-10S33.523,18,28,18z M21.457,32.588
-	c-0.553-0.787-0.965-1.678-1.208-2.637l1.17-0.23l1,2L21.457,32.588z M33.082,34.174l-0.502-0.453l1-2l1.346,0.264
-	C34.445,32.82,33.822,33.563,33.082,34.174z M33.869,24.801l-1.148-0.443l0.652,0.885l0.469-0.207c0,0,0.574,0.547,0.547,0.729
-	c-0.025,0.184-0.885,1.018-0.885,1.018l-0.754,0.268l-0.994-0.816L31,25.607l0.469,1.121l0.627,0.652c0,0,1.096-0.156,1.252-0.027
-	c0.156,0.131-0.209,1.123-0.209,1.123l-1.826,1.877l-0.182,1.877c-1.018,0.523-1.121,1.328-1.121,1.328s-0.262-0.051-0.939,0.707
-	c-0.678,0.754-1.408,0.557-1.408,0.557c-0.861,0-1.018-0.557-1.018-0.74c0-0.182-0.859-1.59-0.859-2.061
-	c0-0.469,0.26-1.043,0.26-1.043c0.053-0.678-0.678-2.502-0.678-2.502h-0.756l-0.262-0.574c-2.449,0.521-2.555-0.105-2.92-0.783
-	s0.053-2.502,0.287-2.789c0.15-0.184,0.949-0.76,1.506-1.152L28.936,25l1-2l-4-1l-2.23,0.84c0.043-0.029,0.072-0.049,0.072-0.049
-	l-0.234-0.34c-0.158-0.338,0.859-0.807,0.859-0.807c0.393,0.262,0.652,0,0.652,0l0.104-0.262l-0.104-0.39l0.484-0.602
-	C26.314,20.139,27.141,20,28,20c0.9,0,1.762,0.156,2.568,0.432L30,21l1,1l0.947-0.947c2.096,1.197,3.602,3.314,3.961,5.799
-	c-0.418-0.84-0.762-1.816-0.762-1.816L33.869,24.801z"/>
-</svg>
--- a/videocollection/videocollectionview/data/videocollectionview.qrc	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/data/videocollectionview.qrc	Thu Apr 01 23:32:44 2010 +0300
@@ -5,15 +5,10 @@
     </qresource>
     <qresource prefix="/" >
         <file>images/qtg_mono_video_all.svg</file>
-        <file>images/qtg_mono_video_collection.svg</file>
-        <file>images/qtg_mono_video_services.svg</file>
-        <file>images/mono_video_addvideos.svg</file>
-        <file>images/mono_video_removevideos.svg</file>
-        <file>images/mono_video_sortvideos.svg</file>
-        <file>images/services_icon.svg</file>
-        <file>images/services_icon_pressed.svg</file>
+        <file>images/qtg_mono_remove_from_video_collection.svg</file>
     </qresource>
-    <qresource prefix="/style" >
-        <file>hblistviewitem.css</file>
-    </qresource>
+    <qresource prefix="/" >
+        <file>effects/slide_in_to_left_and_fade_in.fxml</file>
+        <file>effects/slide_out_to_left_and_fade_out.fxml</file>
+    </qresource>    
 </RCC>
--- a/videocollection/videocollectionview/inc/videocollectionuiloader.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/inc/videocollectionuiloader.h	Thu Apr 01 23:32:44 2010 +0300
@@ -24,51 +24,57 @@
 #include <qmap.h>
 
 // Constants
-static const char* DOCML_VIDEOCOLLECTIONVIEW_FILE     = ":/layout/collectionview.docml";
-static const char* DOCML_NAME_VIEW                    = "view";
+static const char* DOCML_VIDEOCOLLECTIONVIEW_FILE         = ":/layout/collectionview.docml";
+static const char* DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST = "listsSection";
+static const char* DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT = "hintSection";
+static const char* DOCML_NAME_VIEW                        = "view";
 
 // Videocollection View
-static const char* DOCML_NAME_VC_HEADINGBANNER        = "vc:mBanner";
-static const char* DOCML_NAME_VC_COLLECTIONWIDGET     = "vc:mCollectionWidget";
-static const char* DOCML_NAME_VC_COLLECTIONCONTENTWIDGET = "vc:mCollectionContentWidget";
-static const char* DOCML_NAME_VC_VIDEOLISTWIDGET      = "vc:mListWidget";
-static const char* DOCML_NAME_VC_VIDEOHINTWIDGET      = "vc:mHintWidget";
+static const char* DOCML_NAME_VC_HEADINGBANNER            = "vc:mBanner";
+static const char* DOCML_NAME_VC_COLLECTIONWIDGET         = "vc:mCollectionWidget";
+static const char* DOCML_NAME_VC_COLLECTIONCONTENTWIDGET  = "vc:mCollectionContentWidget";
+static const char* DOCML_NAME_VC_VIDEOLISTWIDGET          = "vc:mListWidget";
+static const char* DOCML_NAME_VC_VIDEOHINTWIDGET          = "vc:mHintWidget";
 
 // Videocollection Options Menu
-static const char* DOCML_NAME_OPTIONS_MENU            = "vc:mOptionsMenu";
-static const char* DOCML_NAME_SORT_MENU               = "vc:mSortBy";
+static const char* DOCML_NAME_OPTIONS_MENU                = "vc:mOptionsMenu";
+static const char* DOCML_NAME_SORT_MENU                   = "vc:mSortBy";
 
-static const char* DOCML_NAME_SORT_BY_DATE            = "vc:mDate";
-static const char* DOCML_NAME_SORT_BY_NAME            = "vc:mName";
-static const char* DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS = "vc:mNumberOfItems";
-static const char* DOCML_NAME_SORT_BY_TOTAL_LENGTH    = "vc:mTotalLength";
-static const char* DOCML_NAME_SORT_BY_RATING          = "vc:mRating";
-static const char* DOCML_NAME_SORT_BY_SIZE            = "vc:mSize";
+static const char* DOCML_NAME_SORT_BY_DATE                = "vc:mDate";
+static const char* DOCML_NAME_SORT_BY_NAME                = "vc:mName";
+static const char* DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS     = "vc:mNumberOfItems";
+static const char* DOCML_NAME_SORT_BY_RATING              = "vc:mRating";
+static const char* DOCML_NAME_SORT_BY_SIZE                = "vc:mSize";
 
-static const char* DOCML_NAME_ADD_TO_COLLECTION       = "vc:mAddtoCollection";
-static const char* DOCML_NAME_CREATE_COLLECTION       = "vc:mCreateNewCollection";
-static const char* DOCML_NAME_DELETE_MULTIPLE         = "vc:mDeleteMultiple";
-
-static const char* DOCML_NAME_PLAY_IN_QUEUE           = "vc:mPlayInQueue";
-static const char* DOCML_NAME_PLAY_ALL_ITEMS          = "vc:mPlayAllItems";
+static const char* DOCML_NAME_ADD_TO_COLLECTION           = "vc:mAddtoCollection";
+static const char* DOCML_NAME_CREATE_COLLECTION           = "vc:mCreateNewCollection";
+static const char* DOCML_NAME_DELETE_MULTIPLE             = "vc:mDeleteMultiple";
 
 // Videocollection hint widget
-static const char* DOCML_NAME_HINT_BUTTON             = "vc:mHintButton";
-static const char* DOCML_NAME_HINT_LABEL              = "vc:mHintTextLabel";
-static const char* DOCML_NAME_NO_VIDEOS_LABEL         = "vc:mNoVideosLabel";
+static const char* DOCML_NAME_HINT_BUTTON                 = "vc:mHintButton";
+static const char* DOCML_NAME_HINT_LABEL                  = "vc:mHintTextLabel";
+static const char* DOCML_NAME_NO_VIDEOS_LABEL             = "vc:mNoVideosLabel";
 
 // video multiselection dialog
-static const char* DOCML_VIDEOSELECTIONDIALOG_FILE    = ":/layout/videolistselectiondialog.docml";
-static const char* DOCML_NAME_DIALOG                  = "mMultiSelectionDialog";
-static const char* DOCML_NAME_DLG_HEADINGLBL          = "mHeadingLabel";
-static const char* DOCML_NAME_CHECK_CONTAINER         = "mCheckBoxContainer";
-static const char* DOCML_NAME_MARKALL                 = "mCheckMarkAll";
-static const char* DOCML_NAME_LBL_SELECTION           = "mSelectionCount";
-static const char* DOCML_NAME_LIST_CONTAINER          = "mListContainer";
+static const char* DOCML_VIDEOSELECTIONDIALOG_FILE        = ":/layout/videolistselectiondialog.docml";
+static const char* DOCML_NAME_DIALOG                      = "mMultiSelectionDialog";
+static const char* DOCML_NAME_DLG_HEADINGLBL              = "mHeadingLabel";
+static const char* DOCML_NAME_CHECK_CONTAINER             = "mCheckBoxContainer";
+static const char* DOCML_NAME_MARKALL                     = "mCheckMarkAll";
+static const char* DOCML_NAME_LBL_SELECTION               = "mSelectionCount";
+static const char* DOCML_NAME_LIST_CONTAINER              = "mListContainer";
 
 // async loading timeout
-static const int ASYNC_FIND_TIMEOUT                   = 50; // ms
+static const int ASYNC_FIND_TIMEOUT                       = 50; // ms
 
+// Effect constants
+static const char* EFFECT_SLIDE_IN_TO_LEFT_FILENAME       = ":/effects/slide_in_to_left_and_fade_in.fxml";
+static const char* EFFECT_SLIDE_OUT_TO_LEFT_FILENAME      = ":/effects/slide_out_to_left_and_fade_out.fxml";
+
+static const char* EFFECT_SLIDE_IN_TO_LEFT                = "slide_in_to_left_and_fade_in";
+static const char* EFFECT_SLIDE_OUT_TO_LEFT               = "slide_out_to_left_and_fade_out";
+
+// Forward declarations
 class QActionGroup;
 class HbAction;
 
@@ -87,7 +93,6 @@
         EActionSortByDate,
         EActionSortByName,
         EACtionSortByItemCount,
-        EActionSortByLength,
         EActionSortBySize,
         EActionNewCollection,
         EActionAddToCollection,
@@ -96,8 +101,7 @@
         ETBActionCollections,
         ETBActionServices,
         ETBActionAddVideos,
-        ETBActionRemoveVideos,
-        ETBActionSortVideos
+        ETBActionRemoveVideos
     };
     
     /** VideoCollectionUiLoader parameter class */ 
@@ -108,11 +112,13 @@
             bool isWidget = false,
             QObject *receiver = 0,
             const char *docml = 0,
+            const char *section = 0,
             const char *member = 0):
             mName(name),
             mIsWidget(isWidget),
             mReceiver(receiver),
             mDocml(docml),
+            mSection(section),
             mMember(member)
             {
             // nothing to do 
@@ -125,6 +131,7 @@
             if (mName == params.mName &&
                 mReceiver == params.mReceiver &&
                 mDocml == params.mDocml &&
+                mSection == params.mSection &&
                 mMember == params.mMember)
             {
                 isSame = true;
@@ -138,6 +145,7 @@
         bool mIsWidget;
         QObject *mReceiver;
         const char *mDocml;
+        const char *mSection;
         const char *mMember;
     };
 
@@ -194,6 +202,16 @@
      * Set video services in use.
      */
     void setIsService(bool isService);
+    
+    /**
+     * load
+     */
+    QObjectList load( const QString &fileName, bool *ok = 0 );
+
+    /**
+     * load
+     */
+    QObjectList load( const QString &fileName, const QString &section , bool *ok = 0 );
 
 signals:
     /**
@@ -286,6 +304,9 @@
     /** toolbar actions */
     QMap<ActionIds, HbAction*> mToolbarActions;
     
+    /** loaded docml's */
+    QList<QString> mDocmls;
+    
     /** action group for "sort by" actions */
     QActionGroup* mSortGroup;
     
--- a/videocollection/videocollectionview/inc/videocollectionviewplugin.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/inc/videocollectionviewplugin.h	Thu Apr 01 23:32:44 2010 +0300
@@ -83,6 +83,12 @@
      */
     void command(int);
 
+    /**
+     * Signaled to do delayed loading of components not loaded initially at start up phase
+     *
+     */
+    void doDelayeds();
+    
 public slots: // from QViewPlugin
 
     /**
@@ -101,6 +107,17 @@
 
 private:
 
+    /** from QObject */
+    void timerEvent(QTimerEvent *event); 
+    
+private:
+
+    // async loading timeout
+    static const int DELAYED_LOAD_TIMEOUT = 4000; // ms
+
+    /** timer id */
+    int mTimerId;
+
     /**
      * docml ui loader, owned
      */
@@ -116,6 +133,12 @@
      * If flag is false, no operations can be do to the view.
      */
     bool mActivated;
+    
+	/*
+	 * Service mode flag. True if started as a service, otherwise false.
+	 *
+	 */
+    bool mIsService;
 };
 
 #endif  // VIDEOVIEWPLUGIN_H
--- a/videocollection/videocollectionview/inc/videolistselectiondialog.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/inc/videolistselectiondialog.h	Thu Apr 01 23:32:44 2010 +0300
@@ -52,7 +52,8 @@
     enum TSelectionFunction
     {
         EDeleteVideos,
-        EAddToCollection,
+        EAddToCollection,        
+        ERemoveFromCollection,
         ESelectCollection
     };
     
@@ -85,9 +86,8 @@
     /**
      * Shows modal dialog build from the provided Videolistwidget.
      *
-     * @return HbAction primary action if "OK" iis pressed
      */
-    HbAction* exec();
+    void exec();
     
 private slots:
     
@@ -141,6 +141,13 @@
      * 
      */
     void primaryActionTriggeredSlot();
+    
+    /**
+     * called when dialog has been finished
+     * 
+     * @param action causing the finished
+     */
+    void finishedSlot(HbAction *action);
       
 private:
     
@@ -177,11 +184,12 @@
     
     /**
      * opens an input dialog for a user to input new album name
-     * If everything goes well and user accepts, method returns new album id
+     * If everything goes well and user accepts, method returns new album name and
+     * saves album id into mSelectedAlbumId
      * 
-     * @return TMPXItemId new album id or TMPXItemID::Invalid() in case of cancel
+     * @return QString new name or empty string in case of error or cancel
      */
-    TMPXItemId queryNewAlbum();
+    QString queryNewAlbumSelected();
     
 private:
    
--- a/videocollection/videocollectionview/inc/videolistview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/inc/videolistview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,6 @@
 *
 */
 
-
 #ifndef VIDEOLISTVIEW_H
 #define VIDEOLISTVIEW_H
 
@@ -107,6 +106,12 @@
      * @param int command id
      */
     void command(int);
+    
+    /**
+     * Signaled to do delayed loading of components not loaded initially at start up phase
+     *
+     */
+    void doDelayeds();
 
 private slots:
 
@@ -116,6 +121,12 @@
     void modelReadySlot();
 
     /**
+     * slot is connected to plugin's doDelayeds -signal
+     *
+     */
+    void doDelayedsSlot();
+    
+    /**
      * slot is connected to service's titleReady -signal
      */
 	void titleReadySlot(const QString& title);
@@ -134,7 +145,7 @@
      * Activates all videos widget by calling changeWidget.
      *
      */
-    void openAllVideosViewSlot();
+    void openAllVideosViewSlot();  
 
     /**
      * Slot is connected into toolbar's video collection tab's
@@ -162,11 +173,17 @@
 
      /**
      * Slot is connected into main menus sort -items
-     * Method checks sorting role based on active menu item and starts sorting
+     * Method checks sorting role based on active menu item and initiates sorting
      *
      */
     void startSorting();
 
+     /**
+     * Method checks the sorting role and starts sorting
+     *
+     */
+    void doSorting(int role);
+    
     /**
      * Slot is connected into main menus "delete items" (delete...) signal
      *
@@ -187,6 +204,11 @@
      *
      */
     void addVideosToCollectionSlot();
+    
+    /**
+     * Slot is connected into toolbar's "remove videos" signal
+     */
+    void removeVideosFromCollectionSlot();
 
     /**
      * Slot is connected into main menus aboutToShow -signal
@@ -231,12 +253,14 @@
         const QModelIndex &index);
 
     /**
-     * Slot is connected into toolbar's sort by tab's
-     * triggered signal.
-     *
-     * Activates sort by popup menu.
+     * Slot is called when effect for opening a collection finishes.
      */
-    void openSortByMenuSlot();
+    void finishCollectionOpenedSlot(const HbEffect::EffectStatus &status);
+    
+    /**
+     * Slot is called when effect for closing a collection finishes.
+     */
+    void finishCollectionClosedSlot(const HbEffect::EffectStatus &status);    
     
     /**
      * Slot which is called when a widget has been loaded.
@@ -258,6 +282,24 @@
 private:
 
     /**
+     * Delayed load of multiselection dialog component
+	 *
+     */
+    void loadMultiSelection();
+
+    /**
+     * Delayed load videolistwidgets
+	 *
+     */
+    void loadLists(bool doAsync);
+    
+    /**
+     * Delayed load of hint components
+	 *
+     */
+    void loadHint(bool doAsync);
+
+    /**
      * Cleans all possibly created objects from this. In some cases there are no quarantees
      * that they were created correctly, and thus is better to start again from clean slate.
      */
@@ -327,8 +369,7 @@
         ETBActionCollections   = 11,
         ETBActionServices      = 12,
         ETBActionAddVideos     = 13,
-        ETBActionRemoveVideos  = 14,
-        ETBActionSortVideos    = 15
+        ETBActionRemoveVideos  = 14
     };
 
     /**
@@ -350,11 +391,36 @@
      * Boolean for knowing when the app was started as a service.
      */
     bool mIsService;
+    
+    /**
+     * Boolean for knowing wether the hint component has been loaded or not.
+     */
+    bool mHintLoaded;
 
     /**
+     * Boolean for knowing wether the list widgets have been loaded or not.
+     */
+    bool mListsLoaded;
+    
+    /**
+     * Boolean for knowing wether the multiselection component has been loaded or not.
+     */
+    bool mMultiselectionLoaded;
+    
+    /**
      * Boolean for knowing when the model is ready.
      */
     bool mModelReady;
+    
+    /**
+     * Collection being opened or closed.
+     */
+    bool mTransitionOngoing;
+
+    /**
+     * Hint level for the hint widget.
+     */
+    VideoHintWidget::HintLevel mHintLevel;
 
     /**
      * pointer to videoservices instance
@@ -365,7 +431,7 @@
      * Currently used list
      */
     VideoListWidget* mCurrentList;
-    
+
     /**
      * Action group for the toolbar.
      */
--- a/videocollection/videocollectionview/inc/videolistwidget.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/inc/videolistwidget.h	Thu Apr 01 23:32:44 2010 +0300
@@ -159,12 +159,6 @@
 
 private slots:
 
-	/**
-     * Signaled for item share.
-     *
-     */
-    void shareItemSlot();
-
     /**
      * Signaled for one item deletion.
      *
@@ -188,6 +182,11 @@
      *
      */
     void addToCollectionSlot();
+    
+    /**
+     * Signaled to remove a particular video from collection
+     */
+    void removeFromCollectionSlot();
 
     /**
      * Signaled to remove a user created collection.
@@ -211,6 +210,12 @@
     void playItemSlot();
 
     /**
+     * slot is connected to view's doDelayeds -signal
+     *
+     */
+    void doDelayedsSlot();
+    
+    /**
      * Signaled when stepping back from collection in collection view
      *
      */
@@ -262,12 +267,11 @@
 
     enum TContextActionIds
     {
-        EActionShare = 1,
-        EActionDelete,
+    	EActionDelete = 1,
         EActionDetails,
-        EACtionRemoveFromCollection,
-        EACtionAddToCollection,
-        EACtionRemoveCollection,
+        EActionRemove,
+        EActionAddToCollection,
+        EActionRemoveCollection,
         EActionRename,
     	EActionPlay
     };
@@ -326,11 +330,6 @@
      */
 	bool                       mSignalsConnected;
 	
-	/**
-     * True if details plugin is ready
-     */
-	bool                       mDetailsReady;
-
     /**
      * Boolean for knowing when the app was started as a service.
      */
--- a/videocollection/videocollectionview/src/videocollectionuiloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionuiloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -51,19 +51,54 @@
 //
 VideoCollectionUiLoader::~VideoCollectionUiLoader()
 {
-    // selection dialog needs to be deleted manually
+    if (mTimerId)
+    {
+        killTimer(mTimerId);
+        mTimerId = 0;
+    }
+
+	// selection dialog needs to be deleted manually
+    QGraphicsWidget *widget =
+        HbDocumentLoader::findWidget(DOCML_NAME_DIALOG);
+
     VideoListSelectionDialog *dialog =
-        findWidget<VideoListSelectionDialog>(
-            DOCML_NAME_DIALOG);
+        qobject_cast<VideoListSelectionDialog*>(widget);
     delete dialog;
     
     // clear queue and hash tables
     mQueue.clear();
+    mDocmls.clear();
     mWidgets.clear();
     mObjects.clear();
 }
 
 // ---------------------------------------------------------------------------
+// load
+// ---------------------------------------------------------------------------
+//
+QObjectList VideoCollectionUiLoader::load( const QString &fileName, bool *ok )
+{
+	QObjectList list;
+	if (!mDocmls.contains(fileName))
+	{
+		mDocmls.append(fileName);
+		list = HbDocumentLoader::load(fileName, ok);
+		//TODO: save returned and delete on destructor
+	}
+	return list;
+}
+
+// ---------------------------------------------------------------------------
+// load
+// ---------------------------------------------------------------------------
+//
+QObjectList VideoCollectionUiLoader::load( const QString &fileName, const QString &section , bool *ok )
+{
+	return HbDocumentLoader::load(fileName, section, ok);
+	//TODO: save returned and delete on destructor
+}
+
+// ---------------------------------------------------------------------------
 // startLoading
 // ---------------------------------------------------------------------------
 //
@@ -79,6 +114,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             widgetSlot);
         addToQueue(params);
     }
@@ -89,6 +125,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             widgetSlot);
         addToQueue(params);
     }
@@ -99,6 +136,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             widgetSlot);
         addToQueue(params);
     }
@@ -109,6 +147,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             objectSlot);
         addToQueue(params);
     }
@@ -119,6 +158,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             objectSlot);
         addToQueue(params);
     }
@@ -129,6 +169,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             objectSlot);
         addToQueue(params);
     }
@@ -139,6 +180,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
             widgetSlot);
         addToQueue(params);
     }
@@ -149,6 +191,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
             widgetSlot);
         addToQueue(params);
     }
@@ -159,6 +202,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
             widgetSlot);
         addToQueue(params);
     }
@@ -169,6 +213,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             objectSlot);
         addToQueue(params);
     }
@@ -179,6 +224,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+			0,
             objectSlot);
         addToQueue(params);
     }
@@ -189,16 +235,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
-            objectSlot);
-        addToQueue(params);
-    }
-    if (uiSections.contains(DOCML_NAME_SORT_BY_TOTAL_LENGTH))
-    {
-        VideoCollectionUiLoader::Params params(
-            DOCML_NAME_SORT_BY_TOTAL_LENGTH,
-            false, // is object
-            receiver,
-            DOCML_VIDEOCOLLECTIONVIEW_FILE,
+			0,
             objectSlot);
         addToQueue(params);
     }
@@ -209,6 +246,7 @@
             false, // is object
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             objectSlot);
         addToQueue(params);
     }
@@ -219,6 +257,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            0,
             widgetSlot);
         addToQueue(params);
     }
@@ -229,6 +268,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
             widgetSlot);
         addToQueue(params);
     }
@@ -239,6 +279,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOCOLLECTIONVIEW_FILE,
+            DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
             widgetSlot);
         addToQueue(params);
     }
@@ -248,6 +289,7 @@
             true, // is widget
             receiver,
             DOCML_VIDEOSELECTIONDIALOG_FILE,
+            0,
             widgetSlot);
         addToQueue(params);
     }
@@ -280,6 +322,38 @@
     else
     {
         widget = HbDocumentLoader::findWidget(name);
+        if (!widget)
+        {
+            // check if the widget is being loaded and remove it from queue
+            int count = mQueue.count();
+            for (int i = 0; i < count; i++)
+            {
+                const Params& params = mQueue.at(i);
+                if (params.mName.compare(name) == 0)
+                {
+					bool ok(true);
+					
+					if(!mDocmls.contains(params.mDocml))
+					{
+						load(params.mDocml, &ok);
+
+						if (ok)
+						{
+							mDocmls.append(params.mDocml);
+						}
+					}
+					if ((params.mSection != 0) && ok)
+					{
+						load(params.mDocml, params.mSection, &ok);
+					}
+					if(ok)
+					{
+						widget = HbDocumentLoader::findWidget(params.mName);
+					}
+                    break;
+                }
+            }            
+        }
         if (widget)
         {
             // initialize widget
@@ -305,6 +379,7 @@
                             params.mReceiver, params.mMember);
                     }
                     mQueue.removeAt(i);
+                    runNext(); //removes timer if queue is empty
                     break;
                 }
             }            
@@ -332,6 +407,38 @@
     else
     {
         object = HbDocumentLoader::findObject(name);
+        if (!object)
+        {
+            // check if the object is being loaded and remove it from queue
+            int count = mQueue.count();
+            for (int i = 0; i < count; i++)
+            {
+                const Params& params = mQueue.at(i);
+                if (params.mName.compare(name) == 0)
+                {
+					bool ok(true);
+					
+					if(!mDocmls.contains(params.mDocml))
+					{
+						load(params.mDocml, &ok);
+
+						if (ok)
+						{
+							mDocmls.append(params.mDocml);
+						}
+					}
+					if ((params.mSection != 0) && ok)
+					{
+						load(params.mDocml, params.mSection, &ok);
+					}
+					if(ok)
+					{
+						object = HbDocumentLoader::findObject(params.mName);
+					}
+                    break;
+                }
+            }            
+        }
         if (object)
         {
             // initialize widget
@@ -357,6 +464,7 @@
                             params.mReceiver, params.mMember);
                     }
                     mQueue.removeAt(i);
+                    runNext(); //removes timer if queue is empty
                     break;
                 }
             }            
@@ -453,6 +561,14 @@
                         videoServices = VideoServices::instance();
                     }
                     videoList->initialize(*model, videoServices);
+
+                    HbEffect::add(videoList,
+                                   EFFECT_SLIDE_IN_TO_LEFT_FILENAME,
+                                   EFFECT_SLIDE_IN_TO_LEFT);
+
+                    HbEffect::add(videoList,
+                            EFFECT_SLIDE_OUT_TO_LEFT_FILENAME,
+                            EFFECT_SLIDE_OUT_TO_LEFT);
                 }
             }
         }
@@ -480,7 +596,6 @@
                 findObject<HbAction>(DOCML_NAME_SORT_BY_DATE);
                 findObject<HbAction>(DOCML_NAME_SORT_BY_NAME);
                 findObject<HbAction>(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
-                findObject<HbAction>(DOCML_NAME_SORT_BY_TOTAL_LENGTH);
                 findObject<HbAction>(DOCML_NAME_SORT_BY_SIZE);
 
                 // add sub menu actions
@@ -490,7 +605,6 @@
                     mSortGroup->addAction(mMenuActions[EActionSortByDate]);
                     mSortGroup->addAction(mMenuActions[EActionSortByName]);
                     mSortGroup->addAction(mMenuActions[EACtionSortByItemCount]);
-                    mSortGroup->addAction(mMenuActions[EActionSortByLength]);
                     mSortGroup->addAction(mMenuActions[EActionSortBySize]);
                     
                     // set all sub menu items checkable
@@ -513,9 +627,14 @@
         {
             // ensure that all the actions related to options menu are loaded
             // when options menu is loaded
-            findObject<HbAction>(DOCML_NAME_ADD_TO_COLLECTION);
-            findObject<HbAction>(DOCML_NAME_CREATE_COLLECTION);
-            findObject<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
+        	// when applicaton has been launched as a service,
+        	// do not load components which are not required
+        	if(!mIsService)
+        	{
+				findObject<HbAction>(DOCML_NAME_ADD_TO_COLLECTION);
+				findObject<HbAction>(DOCML_NAME_CREATE_COLLECTION);
+				findObject<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
+        	}
         }
     }
 }
@@ -577,14 +696,6 @@
                 mMenuActions[EACtionSortByItemCount] = action;
             }
         }
-        else if (name.compare(DOCML_NAME_SORT_BY_TOTAL_LENGTH) == 0)
-        {
-            HbAction *action = qobject_cast<HbAction*>(object);
-            if (action)
-            {
-                mMenuActions[EActionSortByLength] = action;
-            }
-        }
         else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0)
         {
             HbAction *action = qobject_cast<HbAction*>(object);
@@ -623,11 +734,23 @@
                     if (!widget)
                     {
                         // widget not found, try to load the docml
-                        load(params.mDocml, &ok);
-                        if (ok)
-                        {
-                            widget = HbDocumentLoader::findWidget(params.mName);
-                        }
+                    	if(!mDocmls.contains(params.mDocml))
+						{
+							load(params.mDocml, &ok);
+
+							if (ok)
+							{
+								mDocmls.append(params.mDocml);
+							}
+						}
+						if ((params.mSection != 0) && ok)
+						{
+							load(params.mDocml, params.mSection, &ok);
+						}
+						if(ok)
+						{
+							widget = HbDocumentLoader::findWidget(params.mName);
+						}
                     }
                     if (widget)
                     {
@@ -662,11 +785,23 @@
                     if (!object)
                     {
                         // widget not found, try to load the docml
-                        load(params.mDocml, &ok);
-                        if (ok)
-                        {
-                            object = HbDocumentLoader::findObject(params.mName);
-                        }
+						if(!mDocmls.contains(params.mDocml))
+						{
+							load(params.mDocml, &ok);
+
+							if (ok)
+							{
+								mDocmls.append(params.mDocml);
+							}
+						}
+						if ((params.mSection != 0) && ok)
+						{
+							load(params.mDocml, params.mSection, &ok);
+						}
+						if(ok)
+						{
+							object = HbDocumentLoader::findObject(params.mName);
+						}
                     }
                     if (object)
                     {
--- a/videocollection/videocollectionview/src/videocollectionviewplugin.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionviewplugin.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -17,6 +17,7 @@
 
 // INCLUDE FILES
 #include <xqplugin.h>
+#include <xqserviceutil.h>
 #include <hbaction.h>
 #include <hbapplication.h>
 #include <hbinstance.h>
@@ -24,6 +25,7 @@
 #include "videocollectionviewplugin.h"
 #include "videolistview.h"
 #include "videocollectionuiloader.h"
+#include "mpxhbvideocommondefs.h"
 
 // ---------------------------------------------------------------------------
 // Constructor
@@ -32,7 +34,8 @@
 VideoCollectionViewPlugin::VideoCollectionViewPlugin()
     : mUiLoader(0),
       mView(0),
-      mActivated(false)
+      mActivated(false),
+      mIsService(false)
 {
 }
 
@@ -61,6 +64,13 @@
 
         mUiLoader->reset();
 
+        if (XQServiceUtil::isService())
+        {
+        	mIsService = true;
+        }
+        
+        mUiLoader->setIsService(mIsService);
+
 		bool ok(false);
 
 		QList<QObject *> objects = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
@@ -78,15 +88,35 @@
             return;
         }
 
-        if(!connect( mView, SIGNAL(command(int)), this, SIGNAL(command(int)) ) ) {
+        if(!connect( mView, SIGNAL(command(int)), this, SIGNAL(command(int)) ) ||
+           !connect( this, SIGNAL(doDelayeds()), mView, SLOT(doDelayedsSlot()) )) {
             // TODO: handle error: connecting signal
             delete mView;
             mView = 0;
             return;
         }
-
+        mTimerId = startTimer(DELAYED_LOAD_TIMEOUT);
         mView->initializeView();
+    }
+}
 
+
+// ---------------------------------------------------------------------------
+// timerEvent
+// ---------------------------------------------------------------------------
+//
+void VideoCollectionViewPlugin::timerEvent(QTimerEvent *event)
+{
+    if (event)
+    {
+        if (event->timerId() == mTimerId)
+        {
+        	killTimer(mTimerId);
+        	mTimerId = 0;
+
+        	emit command(MpxHbVideoCommon::DoDelayedLoad);
+        	emit doDelayeds();
+        }
     }
 }
 
--- a/videocollection/videocollectionview/src/videocollectionviewutils.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videocollectionviewutils.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -85,7 +85,7 @@
     mSortRole = role;
     mSortOrder = order;
     
-    return status;    
+    return status;
 }
 
 // ---------------------------------------------------------------------------
@@ -99,7 +99,7 @@
     if (mSortRole == -1)
     {
         CRepository *cenRep = 0;
-        TRAP_IGNORE(cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
+        TRAP(err, cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
         if(cenRep)
         {
             int sortRole(-1);
@@ -190,7 +190,7 @@
         if(prototype)
         {
             //Use image layout in prototype
-            prototype->setGraphicsSize(HbListViewItem::Thumbnail);
+            prototype->setGraphicsSize(HbListViewItem::WideThumbnail);
         }
         view->setItemRecycling(true);
         view->setClampingStyle(HbScrollArea::BounceBackClamping);
@@ -243,27 +243,27 @@
     switch(statusCode)
     {
         case VideoCollectionCommon::statusSingleDeleteFail:
-            format = tr("Unable to delete item %1. It is currently open."); //TODO: localisation
+            format = hbTrId("txt_videos_info_unable_to_delete_1_it_is_current");
             if(additional.isValid())
             {
                 msg = format.arg(additional.toString());
             }
         break;
         case VideoCollectionCommon::statusMultipleDeleteFail:
-            msg = tr("Unable to delete some items which are currently open.");
+            msg = hbTrId("txt_videos_info_unable_to_delete_some_items_which");
         break;
         case VideoCollectionCommon::statusSingleRemoveFail:
-            format = tr("Unable to remove collection %1."); //TODO: localisation
+            format = tr("Unable to remove collection %1."); //localisation
             if(additional.isValid())
             {
                 msg = format.arg(additional.toString());
             }
         break;
         case VideoCollectionCommon::statusMultiRemoveFail:
-            msg = tr("Unable to remove some collections.");
+            msg = tr("Unable to remove some collections.");  //localisation
         break;
         case VideoCollectionCommon::statusVideosAddedToCollection:
-            format = tr("Videos added to %1 collection."); //TODO: localisation
+            format = hbTrId("txt_videos_dpopinfo_videos_added_to_1");
             if(additional.isValid())
             {
                 msg = format.arg(additional.toString());
@@ -271,10 +271,10 @@
             error = false;
         break;
         case VideoCollectionCommon::statusAllVideosAlreadyInCollection:
-            msg = tr("All videos already added to this collection.");            
+            msg = tr("All videos already added to this collection.");   //localisation
         break;
         case VideoCollectionCommon::statusDeleteInProgress:
-            format = tr("%1 videos are being deleted."); //TODO: localisation
+            format = hbTrId("txt_videos_dpopinfo_ln_videos_are_being_deleted");
             if(additional.isValid())
             {
                 msg = format.arg(additional.toString());
--- a/videocollection/videocollectionview/src/videohintwidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videohintwidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -186,11 +186,12 @@
             noVideosLabel->setVisible(true);
             if (mCurrentLevel == Collection)
             {
-                hintLabel->setVisible(false);                
+                hintLabel->setVisible(false);
                 serviceButton->setIcon(*mAddVideosIcon);
             }
             else
             {               
+                hintLabel->setVisible(true);
                 serviceButton->setIcon(*mServiceIcon);
             }
         }
--- a/videocollection/videocollectionview/src/videolistselectiondialog.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistselectiondialog.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -73,7 +73,11 @@
         mListWidget = new VideoListWidget(mUiLoader);
         if (mListWidget)
         {
-            mListWidget->initialize(*mModel);
+            if(mListWidget->initialize(*mModel) < 0)
+            {
+                delete mListWidget;
+                mListWidget = 0;
+            }
         }
     }
 }
@@ -121,7 +125,12 @@
         }
     }
     // set (or reset) generic id filter
-    mModel->setGenericIdFilter(activeItem, (mTypeOfSelection == EDeleteVideos));    
+    bool filterValue = true;
+    if(mTypeOfSelection == EAddToCollection || mTypeOfSelection == ESelectCollection)
+    {
+        filterValue = false;
+    }
+    mModel->setGenericIdFilter(activeItem, filterValue);    
     activateSelection();
 }
 
@@ -138,21 +147,29 @@
         {
            return false;
         }
-    }    
-    if(!mListWidget)
-    {
-        mListWidget = new VideoListWidget(mUiLoader);
-        mListWidget->initialize(*mModel);
-    }
+    }  
     if (!mListContainer)
     {
         mListContainer =
-                mUiLoader->findWidget<HbStackedWidget>(DOCML_NAME_LIST_CONTAINER);
-        if(mListContainer && mListWidget)
+                   mUiLoader->findWidget<HbStackedWidget>(DOCML_NAME_LIST_CONTAINER);
+    
+        if(!mListWidget)
+        {
+            mListWidget = new VideoListWidget(mUiLoader);
+            if(mListWidget->initialize(*mModel) < 0)
+            {
+                delete mListWidget;
+                mListWidget = 0;
+                mListContainer = 0;
+                return false;
+            }
+        }
+        if(mListContainer)
         {
             mListContainer->addWidget(mListWidget);
         }
     }
+
     if(!mHeading)
     {
         mHeading = mUiLoader->findWidget<HbLabel>(DOCML_NAME_DLG_HEADINGLBL);
@@ -173,11 +190,11 @@
     }
     if(!primaryAction())
     {
-        setPrimaryAction(new HbAction(tr("OK"), this)); //TODO: localisation
+        setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), this));
     }
     if(!secondaryAction())
     {
-        setSecondaryAction(new HbAction(tr("Cancel"), this)); //TODO: localisation
+        setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"), this));
     }
     if(!mListWidget || !mListContainer || !mHeading || !mCheckBox || !primaryAction() || !secondaryAction())
     {
@@ -192,39 +209,63 @@
 //
 void VideoListSelectionDialog::activateSelection()
 {
-    // "add to collection" and "select collection" -selections needs 
+    // "add to collection" and "remove from collection -selections needs 
     // additional functionality for primary key
     if(mTypeOfSelection == EAddToCollection ||
-       mTypeOfSelection == ESelectCollection)
+       mTypeOfSelection == ERemoveFromCollection)
     {
         primaryAction()->disconnect(SIGNAL(triggered()));
         connect(primaryAction(), SIGNAL(triggered()), this, SLOT(primaryActionTriggeredSlot()));
     }
-    
-    if(mTypeOfSelection == EDeleteVideos || mTypeOfSelection == EAddToCollection) 
+    QString headingTxt("");
+    QString primaryTxt("");
+    // create texts
+    switch(mTypeOfSelection)
     {
-        mSelection.clear();
-        mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection);   
+    case EDeleteVideos:
+        primaryTxt = hbTrId("txt_common_button_delete");
+    break;
+    case EAddToCollection:
+        primaryTxt = hbTrId("txt_common_button_add");
+    break;
+    case ERemoveFromCollection:
+        primaryTxt = hbTrId("txt_common_button_remove");
+    break;
+    case ESelectCollection:
+        primaryTxt = hbTrId("txt_videos_button_new");
+    break;
+    default:
+    break;
+    }
+
+    HbAction *primary = primaryAction();
+    primary->setText(primaryTxt);
+
+    if(mTypeOfSelection == ESelectCollection)
+    {
+        headingTxt = hbTrId("txt_videos_title_select_collection");
+        mCheckboxContainer->setVisible(false);
+        mListWidget->setSelectionMode(-1);   
+        mListWidget->activate(VideoCollectionCommon::ELevelCategory);
+        // need to set primaryaction disabled here in order for it 
+        // get correctly updated at modelReady(), where it will be enabled
+        // if state would be same, no update will happen
+        primary->setDisabled(true);
+    }
+    else
+    {
+        headingTxt = hbTrId("txt_videos_title_select_videos");
+        mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection);
         mListWidget->activate(VideoCollectionCommon::ELevelVideos);
         mCheckboxContainer->setVisible(true);
         mItemCount->setPlainText(tr("0/%1").arg(mModel->rowCount())); 
-        mCheckBox->setChecked(false);        
-        QString txt("");
-        mTypeOfSelection == EDeleteVideos ? txt = tr("Delete items") : txt = tr("Add to collection"); // localisation missing
-        mHeading->setPlainText(txt);
-        mTypeOfSelection == EDeleteVideos ? txt = hbTrId("txt_common_menu_delete") : txt = tr("Add"); // localisation missing
-        primaryAction()->setText(txt);
-        primaryAction()->setDisabled(true);
+        mCheckBox->setChecked(false);
+        // need to set primaryaction enabled here in order for it 
+        // get correctly updated at modelReady(), where it will be disabled  
+        // if state would be same, no update will happen
+        primary->setDisabled(false);
     }
-    else
-    {
-        mListWidget->setSelectionMode(-1);   
-        mListWidget->activate(VideoCollectionCommon::ELevelCategory);
-        mCheckboxContainer->setVisible(false);
-        mHeading->setPlainText(tr("Select collection")); // localisation missing
-        primaryAction()->setText(tr("New")); // localisation missing    
-        primaryAction()->setDisabled(false);
-    }    
+    mHeading->setPlainText(headingTxt);         
     // sort to make sure dialog has correctly filtered content
     // at the same order as in view
     VideoCollectionViewUtils::sortModel(mModel, false);        
@@ -234,7 +275,7 @@
 // exec
 // ---------------------------------------------------------------------------
 //
-HbAction* VideoListSelectionDialog::exec()
+void VideoListSelectionDialog::exec()
 {
     // clear checkbox
     mCheckBox->setChecked(false);
@@ -244,46 +285,87 @@
     // scroll list back to top
     mListWidget->scrollTo(mModel->index(0, 0));
 
-    connectSignals();
+    if(mModel->rowCount())
+    {
+        connectSignals();
     
-    // Launch popup syncronously
-    bool accepted = false;
-    HbDialog::exec() == primaryAction() ? accepted = true : accepted = false;
-    
+        // show dialog
+        HbDialog::open();
+    }
+    else
+    {
+        // no items, finish right away
+        finishedSlot(primaryAction());
+    }
+}
+
+// ---------------------------------------------------------------------------
+// finishedSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::finishedSlot(HbAction *action)
+{
     disconnectSignals();
-   
-    if(accepted)
+    if(action == secondaryAction())
+    {
+        return;
+    }
+    QString albumName("");
+    if( mTypeOfSelection == ESelectCollection )
     {
-        // user is adding videos into selected collection 
-        // or selecting collection where to add videos
-        if(mTypeOfSelection == EAddToCollection ||
-           mTypeOfSelection == ESelectCollection)
-        {            
-            if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
+        if( mSelectedAlbumId == TMPXItemId::InvalidId())
+        {
+            albumName = queryNewAlbumSelected();
+            if(mSelectedAlbumId == TMPXItemId::InvalidId())
             {
-                if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
+                // user cancelled new album creation
+                return;
+            }           
+       }
+       mTypeOfSelection = EAddToCollection;
+
+    }
+
+    if(mTypeOfSelection == EAddToCollection)
+    {  
+        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
+        {
+            if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
+            {
+                if(!albumName.length())
                 {
-                    QVariant data = getSelectedName();
-                    VideoCollectionViewUtils::instance().showStatusMsgSlot(
-                            VideoCollectionCommon::statusVideosAddedToCollection,
-                            data);
+                    albumName = getSelectedName();
                 }
+                QVariant data = albumName;
+                VideoCollectionViewUtils::instance().showStatusMsgSlot(
+                        VideoCollectionCommon::statusVideosAddedToCollection,
+                        data);
             }
         }
-        // user is deleting videos
-        else if(mTypeOfSelection == EDeleteVideos)
+    }
+    else if(mTypeOfSelection == ERemoveFromCollection)
+    {
+        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
         {
-            QVariant data = mSelection.indexes().count();
-            VideoCollectionViewUtils::instance().showStatusMsgSlot(
-                                                   VideoCollectionCommon::statusDeleteInProgress,
-                                                   data);
-            // delete items            
-            mModel->deleteItems(mSelection.indexes());
-
+            if(mModel->removeItemsFromAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
+            {
+                QVariant data = getSelectedName();
+                VideoCollectionViewUtils::instance().showStatusMsgSlot(
+                        VideoCollectionCommon::statusVideosRemovedFromCollection,
+                        data);
+            }
         }
-        return primaryAction();
+    }
+    // user is deleting videos
+    else if(mTypeOfSelection == EDeleteVideos)
+    {
+        QVariant data = mSelection.indexes().count();
+        VideoCollectionViewUtils::instance().showStatusMsgSlot(
+                VideoCollectionCommon::statusDeleteInProgress,
+                data);
+        // delete items            
+        mModel->deleteItems(mSelection.indexes());
     } 
-    return secondaryAction(); 
 }
 
 // ---------------------------------------------------------------------------
@@ -312,8 +394,7 @@
 //
 void VideoListSelectionDialog::selectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected)
 {  
-    
-    if(!primaryAction())
+    if(!primaryAction() || mTypeOfSelection == ESelectCollection)
     {
         return;
     }
@@ -362,24 +443,21 @@
 //
 void VideoListSelectionDialog::modelReadySlot()
 {
-    if(!mModel)
-    {
-        return;
-    }
-    
-    if(mTypeOfSelection == ESelectCollection && ! mModel->rowCount())
+   
+    if(mTypeOfSelection == ESelectCollection)
     {
-        // in case there are no albums, start input dialog right away
-        mSelectedAlbumId = queryNewAlbum();
-        if(mSelectedAlbumId != TMPXItemId::InvalidId())
+        primaryAction()->setDisabled(false);
+        if(!mModel->rowCount())
         {
+            // in case there are no user defined albums, 
+            // start input dialog right away by accepting dialog
             primaryAction()->trigger();
+            return;
         }
-        else
-        {
-            secondaryAction()->trigger();
-        }
-        return;
+    }
+    if(mTypeOfSelection != ESelectCollection)
+    {
+        primaryAction()->setDisabled(true);
     }
     updateCounterSlot();
 }
@@ -390,17 +468,14 @@
 //
 void VideoListSelectionDialog::updateCounterSlot()
 {
-    if(!mItemCount || !mModel)
+    if(!mItemCount)
     {
         return;
     }
-    // orbit does not update HbLabel read from docml in case it isn't cleared first
-    int rowCount = mModel->rowCount();
-    
-   
+
+    int rowCount = mModel->rowCount();       
     int selectionCount = mSelection.indexes().count();
-    mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount));
-    
+    mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount));  
     mForcedCheck = true;
     if(selectionCount == rowCount && rowCount > 0)
     {     
@@ -423,13 +498,7 @@
     // reconnect primary action
     primaryAction()->disconnect(SIGNAL(triggered()));
     connect(primaryAction(), SIGNAL(triggered()), this, SLOT(close()));
-    
-    if(mTypeOfSelection == EDeleteVideos) 
-    {       
-        primaryAction()->trigger();
-		return;
-    }
-    
+        
     // update video items selection here before content changes.
     int count = mSelection.indexes().count();
     TMPXItemId id = TMPXItemId::InvalidId();
@@ -447,23 +516,6 @@
         primaryAction()->trigger();
         return;
     }
-    
-    
-    else if(mTypeOfSelection == ESelectCollection)
-    {
-        // there's no selected collection and primary action pressed
-        // -> user is willing to create a new collection
-        mSelectedAlbumId = queryNewAlbum();
-        if(mSelectedAlbumId != TMPXItemId::InvalidId())
-        {       
-            primaryAction()->trigger();
-        }
-        else
-        {
-            // cancelled
-            secondaryAction()->trigger();
-        }     
-    }
     else if(mTypeOfSelection == EAddToCollection)
     {
         // videos for collection selected, but collection 
@@ -478,7 +530,10 @@
 // ---------------------------------------------------------------------------
 //
 void VideoListSelectionDialog::connectSignals()
-{
+{   
+    // dialog finished
+    connect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
+    
     // selection changes
     connect(mListWidget, SIGNAL(activated(const QModelIndex&)),
             this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
@@ -487,8 +542,8 @@
             this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
         
     // model changes signals
-    connect(mModel, SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
-    connect(mModel, SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));    
+    connect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
+    connect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));    
     
     // mark all state changes
     connect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));
@@ -499,7 +554,9 @@
 // ---------------------------------------------------------------------------
 //
 void VideoListSelectionDialog::disconnectSignals()
-{    
+{   
+    disconnect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
+    
     disconnect(mListWidget, SIGNAL(activated(const QModelIndex&)),
                 this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
     
@@ -507,8 +564,8 @@
                             this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
             
     // model changes signals
-    disconnect(mModel, SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
-    disconnect(mModel, SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));   
+    disconnect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
+    disconnect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));   
     
     // mark all state changes
     disconnect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));   
@@ -541,21 +598,22 @@
 }
 
 // ---------------------------------------------------------------------------
-// queryNewAlbum
+// queryNewAlbumSelected
 // ---------------------------------------------------------------------------
 //
-TMPXItemId VideoListSelectionDialog::queryNewAlbum()
+QString VideoListSelectionDialog::queryNewAlbumSelected()
 {
-    TMPXItemId newId = TMPXItemId::InvalidId();
+    mSelectedAlbumId = TMPXItemId::InvalidId();
     bool ok = false;
-    QString label(tr("Enter name:"));   // localisation missing
-    QString text(tr("New collection")); // localisation missing
-    text = HbInputDialog::getText(label, text, &ok);
+    QString label(hbTrId("txt_videos_title_enter_name"));
+    QString text("");
+    text = HbInputDialog::getText(label, hbTrId("txt_videos_dialog_entry_new_collection"), &ok);
     if (ok && text.length())
     {
        // check for duplicate album name and add new album
-        newId = mModel->addNewAlbum(mModel->resolveAlbumName(text));
+        text = mModel->resolveAlbumName(text);
+        mSelectedAlbumId = mModel->addNewAlbum(text);
     }
-    return newId;
+    return text;
 }
 
--- a/videocollection/videocollectionview/src/videolistview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -41,6 +41,7 @@
 #include "videocollectionwrapper.h"
 #include "videosortfilterproxymodel.h"
 #include "videocollectionuiloader.h"
+#include "mpxhbvideocommondefs.h"
 
 // remove these
 #include <QDebug>
@@ -55,7 +56,12 @@
 mWrapper(VideoCollectionWrapper::instance()),
 mUiLoader(uiLoader),
 mIsService(false),
+mHintLoaded(false),
+mListsLoaded(false),
+mMultiselectionLoaded(false),
 mModelReady(false),
+mTransitionOngoing(false),
+mHintLevel(VideoHintWidget::AllVideos),
 mVideoServices(0),
 mCurrentList(0),
 mToolbarViewsActionGroup(0),
@@ -72,6 +78,8 @@
 {
     qDebug() << "VideoListView::~VideoListView()";
     
+    toolBar()->clearActions();
+    
     mToolbarActions.clear();
     mSortingRoles.clear();
 
@@ -110,7 +118,6 @@
         	connect(mVideoServices, SIGNAL(titleReady(const QString&)), this, SLOT(titleReadySlot(const QString&)));
         }
 	}
-    mUiLoader->setIsService(mIsService);
     
     // start open all videos model
     VideoSortFilterProxyModel *model =
@@ -128,24 +135,20 @@
     // start loading widgets
     QSet<QString> uiItems;
     uiItems.insert(DOCML_NAME_VC_VIDEOLISTWIDGET);
+    uiItems.insert(DOCML_NAME_VC_HEADINGBANNER);
     uiItems.insert(DOCML_NAME_OPTIONS_MENU);
-    uiItems.insert(DOCML_NAME_ADD_TO_COLLECTION);
-    uiItems.insert(DOCML_NAME_CREATE_COLLECTION);
-    uiItems.insert(DOCML_NAME_DELETE_MULTIPLE);
-    uiItems.insert(DOCML_NAME_VC_HEADINGBANNER);
-    uiItems.insert(DOCML_NAME_VC_VIDEOHINTWIDGET);
-    uiItems.insert(DOCML_NAME_HINT_BUTTON);
-    uiItems.insert(DOCML_NAME_NO_VIDEOS_LABEL);
+    if(!mIsService)
+    {
+		uiItems.insert(DOCML_NAME_ADD_TO_COLLECTION);
+		uiItems.insert(DOCML_NAME_CREATE_COLLECTION);
+		uiItems.insert(DOCML_NAME_DELETE_MULTIPLE);
+    }
     uiItems.insert(DOCML_NAME_SORT_MENU);
     uiItems.insert(DOCML_NAME_SORT_BY_DATE);
     uiItems.insert(DOCML_NAME_SORT_BY_NAME);
     uiItems.insert(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
-    uiItems.insert(DOCML_NAME_SORT_BY_TOTAL_LENGTH);
     uiItems.insert(DOCML_NAME_SORT_BY_RATING);
     uiItems.insert(DOCML_NAME_SORT_BY_SIZE);
-    uiItems.insert(DOCML_NAME_VC_COLLECTIONWIDGET);
-    uiItems.insert(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
-    uiItems.insert(DOCML_NAME_DIALOG);
     mUiLoader->startLoading(uiItems,
         this,
         SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)),
@@ -193,7 +196,7 @@
         }
         
     	int result = mCurrentList->activate(level);
-        if(result < 0) 
+        if(result < 0)
         {
             // activate failed, deactivate view so we get rid of dangling connections.
             deactivateView();
@@ -238,6 +241,70 @@
     return 0;
 }
 
+
+// ---------------------------------------------------------------------------
+// loadMultiSelection
+// ---------------------------------------------------------------------------
+//
+void VideoListView::loadMultiSelection()
+{
+	if(!mIsService)
+    {
+		if(!mMultiselectionLoaded)
+		{
+			QSet<QString> uiItems;
+			uiItems.insert(DOCML_NAME_DIALOG);
+			mUiLoader->startLoading(uiItems,
+				this,
+				SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)),
+				SLOT(objectReadySlot(QObject*, const QString&)));
+			uiItems.clear();
+			mMultiselectionLoaded = true;
+		}
+    }
+}
+
+// ---------------------------------------------------------------------------
+// loadLists
+// ---------------------------------------------------------------------------
+//
+void VideoListView::loadLists(bool doAsync)
+{
+	if(!mListsLoaded)
+	{
+		QSet<QString> uiItems;
+		uiItems.insert(DOCML_NAME_VC_COLLECTIONWIDGET);
+		uiItems.insert(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+		mUiLoader->startLoading(uiItems,
+			this,
+			SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)),
+			SLOT(objectReadySlot(QObject*, const QString&)));
+		uiItems.clear();
+
+		if(!doAsync)
+		{
+			VideoListWidget* widget(0);
+			widget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONWIDGET);
+			widget->setVisible(false);
+			widget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+			widget->setVisible(false);
+		}
+	    mListsLoaded = true;
+	}
+}
+
+// ---------------------------------------------------------------------------
+// doDelayedsSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListView::doDelayedsSlot()
+{
+	loadLists(true);
+	loadMultiSelection();
+	loadHint(true);
+	emit doDelayeds();
+}
+
 // ---------------------------------------------------------------------------
 // modelReadySlot
 // ---------------------------------------------------------------------------
@@ -366,33 +433,30 @@
                 mToolbarViewsActionGroup, SLOT(openAllVideosViewSlot()));
 
         // Collections tab
-        mToolbarActions[ETBActionCollections] = createAction(":/images/qtg_mono_video_collection.svg",
+        mToolbarActions[ETBActionCollections] = createAction("qtg_mono_video_collection",
                 mToolbarViewsActionGroup, SLOT(openCollectionViewSlot()));
 
         if (!mIsService)
         {
 			// Services tab
-			mToolbarActions[ETBActionServices] = createAction(":/images/qtg_mono_video_services.svg",
+			mToolbarActions[ETBActionServices] = createAction("qtg_mono_ovistore",
 					mToolbarViewsActionGroup, SLOT(openServicesViewSlot()));
 			// Add Videos tab
-			mToolbarActions[ETBActionAddVideos] = createAction(":/images/mono_video_addvideos.svg",
+			mToolbarActions[ETBActionAddVideos] = 
+			        createAction("qtg_mono_add_to_video_collection",
 					mToolbarCollectionActionGroup, SLOT(addVideosToCollectionSlot()));
 
 			// Remove Videos tab
-			mToolbarActions[ETBActionRemoveVideos] = createAction(":/images/mono_video_removevideos.svg",
-					mToolbarCollectionActionGroup, SLOT(debugNotImplementedYet()));
+			mToolbarActions[ETBActionRemoveVideos] = 
+			        createAction(":/images/qtg_mono_remove_from_video_collection.svg",
+					mToolbarCollectionActionGroup, SLOT(removeVideosFromCollectionSlot()));
         }
 
-        // Sort by tab
-        mToolbarActions[ETBActionSortVideos] = createAction(":/images/mono_video_sortvideos.svg",
-                mToolbarCollectionActionGroup, SLOT(openSortByMenuSlot()));
-
         HbToolBar *bar = toolBar(); // First call to toolBar() creates the object, so on failure it could return 0.
 
         if(   !bar
 		   || !mToolbarActions[ETBActionAllVideos]
            || !mToolbarActions[ETBActionCollections]
-		   || !mToolbarActions[ETBActionSortVideos]
            || (!mToolbarActions[ETBActionServices]     && !mIsService)
            || (!mToolbarActions[ETBActionAddVideos]    && !mIsService)
            || (!mToolbarActions[ETBActionRemoveVideos] && !mIsService))
@@ -402,7 +466,6 @@
             delete mToolbarActions[ETBActionServices];
             delete mToolbarActions[ETBActionAddVideos];
             delete mToolbarActions[ETBActionRemoveVideos];
-            delete mToolbarActions[ETBActionSortVideos];
         	return -1;
         }
 
@@ -412,7 +475,7 @@
 
         if (!mIsService)
         {
-        	mToolbarActions[ETBActionServices]->setCheckable(true);
+        	mToolbarActions[ETBActionServices]->setCheckable(false);
         }
 
         // Allvideos is checked at creation phase
@@ -451,6 +514,32 @@
 }
 
 // ---------------------------------------------------------------------------
+// loadHint
+// ---------------------------------------------------------------------------
+//
+void VideoListView::loadHint(bool doAsync)
+{
+	if(!mHintLoaded)
+	{
+		QSet<QString> uiItems;
+	    uiItems.insert(DOCML_NAME_VC_VIDEOHINTWIDGET);
+	    uiItems.insert(DOCML_NAME_HINT_BUTTON);
+	    uiItems.insert(DOCML_NAME_NO_VIDEOS_LABEL);
+		mUiLoader->startLoading(uiItems,
+			this,
+			SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)),
+			SLOT(objectReadySlot(QObject*, const QString&)));
+		uiItems.clear();
+
+		if(!doAsync)
+		{
+			HbPushButton* button = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
+		}
+		mHintLoaded = true;
+	}
+}
+
+// ---------------------------------------------------------------------------
 // showHint
 // ---------------------------------------------------------------------------
 //
@@ -462,9 +551,32 @@
     }
 
     VideoSortFilterProxyModel &model = mCurrentList->getModel();
+
+    HbGroupBox *subLabel =
+        mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
+
+    if((!mHintLoaded && !show) || (!mHintLoaded && model.rowCount() != 0))
+    {
+    	if(subLabel)
+    	{
+    		subLabel->show();
+    	}
+    	return;
+    }
+    else if(!mHintLoaded)
+    {
+    	loadHint(false);
+    }
+
     VideoHintWidget *hintWidget =
         mUiLoader->findWidget<VideoHintWidget>(
             DOCML_NAME_VC_VIDEOHINTWIDGET);
+
+    if (hintWidget)
+    {
+        hintWidget->setLevel(mHintLevel);
+    }
+
     if (mModelReady &&
         model.rowCount() == 0 &&
         hintWidget)
@@ -483,8 +595,6 @@
     	{
     		mToolbarActions[ETBActionRemoveVideos]->setVisible(false);
     	}
-        mToolbarActions[ETBActionSortVideos]->setVisible(false);
-
         if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl) 
         {
         	if(!mIsService)
@@ -511,24 +621,18 @@
 	            mToolbarActions[ETBActionAddVideos]->setVisible(true);
 	        }
     	}
-        if(mToolbarActions[ETBActionSortVideos]->isVisible() == false) 
-        {
-            mToolbarActions[ETBActionSortVideos]->setVisible(true);
-        }
         hintWidget->setButtonShown(true);
     }
     
-    HbGroupBox *subLabel =
-        mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
     if (subLabel)
     {
         if (show &&
-            subLabel &&
+            subLabel->isVisible() &&
             mCurrentList->getLevel() == VideoCollectionCommon::ELevelVideos)
         {
             subLabel->hide();
         }
-        else
+        else if (!subLabel->isVisible())
         {
             subLabel->show();
         }
@@ -541,13 +645,7 @@
 //
 void VideoListView::setHintLevel(VideoHintWidget::HintLevel level)
 {
-    VideoHintWidget *hintWidget =
-        mUiLoader->findWidget<VideoHintWidget>(
-            DOCML_NAME_VC_VIDEOHINTWIDGET);
-    if (hintWidget)
-    {
-        hintWidget->setLevel(level);
-    }
+	mHintLevel = level;
 }
 
 // ---------------------------------------------------------------------------
@@ -580,19 +678,22 @@
         HbGroupBox *subLabel = 
             mUiLoader->findWidget<HbGroupBox>(
                 DOCML_NAME_VC_HEADINGBANNER);
-        
-        if (mCurrentList == videoListWidget)
-        {
-            subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount));
-        }
-        else if (mCurrentList == collectionWidget)
+
+        if(subLabel)
         {
-            subLabel->setHeading(hbTrId("txt_videos_subtitle_l1_collections", itemCount));
+			if (mCurrentList == videoListWidget)
+			{
+				subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount));
+			}
+			else if (mCurrentList == collectionWidget)
+			{
+				subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_collections", itemCount));
+			}
+			else if(mCurrentList == collectionContentWidget)
+			{
+				subLabel->setHeading(hbTrId("txt_videos_subtitle_1_l2").arg(mCollectionName).arg(itemCount));
+			}
         }
-        else if(mCurrentList == collectionContentWidget)
-        {
-            subLabel->setHeading(hbTrId("txt_videos_subtitle_1_l2").arg(mCollectionName).arg(itemCount));
-        }  
     }
 }
 
@@ -678,9 +779,15 @@
 //
 void VideoListView::openAllVideosViewSlot()
 {
+	if(!mListsLoaded)
+	{
+		loadLists(false);
+	}
+
     VideoListWidget *videoListWidget =
         mUiLoader->findWidget<VideoListWidget>(
             DOCML_NAME_VC_VIDEOLISTWIDGET);
+    
     if (mCurrentList &&
         videoListWidget &&
         mCurrentList != videoListWidget)
@@ -706,9 +813,15 @@
 //
 void VideoListView::openCollectionViewSlot()
 {
+	if(!mListsLoaded)
+	{
+		loadLists(false);
+	}
+
     VideoListWidget *collectionWidget =
         mUiLoader->findWidget<VideoListWidget>(
             DOCML_NAME_VC_COLLECTIONWIDGET);
+    
     if (mCurrentList &&
         mCurrentList != collectionWidget)
     {
@@ -778,20 +891,30 @@
     {
         // get sorting role from active action
         HbAction *action = optionsMenu->activeAction()->menu()->activeAction();
-        int role = mSortingRoles[action];
+        if(action)
+		{
+			doSorting(mSortingRoles[action]);
+		}
+    }
+}
 
-        // sort model
-        Qt::SortOrder order(Qt::AscendingOrder);
-        VideoSortFilterProxyModel &model = mCurrentList->getModel();
-        if(model.sortRole() == role && model.sortOrder() == Qt::AscendingOrder)
-        {
-            order = Qt::DescendingOrder;
-        }
-        model.doSorting(role, order);
+// ---------------------------------------------------------------------------
+// doSorting()
+// ---------------------------------------------------------------------------
+//
+void VideoListView::doSorting(int role)
+{
+	// sort model
+	Qt::SortOrder order(Qt::AscendingOrder);
+	VideoSortFilterProxyModel &model = mCurrentList->getModel();
+	if(model.sortRole() == role && model.sortOrder() == Qt::AscendingOrder)
+	{
+		order = Qt::DescendingOrder;
+	}
+	model.doSorting(role, order);
 
-        // save sorting values
-        mUiUtils.saveSortingValues(role, order);
-    }    
+	// save sorting values
+	mUiUtils.saveSortingValues(role, order);
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -828,6 +951,12 @@
     {
         return;
     }
+
+    if(!mMultiselectionLoaded)
+    {
+    	loadMultiSelection();
+    }
+
     VideoListSelectionDialog *dialog =
         mUiLoader->findWidget<VideoListSelectionDialog>(
             DOCML_NAME_DIALOG);
@@ -855,8 +984,8 @@
     
     bool ok = false;
     // query a name for the collection
-    QString label(tr("Enter name:")); // TODO: localization missing!
-    QString text(tr("New collection")); // TODO: localization missing!
+    QString label(hbTrId("txt_videos_title_enter_name"));
+    QString text(hbTrId("txt_videos_dialog_entry_new_collection"));
     text = HbInputDialog::getText(label, text, &ok);
     if (ok && text.length())
     {
@@ -885,32 +1014,82 @@
     {
         return;
     }
-    
+
+    if(!mMultiselectionLoaded)
+    {
+    	loadMultiSelection();
+    }
+
     VideoListSelectionDialog *dialog =
         mUiLoader->findWidget<VideoListSelectionDialog>(
             DOCML_NAME_DIALOG);
-    if (dialog)
+    if (!dialog)
     {
-        if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelAlbum)
+        // fatal: no selection dialog
+        return;
+    }
+    if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelAlbum)
+    {
+        // album is opened, do not proceed in case it already have same amount
+        // of videos than all videos view.
+        VideoListWidget *allVideos = mUiLoader->findWidget<VideoListWidget>(
+                    DOCML_NAME_VC_VIDEOLISTWIDGET);
+        if(allVideos)
         {
-            // album is opened, do not proceed in case it already have same amount
-            // of videos than all videos view.
-            VideoListWidget *allVideos = mUiLoader->findWidget<VideoListWidget>(
-                        DOCML_NAME_VC_VIDEOLISTWIDGET);
-            if(allVideos)
+            int count = allVideos->getModel().rowCount();
+            if(count == mCurrentList->getModel().rowCount())
             {
-                if(allVideos->getModel().rowCount() == mCurrentList->getModel().rowCount())
+                if(count)
                 {
                     QVariant emptyAdditional;
                     mUiUtils.showStatusMsgSlot(
                             VideoCollectionCommon::statusAllVideosAlreadyInCollection,
                             emptyAdditional);
-                    return;
-                }  
-            }
+                }
+                return;
+            }  
         }
-        TMPXItemId collectionId = mCurrentList->getModel().getOpenItem();
-        dialog->setupContent(VideoListSelectionDialog::EAddToCollection, collectionId);
+    }
+    TMPXItemId collectionId = mCurrentList->getModel().getOpenItem();
+    dialog->setupContent(VideoListSelectionDialog::EAddToCollection, collectionId);
+    dialog->exec();
+}
+
+// -------------------------------------------------------------------------------------------------
+// removeVideosFromCollectionSlot
+// -------------------------------------------------------------------------------------------------
+//
+void VideoListView::removeVideosFromCollectionSlot()
+{
+    if(!mCurrentList)
+    {
+        return;
+    }
+    // not allowed if for some reason current widget 
+    // is all videos or collection or there are no items
+    if(mCurrentList->getLevel() < VideoCollectionCommon::ELevelDefaultColl ||
+       !mCurrentList->getModel().rowCount())
+    {
+        return;
+    }
+
+    if(!mMultiselectionLoaded)
+    {
+    	loadMultiSelection();
+    }
+
+    VideoListSelectionDialog *dialog =
+            mUiLoader->findWidget<VideoListSelectionDialog>(
+                        DOCML_NAME_DIALOG);
+    if (!dialog)
+    {
+        // fatal: no selection dialog
+        return;
+    }
+    TMPXItemId collectionId = mCurrentList->getModel().getOpenItem();
+    if(collectionId != TMPXItemId::InvalidId() && collectionId.iId2 != KVcxMvcMediaTypeVideo)
+    {
+        dialog->setupContent(VideoListSelectionDialog::ERemoveFromCollection, collectionId);
         dialog->exec();
     }
 }
@@ -935,7 +1114,6 @@
     showAction(false, DOCML_NAME_SORT_BY_DATE);
     showAction(false, DOCML_NAME_SORT_BY_NAME);
     showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
-    showAction(false, DOCML_NAME_SORT_BY_TOTAL_LENGTH);
     showAction(false, DOCML_NAME_SORT_BY_RATING);
     showAction(false, DOCML_NAME_SORT_BY_SIZE);
     showAction(false, DOCML_NAME_SORT_MENU);
@@ -958,8 +1136,7 @@
     {
         showAction(true, DOCML_NAME_SORT_MENU);
         showAction(true, DOCML_NAME_SORT_BY_DATE);
-        if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS) ||
-            isActionChecked(DOCML_NAME_SORT_BY_TOTAL_LENGTH)) 
+        if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS))
         {
             //TODO: when changing between videos and categories, sorting order needs to be changed, if new
             //      view does not have the previously active sorting order supported
@@ -1010,11 +1187,29 @@
         }
         
         showAction(true, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
-        showAction(true, DOCML_NAME_SORT_BY_TOTAL_LENGTH);
     }
     else if(firstAction != mToolbarActions[ETBActionAllVideos])
     {
-        //Add, Remove and Sort by will be launched from toolbar
+        showAction(true, DOCML_NAME_SORT_MENU);
+        showAction(true, DOCML_NAME_SORT_BY_DATE);
+        if (isActionChecked(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS))
+        {
+            //TODO: when changing between videos and categories, sorting order needs to be changed, if new
+            //      view does not have the previously active sorting order supported
+            showAction(true, DOCML_NAME_SORT_BY_DATE);
+        }
+        else
+        {
+            HbAction* action = mSortingRoles.key(role);
+            if (action)
+            {
+                action->setChecked(true);
+            }
+        }
+
+        showAction(true, DOCML_NAME_SORT_BY_NAME);
+        showAction(true, DOCML_NAME_SORT_BY_SIZE);
+
         if (!mIsService)
         {
             showAction(true, DOCML_NAME_DELETE_MULTIPLE);
@@ -1040,28 +1235,31 @@
     const QString& collection,
     const QModelIndex &index)
 {
-    if(!mToolbarCollectionActionGroup || !mToolbarViewsActionGroup || !mToolbarActions.contains(ETBActionCollections))
-    {
-        return;
-    }
-    
+	if(mTransitionOngoing)
+	{
+		return;
+	}
+	else
+	{
+	    // clear toolbar actions.
+	    toolBar()->clearActions();
+	}
+	
     // update collection specific information
     mCollectionName = collection;
 
-    HbToolBar* bar = toolBar();
-    bar->clearActions();
-
-    if (collectionOpened)
+    if(collectionOpened)
     {
         if(!index.isValid())
         {   
             return;
         }
-		
+        
         // open album view
         VideoListWidget *collectionContentWidget =
             mUiLoader->findWidget<VideoListWidget>(
                 DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+        
         if (mCurrentList &&
             mCurrentList != collectionContentWidget)
         {
@@ -1077,88 +1275,104 @@
                 return;
             }
             
-            // deactivat current
-            mCurrentList->deactivate();
-			
-            // activate video collection content widget
-            mCurrentList = collectionContentWidget;
-            
+            // Send level that is opened with the effect.
+            QVariant nextLevel;
             if(itemId.iId2 ==  KVcxMvcMediaTypeCategory)
             {
-                mCurrentList->activate(VideoCollectionCommon::ELevelDefaultColl);
+                nextLevel = QVariant(VideoCollectionCommon::ELevelDefaultColl);
             }
             else if(itemId.iId2 == KVcxMvcMediaTypeAlbum)
             {
-                mCurrentList->activate(VideoCollectionCommon::ELevelAlbum);
-            }
-            mCurrentList->getModel().openItem(itemId);
+                nextLevel = QVariant(VideoCollectionCommon::ELevelAlbum);
+            }            
+            
+            // Start fetching content.
+            collectionContentWidget->getModel().openItem(itemId);
             
-            // update hint widget, but don't show yet
-            setHintLevel(VideoHintWidget::Collection);
-            showHint(false);
+            HbEffect::start(collectionContentWidget,
+                            EFFECT_SLIDE_IN_TO_LEFT,
+                            this,
+                            "finishCollectionOpenedSlot",
+                            nextLevel);
             
-            // update toolbar
-            mToolbarActions[ETBActionCollections]->setChecked(false);
-            bar->addActions(mToolbarCollectionActionGroup->actions());
+            mTransitionOngoing = true;
         }
     }
     else
     {
-        // open collection view
-        openCollectionViewSlot();
+        // open categories view.
+        VideoListWidget *collectionContentWidget =
+            mUiLoader->findWidget<VideoListWidget>(
+                DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
         
-        // update toolbar
-        bar->addActions(mToolbarViewsActionGroup->actions());
-        mToolbarActions[ETBActionCollections]->setChecked(true);
+        HbEffect::start(collectionContentWidget,
+                        EFFECT_SLIDE_OUT_TO_LEFT,
+                        this,
+                        "finishCollectionClosedSlot");
+        
+        mTransitionOngoing = true;
     }
 }
 
 // -------------------------------------------------------------------------------------------------
-// openSortByMenuSlot
+// finishCollectionOpenedSlot
 // -------------------------------------------------------------------------------------------------
 //
-void VideoListView::openSortByMenuSlot()
+void VideoListView::finishCollectionOpenedSlot(const HbEffect::EffectStatus &status)
 {
-	if(!mCurrentList)
-	{
-		return;
-	}
-	
-    VideoSortFilterProxyModel &model = mCurrentList->getModel();
-    if (!model.rowCount(QModelIndex()))
+    Q_UNUSED(status);
+    
+    mTransitionOngoing = false;
+    
+    // deactivat current widget.
+    mCurrentList->deactivate();
+    
+    // activate video collection content widget.
+    mCurrentList = mUiLoader->findWidget<VideoListWidget>(
+                    DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+
+    if(!mCurrentList || !status.userData.isValid())
     {
-        // no items, no menu
         return;
     }
     
-    // hide all actions by default
-    showAction(false, DOCML_NAME_ADD_TO_COLLECTION);
-    showAction(false, DOCML_NAME_CREATE_COLLECTION);
-    showAction(false, DOCML_NAME_DELETE_MULTIPLE);
-    showAction(false, DOCML_NAME_SORT_BY_DATE);
-    showAction(false, DOCML_NAME_SORT_BY_NAME);
-    showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
-    showAction(false, DOCML_NAME_SORT_BY_TOTAL_LENGTH);
-    showAction(false, DOCML_NAME_SORT_BY_RATING);
-    showAction(false, DOCML_NAME_SORT_BY_SIZE);
-    showAction(false, DOCML_NAME_SORT_MENU);
+    updateSubLabel();
+
+    VideoCollectionCommon::TCollectionLevels level =
+            static_cast<VideoCollectionCommon::TCollectionLevels>(status.userData.toInt());
+    mCurrentList->activate(level);
     
-    // if sort menu found, show all sort items
-    HbMenu *sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
-    if (sortMenu)
+    // update hint widget
+    setHintLevel(VideoHintWidget::Collection);
+    showHint();
+
+    // update toolbar for albums, default categories don't have one.
+    if(level == VideoCollectionCommon::ELevelAlbum && 
+       mToolbarCollectionActionGroup && mToolbarActions.contains(ETBActionCollections))
     {
-        // show actions
-        showAction(true, DOCML_NAME_SORT_MENU);
-        showAction(true, DOCML_NAME_SORT_BY_DATE);
-        showAction(true, DOCML_NAME_SORT_BY_NAME);
-        showAction(true, DOCML_NAME_SORT_BY_SIZE);
+        mToolbarActions[ETBActionCollections]->setChecked(false);
+        toolBar()->addActions(mToolbarCollectionActionGroup->actions());
+    }
+}
 
-        // show sort menu
-        sortMenu->show();
-        
-        // execute sort menu
-        QPointF coords((size()/2).width(), (size()/3).height());
-        sortMenu->exec(coords);
+// -------------------------------------------------------------------------------------------------
+// finishCollectionClosedSlot
+// -------------------------------------------------------------------------------------------------
+//
+void VideoListView::finishCollectionClosedSlot(const HbEffect::EffectStatus &status)
+{
+    Q_UNUSED(status);
+    
+    mTransitionOngoing = false;
+    
+    // open collection view
+    openCollectionViewSlot();
+    
+    // update toolbar
+    if(mToolbarViewsActionGroup && mToolbarActions.contains(ETBActionCollections))
+    {
+        toolBar()->addActions(mToolbarViewsActionGroup->actions());
+        mToolbarActions[ETBActionCollections]->setChecked(true);
     }
 }
 
@@ -1171,12 +1385,15 @@
     if (name.compare(DOCML_NAME_VC_VIDEOLISTWIDGET) == 0)
     {
         connect(widget, SIGNAL(command(int)), this, SIGNAL(command(int)));
+        connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
     }
     else if (name.compare(DOCML_NAME_VC_COLLECTIONWIDGET) == 0)
     {
         connect(
             widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
             this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
+            connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
+            emit(doDelayeds());
     }
     else if (name.compare(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET) == 0)
     {
@@ -1184,6 +1401,8 @@
         connect(
             widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
             this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
+            connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
+            emit(doDelayeds());
     }
     else if (name.compare(DOCML_NAME_OPTIONS_MENU) == 0)
     {
@@ -1230,16 +1449,6 @@
             mSortingRoles[action] = 0;
         }
     }
-    else if (name.compare(DOCML_NAME_SORT_BY_TOTAL_LENGTH) == 0)
-    {
-        HbAction *action = qobject_cast<HbAction*>(object);
-        if (action)
-        {
-        	// TODO: implement
-            connect(action, SIGNAL(triggered()), this, SLOT(debugNotImplementedYet()));
-            mSortingRoles[action] = 0;
-        }
-    }
     else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0)
     {
         HbAction *action = qobject_cast<HbAction*>(object);
--- a/videocollection/videocollectionview/src/videolistwidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistwidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -27,9 +27,7 @@
 #include <hbmainwindow.h>
 #include <hblistviewitem.h>
 #include <hbmessagebox.h>
-#include <hbstyleloader.h>
 #include <vcxmyvideosdefs.h>
-#include "videocollectionuiloader.h"
 
 #include "videocollectionviewutils.h"
 #include "videocollectionuiloader.h"
@@ -53,7 +51,6 @@
 mVideoServices(0),
 mCurrentLevel(VideoCollectionCommon::ELevelInvalid),
 mSignalsConnected(false),
-mDetailsReady(false),
 mIsService(false),
 mNavKeyBackAction(0),
 mNavKeyQuitAction(0),
@@ -71,7 +68,6 @@
 //
 VideoListWidget::~VideoListWidget()
 {
-    HbStyleLoader::unregisterFilePath( ":/style/hblistviewitem.css" );
     delete mScrollPositionTimer;
     mScrollPositionTimer = 0;
 	mContextMenuActions.clear();
@@ -107,9 +103,6 @@
 	
     mNavKeyQuitAction = new HbAction(Hb::QuitNaviAction);
 
-    // initial setup for widget is hidden
-	setVisible(false);
-
 	mScrollPositionTimer = new QTimer();
 	mScrollPositionTimer->setSingleShot(true);
 
@@ -118,15 +111,8 @@
 		connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&)));
 	}
 
-    bool ret = HbStyleLoader::registerFilePath( ":/style/hblistviewitem.css" );
-
-    if(!ret)
-    {
-        return -1;
-    }
+	setModel(mModel);
 	
-	setModel(mModel);
-
     return 0;
 }
 
@@ -149,8 +135,9 @@
     {
         return -1;
     }
+    
 	mCurrentLevel = level;
-	setVisible(true);
+    setVisible(true);
 
     if ( connectSignals() < 0)
     {
@@ -200,7 +187,8 @@
     {
         mContextMenu->hide();
     }
-    setVisible(false);  
+
+    setVisible(false);
     disConnectSignals();
     
     // Free allocated memory for list thumbnails and disable background fetching.
@@ -233,7 +221,6 @@
            !connect(mScrollPositionTimer, SIGNAL(timeout()), this, SLOT(scrollPositionTimerSlot())) || 
            !connect(mNavKeyBackAction, SIGNAL(triggered()), this, SLOT(back())) ||
            !connect(mNavKeyQuitAction, SIGNAL(triggered()), qApp, SLOT(quit()))) 
-           
         {
             return -1;
         }
@@ -260,15 +247,6 @@
 }
 
 // ---------------------------------------------------------------------------
-// shareItemSlot
-// ---------------------------------------------------------------------------
-//
-void VideoListWidget::shareItemSlot()
-{
-    debugNotImplementedYet();
-}
-
-// ---------------------------------------------------------------------------
 // deleteItemSlot
 // ---------------------------------------------------------------------------
 //
@@ -285,7 +263,7 @@
 
     if (variant.isValid())
     {
-        QString text = tr("Do you want to delete \"%1\"?").arg( //TODO: localisation
+        QString text = hbTrId("txt_videos_info_do_you_want_to_delete_1").arg(
                 variant.toStringList().first());
         if(HbMessageBox::question(text))
         {
@@ -306,22 +284,33 @@
     {
         return;
     }
+    
     mContextMenu = new HbMenu();
-
-    if (mIsService)
+    if (mContextMenu)
     {
-		mContextMenuActions[EActionPlay]    = mContextMenu->addAction(hbTrId("txt_videos_menu_play"),    this, SLOT(playItemSlot())); //TODO: localisation
-		mContextMenuActions[EActionDetails] = mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot()));
-    }
-    else
-    {
-        mContextMenuActions[EACtionAddToCollection]      = mContextMenu->addAction(hbTrId("txt_videos_menu_add_to_collection"), this, SLOT(addToCollectionSlot()));
-        mContextMenuActions[EACtionRemoveFromCollection] = mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(debugNotImplementedYet()));
-        mContextMenuActions[EActionShare]                = mContextMenu->addAction(hbTrId("txt_videos_menu_share"), this, SLOT(shareItemSlot()));
-        mContextMenuActions[EActionRename]               = mContextMenu->addAction(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameSlot()));
-        mContextMenuActions[EACtionRemoveCollection]     = mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(removeCollectionSlot()));   
-        mContextMenuActions[EActionDelete]               = mContextMenu->addAction(hbTrId("txt_common_menu_delete"), this, SLOT(deleteItemSlot()));
-        mContextMenuActions[EActionDetails]              = mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot()));
+        mContextMenu->setDismissPolicy(HbPopup::TapAnywhere);
+        if (mIsService)
+        {
+            mContextMenuActions[EActionPlay]    = 
+                    mContextMenu->addAction(hbTrId("txt_videos_menu_play"), this, SLOT(playItemSlot())); 
+            mContextMenuActions[EActionDetails] = 
+                    mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot()));
+        }
+        else
+        {
+            mContextMenuActions[EActionAddToCollection] = 
+                    mContextMenu->addAction(hbTrId("txt_videos_menu_add_to_collection"), this, SLOT(addToCollectionSlot()));
+            mContextMenuActions[EActionRemove]           = 
+                    mContextMenu->addAction(hbTrId("txt_videos_menu_remove_from_collection"), this, SLOT(removeFromCollectionSlot()));
+            mContextMenuActions[EActionRename]           = 
+                    mContextMenu->addAction(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameSlot()));
+            mContextMenuActions[EActionRemoveCollection] = 
+                    mContextMenu->addAction(hbTrId("txt_videos_menu_remove_collection"), this, SLOT(removeCollectionSlot()));   
+            mContextMenuActions[EActionDelete]           = 
+                    mContextMenu->addAction(hbTrId("txt_common_menu_delete"), this, SLOT(deleteItemSlot()));
+            mContextMenuActions[EActionDetails]          = 
+                    mContextMenu->addAction(hbTrId("txt_common_menu_details"), this, SLOT(openDetailsSlot()));
+        }
     }
 }
 
@@ -335,6 +324,13 @@
     {
         createContextMenu();
     }
+    
+    if (!mContextMenu)
+    {
+        // failed to create context menu, return
+        return;
+    }
+    
 	int menuActionCount = 0;
     HbAction *action = 0;
     foreach(action, mContextMenuActions.values())
@@ -361,8 +357,7 @@
     {
     	if (!mIsService)
     	{
-			mContextMenuActions[EACtionAddToCollection]->setVisible(true);
-    		mContextMenuActions[EActionShare]->setVisible(true);
+			mContextMenuActions[EActionAddToCollection]->setVisible(true);
     		mContextMenuActions[EActionDelete]->setVisible(true);
     	}
     	else
@@ -376,15 +371,14 @@
 		if(!mIsService)
 		{
             mContextMenuActions[EActionRename]->setVisible(true);
-            mContextMenuActions[EACtionRemoveCollection]->setVisible(true);
+            mContextMenuActions[EActionRemoveCollection]->setVisible(true);
 		}
     }
     else if(mCurrentLevel == VideoCollectionCommon::ELevelAlbum)
     {
     	if (!mIsService)
     	{
-			mContextMenuActions[EACtionRemoveFromCollection]->setVisible(true);
-            mContextMenuActions[EActionShare]->setVisible(true);
+			mContextMenuActions[EActionRemove]->setVisible(true);
             mContextMenuActions[EActionDelete]->setVisible(true);
     	}
     	else
@@ -412,6 +406,17 @@
 //
 void VideoListWidget::emitActivated (const QModelIndex &modelIndex)
 {
+    // surprisingly interenting feature: after long press also single press
+    // is executed. as a workaround the following hack check is needed.
+    // otherwise after the context menu is shown also single press action
+    // is executed.
+    if (mContextMenu &&
+        mContextMenu->isVisible())
+    {
+        // do not activate context menu if it is already visible
+        return;
+    }
+    
     if(mSelectionMode != HbAbstractItemView::NoSelection)
     {
         // no custom functionality defined
@@ -432,10 +437,9 @@
             // signal view that item has been activated
             emit(collectionOpened(true,
                 variant.toStringList().first(),
-                modelIndex));
-            
-            return;
+                modelIndex));                       
         }
+        return;
     }
     if(mIsService && (mCurrentLevel != VideoCollectionCommon::ELevelCategory))
     {
@@ -478,38 +482,50 @@
 //
 void VideoListWidget::longPressGesture (const QPointF &point)
 {
-    if (!mDetailsReady)
-    {
-        emit command(MpxHbVideoCommon::LoadVideoDetailsView);
-        mDetailsReady = true;
-    }
     if(mSelectionMode != HbAbstractItemView::NoSelection)
     {
         // do not activate context menu during selection mode
         return;
     }
 
-	QModelIndex index = currentIndex();
-    if(mModel && index.isValid())
-    {   
-    	TMPXItemId mpxId = mModel->getMediaIdAtIndex(index);
-    	// Only videos and user created albums have context menu.
-    	if((mpxId.iId2 == KVcxMvcMediaTypeVideo) ||
-    	   (!mIsService && mpxId.iId2 == KVcxMvcMediaTypeAlbum ))
-    	{
-            setContextMenu();
-            // if menu not yet exists, it has been created
-            // setup might fail causing menu to be removed
-            if(mContextMenu)
+    HbAbstractViewItem *viewItem = itemAtPosition(point);
+    if (viewItem)
+    {
+        QModelIndex index = viewItem->modelIndex();
+        if(mModel && index.isValid())
+        {   
+            TMPXItemId mpxId = mModel->getMediaIdAtIndex(index);
+            // Only videos and user created albums have context menu.
+            if((mpxId.iId2 == KVcxMvcMediaTypeVideo) ||
+               (!mIsService && mpxId.iId2 == KVcxMvcMediaTypeAlbum ))
             {
-                mContextMenu->exec(point);
+                setContextMenu();
+                // if menu not yet exists, it has been created
+                // setup might fail causing menu to be removed
+                if(mContextMenu)
+                {
+                    mContextMenu->setPreferredPos(point);
+                    mContextMenu->show();
+                }
             }
-    	}
+        }
     }
 	HbListView::longPressGesture(point);
 }
 
 // ---------------------------------------------------------------------------
+// doDelayedsSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListWidget::doDelayedsSlot()
+{
+	if (!mContextMenu)
+	{
+		createContextMenu();
+	}
+}
+
+// ---------------------------------------------------------------------------
 // playItemSlot
 // ---------------------------------------------------------------------------
 //
@@ -561,6 +577,27 @@
 }
 
 // ---------------------------------------------------------------------------
+// removeFromCollectionSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListWidget::removeFromCollectionSlot()
+{
+    if(!mModel)
+    {
+        return;
+    }
+    TMPXItemId collectionId = mModel->getOpenItem();
+    TMPXItemId itemId = mModel->getMediaIdAtIndex(currentIndex());
+    if(collectionId != TMPXItemId::InvalidId() && 
+       itemId != TMPXItemId::InvalidId())
+    {
+        QList<TMPXItemId> ids;
+        ids.append(itemId);
+        mModel->removeItemsFromAlbum(collectionId, ids);
+    }
+}
+
+// ---------------------------------------------------------------------------
 // removeCollectionSlot
 // ---------------------------------------------------------------------------
 //
@@ -603,9 +640,11 @@
 //
 void VideoListWidget::back()
 {
+	// Empty the proxy model causing the items to be removed from list widget.
+    mModel->setAlbumInUse(TMPXItemId::InvalidId());
     if(mModel)
     {
-    	emit collectionOpened(false, QString(), QModelIndex());
+        emit collectionOpened(false, QString(), QModelIndex());
     }
 }
 
--- a/videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testcollectionview/inc/testcollectionview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -29,15 +29,17 @@
 {
     Q_OBJECT
 
+public:
+    
+    TestCollectionView();
+    
     /**
      * call to init a testcase
-     *
      */
     void init(); 
     
     /**
      * call to cleanup a testcase
-     *
      */
     void cleanup();
     
--- a/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testcollectionview/src/testcollectionview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -19,6 +19,7 @@
 #include <hbapplication.h>
 #include <hbinstance.h>
 #include <hblabel.h>
+
 #include "videocollectionuiloader.h"
 #include "testcollectionview.h"
 #include "videocollectioncommon.h"
@@ -39,6 +40,7 @@
 {
     HbApplication app(argc, argv);
     HbMainWindow window;
+    hbInstance->mWindowses.append(&window);
 
     TestCollectionView tv;
 
@@ -59,6 +61,16 @@
     return res;
 }
 
+
+// ---------------------------------------------------------------------------
+// TestCollectionView
+// ---------------------------------------------------------------------------
+//
+TestCollectionView::TestCollectionView()
+ : mTestView(0)
+{
+}
+
 // ---------------------------------------------------------------------------
 // initTestCase
 // ---------------------------------------------------------------------------
@@ -83,6 +95,7 @@
 //
 void TestCollectionView::init()
 {
+    cleanup();
     VideoCollectionUiLoaderData::reset();
     VideoListViewData::reset();
         
@@ -123,6 +136,7 @@
 //
 void TestCollectionView::testCreateView()
 {
+    cleanup();
     VideoCollectionUiLoaderData::reset();
     VideoListViewData::reset();
     
@@ -130,11 +144,12 @@
 	
 	mTestView = new VideoCollectionViewPlugin();
 
-    QVERIFY( mTestView->mView == NULL );
+    QVERIFY( mTestView->mView == 0 );
 
     mTestView->createView();
 
-    QVERIFY( mTestView->mView == NULL );
+    QVERIFY( mTestView->mView == 0 );
+    QVERIFY( mTestView->mUiLoader != 0);
 
     delete mTestView;
 
@@ -142,11 +157,12 @@
 	
 	mTestView = new VideoCollectionViewPlugin();
 
-    QVERIFY( mTestView->mView == NULL );
+    QVERIFY( mTestView->mView == 0 );
 
     mTestView->createView();
 
-    QVERIFY( mTestView->mView != NULL );
+    QVERIFY( mTestView->mView != 0 );
+    QVERIFY( mTestView->mUiLoader != 0);
     QCOMPARE( VideoListViewData::mInitializeViewCount, 1 );
     QVERIFY( mTestView->mActivated == false );
 
@@ -186,14 +202,7 @@
     QCOMPARE( VideoListViewData::mActivateViewCount, 1 );
 
     mTestView->activateView();
-    HbAction *tmpAction = 0;
-    HbMainWindow *window = hbInstance->allMainWindows().value(0);
-    if (window)
-    {
-        tmpAction = window->softKeyAction(Hb::SecondarySoftKey);
-    }
     QCOMPARE( VideoListViewData::mActivateViewCount, 1 );
-    QVERIFY(tmpAction != 0);
 
     cleanup();
 }
@@ -214,7 +223,6 @@
 
     mTestView->deactivateView();
     QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 );
-
     QVERIFY( mTestView->mActivated == false );
 
     mTestView->deactivateView();
@@ -232,20 +240,30 @@
 {
     init();
 
+    // remove view from mainwindow so that we don't get hanging pointers there, as
+    // the test is creating and destroying view several times.
+    HbMainWindow *window = hbInstance->allMainWindows().value(0);
+    QVERIFY(window);
+    window->removeView(mTestView->mView);
+    
     mTestView->activateView();
-
+    
     mTestView->destroyView();
 
     QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 );
     QVERIFY( mTestView->mActivated == false );
     QVERIFY( mTestView->mView == 0 );
+    QVERIFY( mTestView->mUiLoader == 0);
 
     mTestView->createView();
     QVERIFY( mTestView->mView != 0 );
+    QVERIFY( mTestView->mUiLoader != 0);
+    
     mTestView->destroyView();
     QCOMPARE( VideoListViewData::mDeactivateViewCount, 1 );
     QVERIFY( mTestView->mActivated == false );
     QVERIFY( mTestView->mView == 0 );
+    QVERIFY( mTestView->mUiLoader == 0);
 
     cleanup();
 }
@@ -256,6 +274,7 @@
 //
 void TestCollectionView::testGetView()
 {
+    cleanup();
     mTestView = new VideoCollectionViewPlugin();
 
     QVERIFY( mTestView->getView() == 0 );
@@ -294,13 +313,11 @@
 //
 void TestCollectionView::testOrientationChange()
 {
-    // there's nothing to be tested yet for this.
-    // implementation is requires due inherited mpxviewplugin
+    // there's nothing to be tested for this.
+    // slot is probably going to be removed. This is here just to have the
+    // function decision coverage on correct level.
     init();
-    QVERIFY(mTestView);
     mTestView->orientationChange(Qt::Horizontal);
-    mTestView->orientationChange(Qt::Vertical);
-
     cleanup();
 }
 
--- a/videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testcollectionview/testcollectionview.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -20,54 +20,28 @@
 
 DEPENDPATH += . \
     inc \
-    src
-    
+    src \
+    ../../../tsrc/stubs
+
 INCLUDEPATH += . \
     inc \
     ../../../tsrc/stubs/inc \
     \ # keep these at bottom so that stubbed headers are taken first
     ../../../inc \
     ../../../videocollectionview/inc \
-    ../../../videocollectionwrapper/inc
-    
-CONFIG += qtestlib \
-    Hb \
-    symbian_test
-          
-LIBS += -lestor.dll \
-    -lfbscli.dll \
-    -lbitgdi.dll \
-    -lgdi.dll \
-    -lxqplugins.dll \
-    -lmpxviewframeworkqt.dll \
-    -lvideocollectionwrapper.dll
+    ../../../videocollectionwrapper/inc \
+    ../../../../inc \
+    ../../../../videoplayerapp/videoplayerengine/inc
 
 HEADERS +=  inc/testcollectionview.h \
     \ # headers needed in test
     ../../inc/videocollectionviewplugin.h \
-    \ # headers needed in stubs
-    ../../../videocollectionview/inc/videocollectionuiloader.h \
-    ../../../videocollectionview/inc/videocollectionviewutils.h \
-    ../../../videocollectionview/inc/videolistview.h \
-    ../../../videocollectionview/inc/videolistwidget.h \
-    ../../../videocollectionview/inc/videolistselectiondialog.h \
-    ../../../videocollectionview/inc/videohintwidget.h
            
 SOURCES +=  src/testcollectionview.cpp \
     \ # sources needed in test
     ../../src/videocollectionviewplugin.cpp \
-    \ # sources needed in stubs
-    ../../../tsrc/stubs/src/hbmainwindow.cpp \
-    ../../../tsrc/stubs/src/hblistview.cpp \
-    ../../../tsrc/stubs/src/hbwidget.cpp \
-    ../../../tsrc/stubs/src/hbscrollbar.cpp \
-    ../../../tsrc/stubs/src/hbdialog.cpp \
-    ../../../tsrc/stubs/src/hbaction.cpp \
-    ../../../tsrc/stubs/src/videocollectionuiloader.cpp \
-    ../../../tsrc/stubs/src/videocollectionviewutils.cpp \
-    ../../../tsrc/stubs/src/videolistview.cpp \
-    ../../../tsrc/stubs/src/videolistwidget.cpp \
-    ../../../tsrc/stubs/src/videolistselectiondialog.cpp \
-    ../../../tsrc/stubs/src/videohintwidget.cpp
+
+TESTEDCLASS = videocollectionviewplugin
+include(../../../tsrc/stubs/stubs.pro)
 
 RESOURCES += ../../data/videocollectionview.qrc
--- a/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testhintwidget/inc/testhintwidget.h	Thu Apr 01 23:32:44 2010 +0300
@@ -51,7 +51,7 @@
     /**
      * test signal
      */
-    void testSignal();
+    void testSignal(Qt::Orientation);
 
 
 private:
@@ -67,8 +67,6 @@
      */
     VideoCollectionUiLoader* mUiLoader;
     
-    /** docml object list */
-    QObjectList mObjectList;
 };
 
 
--- a/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -41,6 +41,7 @@
     HbApplication app(argc, argv);
     HbApplication::setKeypadNavigationEnabled(false);
     HbMainWindow mainWnd;
+    hbInstance->mWindowses.append(&mainWnd);
 
     TestHintWidget tv;
     
@@ -89,11 +90,10 @@
 {
     mUiLoader = new VideoCollectionUiLoader;
     
+    HbDocumentLoader::mFindWidgetFails = false;
     bool ok(false);
-    bool shouldBeOk(VideoCollectionUiLoaderData::mFindFailure);
-    
-    mObjectList = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
-    if(!ok && shouldBeOk)
+    mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
+    if(!ok)
     {
         cleanup();
         QFAIL("docml loading failed!");
@@ -132,13 +132,6 @@
         mUiLoader = 0;
     }
 
-    int count = mObjectList.count();
-    for (int i = count - 1; i >= 0; i--)
-    {
-        QObject *object = mObjectList.takeAt(i);
-        delete object;
-    }
-    
     VideoCollectionViewUtilsData::reset();
     VideoCollectionUiLoaderData::reset();    
 }
@@ -204,9 +197,6 @@
 {
     init(true);
 
-    HbLabel *hintLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_HINT_LABEL);
-    QVERIFY(hintLabel);
-    
     mTestObject->setVisible(false);
     
     // mServiceIconString empty.
@@ -214,6 +204,7 @@
     mTestObject->activate();
     QVERIFY(mTestObject->mServiceIcon == 0);
     QVERIFY(mTestObject->isVisible() == false);
+    QVERIFY(mTestObject->mActivated == false);
     
     // mServiceIconPressedString empty.
     mTestObject->mServiceIconString = "test";
@@ -221,10 +212,13 @@
     mTestObject->activate();
     QVERIFY(mTestObject->mServiceIcon == 0);
     QVERIFY(mTestObject->isVisible() == false);
+    QVERIFY(mTestObject->mActivated == false);
     
     // successful case.
     mTestObject->mServiceIconPressedString = "test2";
-    hintLabel->setVisible(false);
+    HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
+    QVERIFY(noVideosLabel);
+    noVideosLabel->setVisible(false);
     
     mTestObject->activate();
     QVERIFY(mTestObject->isVisible());
@@ -232,7 +226,8 @@
     QCOMPARE(mTestObject->mServiceIcon->iconName(), mTestObject->mServiceIconString);
     QCOMPARE(mTestObject->mServiceIcon->iconName(QIcon::Normal, QIcon::On), 
                 mTestObject->mServiceIconPressedString);
-    QVERIFY(hintLabel->isVisible()); // checks that updateUiComponents() has been called.
+    QVERIFY(noVideosLabel->isVisible()); // checks that updateUiComponents() has been called.
+    QVERIFY(mTestObject->mActivated == true);
     
     cleanup();
 }
@@ -245,24 +240,40 @@
 {
     init(true);
     
+    mTestObject->setVisible(true);
+    mTestObject->mActivated = true;
+    
+    // when serviceButton does not exist
+    mTestObject->mServiceIcon = 0;
+    mTestObject->mAddVideosIcon = 0;
+    HbDocumentLoader::mFindWidgetFails = true;
+    mTestObject->deactivate();
+    QVERIFY(mTestObject->mActivated == false);
+    QVERIFY(mTestObject->isVisible() == false);
+    
+    // when icons are null, but servicebutton has non-null icon.
+    mTestObject->mActivated = true;
+    mTestObject->setVisible(true);
+    HbDocumentLoader::mFindWidgetFails = false;
     HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
     QVERIFY(serviceButton);
-    
-    mTestObject->setVisible(true);
-    
     serviceButton->setIcon(HbIcon(QIcon(QPixmap(QSize(100,100)))));
-    mTestObject->mServiceIcon = 0;
-    mTestObject->mAddVideosIcon = 0;
     QVERIFY(serviceButton->icon().isNull() == false); // make sure test is valid.
-    
     mTestObject->deactivate();
     QVERIFY(serviceButton->icon().isNull());
     QVERIFY(mTestObject->isVisible() == false);
     
+    // 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);
@@ -282,15 +293,21 @@
     
     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;
+    // when a widget cannot be found.
+    mTestObject->setLevel(VideoHintWidget::AllVideos);
+    // no verification possible except that it doesn't crash?
+    
+    HbDocumentLoader::mFindWidgetFails = false;
     HbLabel *hintLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_HINT_LABEL);
     QVERIFY(hintLabel);
     HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
     QVERIFY(serviceButton);
     
-    mTestObject->mServiceIcon = new HbIcon(QIcon(QPixmap(QSize(100,100))));
-    mTestObject->mAddVideosIcon = new HbIcon(QIcon(QPixmap(QSize(50,50))));
-    mTestObject->setVisible(true);
-    
     mainWnd->setOrientation(Qt::Vertical);
     mTestObject->setLevel(VideoHintWidget::AllVideos);
     QVERIFY(serviceButton->isVisible() == false);
@@ -299,12 +316,17 @@
     QVERIFY(hintLabel->isVisible());
     
     mainWnd->setOrientation(Qt::Horizontal);
+    mTestObject->mButtonShown = true;
     mTestObject->setLevel(VideoHintWidget::Collection);
     QVERIFY(serviceButton->isVisible());
     QVERIFY(serviceButton->icon().isNull() == false);
     QVERIFY(serviceButton->icon().qicon().cacheKey() == mTestObject->mAddVideosIcon->qicon().cacheKey());    
     QVERIFY(hintLabel->isVisible() == false);
     
+    mTestObject->mButtonShown = false;
+    mTestObject->setLevel(VideoHintWidget::Collection);
+    QVERIFY(serviceButton->isVisible() == false);
+    
     cleanup();
 }
 
@@ -319,37 +341,40 @@
     
     HbMainWindow *mainWnd = hbInstance->allMainWindows()[0];
     mainWnd->setOrientation(Qt::Horizontal);
+    connect(this, SIGNAL(testSignal(Qt::Orientation)), mainWnd, SIGNAL(orientationChanged(Qt::Orientation)));
     
     init(true);
     
-    HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
-    QVERIFY(serviceButton);
+    HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
+    QVERIFY(noVideosLabel);
 
     mTestObject->mServiceIconString = "dummy";
     mTestObject->mServiceIconPressedString = "dummy2";
     
     // test that updateUiComponents is not called when only initialize has been called,
     // ie that no activate calls have been made yet.
+    // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the 
+    // serviceButton->setVisible does not work as expected.
     mTestObject->setVisible(true);
-    serviceButton->setVisible(true);
-    mainWnd->setOrientation(Qt::Vertical);
-    QVERIFY(serviceButton->isVisible());
+    noVideosLabel->setVisible(true);
+    emit testSignal(Qt::Vertical);
+    QVERIFY(noVideosLabel->isVisible());
     mTestObject->setVisible(false);
         
     // tests that updateUiComponents is called when widget is visible.
     mTestObject->activate();
-    serviceButton->setVisible(false);
-    mainWnd->setOrientation(Qt::Horizontal);
-    QVERIFY(serviceButton->isVisible());    
+    noVideosLabel->setVisible(false);
+    emit testSignal(Qt::Horizontal);
+    QVERIFY(noVideosLabel->isVisible());    
     mTestObject->deactivate();
     
     // tests that updateUiComponents is not called when widget is not visible:
-    
-    // this is needed because othervise childs cannot be set visible, ie the next line does not work as expected.
+    // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the 
+    // serviceButton->setVisible does not work as expected.
     mTestObject->setVisible(true);    
-    serviceButton->setVisible(true);
-    mainWnd->setOrientation(Qt::Vertical);
-    QVERIFY(serviceButton->isVisible());
+    noVideosLabel->setVisible(true);
+    emit testSignal(Qt::Vertical);
+    QVERIFY(noVideosLabel->isVisible());
     
     cleanup();
 }
--- a/videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testhintwidget/testhintwidget.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -20,49 +20,28 @@
  
 DEPENDPATH += . \
     inc \
-    src
+    src \
+    ../../../tsrc/stubs
     
 INCLUDEPATH += . \
     inc \
     ../../../tsrc/stubs/inc \
-    \ # keep these at bottom so that stubbed headers are searched first
+    \ # keep these at bottom so that stubbed headers are taken first
     ../../../inc \
     ../../../videocollectionview/inc \
     ../../../videocollectionwrapper/inc \
+    ../../../../inc \
+    ../../../../videoplayerapp/videoplayerengine/inc
     
-CONFIG += qtestlib \
-    Hb \
-    symbian_test
-
-LIBS += -lestor.dll \
-    -lfbscli.dll \
-    -lbitgdi.dll \
-    -lgdi.dll \
-    -lvideocollectionwrapper.dll
-
 HEADERS +=  inc/testhintwidget.h \
     \ # headers needed in test
     ../../../videocollectionview/inc/videohintwidget.h \
-    \ # headers needed in stubs
-    ../../../videocollectionview/inc/videolistview.h \
-    ../../../videocollectionview/inc/videolistwidget.h \
-    ../../../videocollectionview/inc/videocollectionuiloader.h \
-    ../../../videocollectionview/inc/videocollectionviewutils.h \
-    ../../../videocollectionview/inc/videolistselectiondialog.h
-               
+           
 SOURCES +=  src/testhintwidget.cpp \
     \ # sources needed in test
     ../../../videocollectionview/src/videohintwidget.cpp \
-    \ # sources needed in stubs
-    ../../../tsrc/stubs/src/hblistview.cpp \
-    ../../../tsrc/stubs/src/hbwidget.cpp \
-    ../../../tsrc/stubs/src/hbscrollbar.cpp \
-    ../../../tsrc/stubs/src/hbdialog.cpp \
-    ../../../tsrc/stubs/src/hbaction.cpp \
-    ../../../tsrc/stubs/src/videocollectionuiloader.cpp \
-    ../../../tsrc/stubs/src/videocollectionviewutils.cpp \
-    ../../../tsrc/stubs/src/videolistview.cpp \
-    ../../../tsrc/stubs/src/videolistwidget.cpp \
-    ../../../tsrc/stubs/src/videolistselectiondialog.cpp
+
+TESTEDCLASS = videohintwidget
+include(../../../tsrc/stubs/stubs.pro)
 
 RESOURCES += ../../data/videocollectionview.qrc
--- a/videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistwidget/inc/testlistwidget.h	Thu Apr 01 23:32:44 2010 +0300
@@ -32,6 +32,7 @@
 class ListWidgetTester;
 class VideoServices;
 class VideoListDataModel;
+class VideoCollectionUiLoader;
 
 class TestListWidget : public QObject
 {
@@ -45,13 +46,19 @@
 private slots:
 
     /**
-     * will be called automaticallybefore each testfunction is executed.
+     * will be called automatically when test starts
+     *
+     */
+    void initTestCase();
+
+    /**
+     * will be called automatically before each testfunction is executed.
      *
      */
     void init();
 
     /**
-     * will be called automaticallybefore after every testfunction.
+     * will be called automatically after every testfunction.
      *
      */
     void cleanup();
@@ -98,9 +105,9 @@
     void testSetContextMenu();
     
     /**
-     * verifies shareItemSlot
+     * verifies doDelayedsSlot
      */
-    void testShareItemSlot();
+    void testDoDelayedsSlot();
     
     /**
      * verifies deleteItemSlot
@@ -113,19 +120,29 @@
     void testRenameSlot();
     
     /**
+     * verifies playItemSlot
+     */
+    void testPlayItemSlot();
+    
+    /**
      * verifies playAllSlot
      */
     void testPlayAllSlot();
     
     /**
-     * verifies addItemSlot
-     */
-    void testAddItemSlot();
-    
-    /**
-     * verifies addToCollectionSlot()
+     * verifies addToCollectionSlot
      */
     void testAddToCollectionSlot();
+
+    /**
+     * verifies removeFromCollectionSlot
+     */
+    void testRemoveFromCollectionSlot();
+    
+    /**    
+     * verifies removeCollectionSlot
+     */
+    void testRemoveCollectionSlot();
     
     /**
      * verifies openDetailsSlot()
@@ -138,6 +155,11 @@
     void testBack();
     
     /**
+     * verifies scrollingStartedSlot
+     */
+    void testScrollingStartedSlot();
+    
+    /**
      * verifies scrollingEndedSlot();
      */
     void testScrollingEndedSlot();
@@ -146,6 +168,11 @@
      * verifies scrollPositionChangedSlot();
      */
     void testScrollPositionChangedSlot();
+    
+    /**
+     * verifies scrollPositionTimerSlot()
+     */
+    void testScrollPositionTimerSlot();
 
 signals:
     
@@ -174,7 +201,11 @@
      * dummy main wnd
      */
     HbMainWindow *mDummyMainWnd;
-
+    
+    /**
+     * stub -uiloader
+     */
+    VideoCollectionUiLoader *mTestUiLoader;
 };
 
 
--- a/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistwidget/src/testlistwidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -29,6 +29,7 @@
 #include "hbmessagebox.h"
 #include "hbinstance.h"
 #include "hbmainwindow.h"
+#include "hbstyleloader.h"
 #include "videothumbnaildata.h"
 #include "videocollectioncommon.h"
 #include "videocollectionwrapper.h"
@@ -38,6 +39,11 @@
 #include "videolistdatamodel.h"
 #include "videolistdatamodeldata.h"
 #include "videosortfilterproxymodeldata.h"
+#include "videoservices.h"
+#include "videocollectionuiloader.h"
+#include "videocollectionuiloaderdata.h"
+#include "videolistselectiondialog.h"
+#include "videolistselectiondialogdata.h"
 #include "hbmessageboxdata.h"
 
 #include "testlistwidget.h"
@@ -87,7 +93,7 @@
 int main(int argc, char *argv[])
 {
     TestListWidget tv;
-
+    QApplication app(argc, argv);
     int res;
     if(argc > 1)
     {   
@@ -131,6 +137,15 @@
 }
 
 // ---------------------------------------------------------------------------
+// initTestCase
+// ---------------------------------------------------------------------------
+//
+void TestListWidget::initTestCase()
+{
+    qRegisterMetaType<QModelIndex>("QModelIndex");
+}
+
+// ---------------------------------------------------------------------------
 // init
 // ---------------------------------------------------------------------------
 //
@@ -138,8 +153,9 @@
 {
     mDummyMainWnd = new HbMainWindow;
     mTempView = new HbView;
-    
-    mTestWidget = new ListWidgetTester(0, mTempView);
+    mTestUiLoader = new VideoCollectionUiLoader();
+    hbInstance->mWindowses.append(mDummyMainWnd);
+    mTestWidget = new ListWidgetTester(mTestUiLoader, mTempView);
 }
 
 // ---------------------------------------------------------------------------
@@ -175,31 +191,22 @@
 {
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
-    
-    // no prototype
-    HbListView::mReturnNullPrototype = true;
-    QVERIFY(mTestWidget->initialize(*model) == -1);
-    HbListView::mReturnNullPrototype = false;
-    
-    // no scroll bar
-    HbListView::mVScrollBarIsNull = true;
-    QVERIFY(mTestWidget->initialize(*model) == -1);
 
     // succeed case ( new operator cannot be stubbed)
-    HbListView::mVScrollBarIsNull = false;
-    HbListView::mReturnNullPrototype = false;
     QVERIFY(mTestWidget->initialize(*model) == 0);
-    QCOMPARE(HbListView::mLatestrecycling, true);
-    QCOMPARE(HbListView::mLatestClamping, HbScrollArea::BounceBackClamping);
-    QCOMPARE(HbListView::mLatestScrolling, HbScrollArea::PanOrFlick);
-    QCOMPARE(HbListView::mLatestFrictionEnabled, true);
-    QCOMPARE(HbListView::mLatestUniformItemSizes, true);
-    QCOMPARE(HbListView::mLatestVisibility, false);
-    QCOMPARE(HbListView::mLatestEnableValue, false);    
-    QCOMPARE(HbScrollBar::mInteractive, true);    
 	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->mModel == model);  
+    QVERIFY(mTestWidget->mVideoServices == service);
+    QVERIFY(mTestWidget->mIsService == true);
+    service->decreaseReferenceCount();
+    service = 0;
+	
 }
  
 // ---------------------------------------------------------------------------
@@ -215,30 +222,83 @@
     QVERIFY(mTestWidget->activate() == -1);
     QCOMPARE(HbMenuData::mEnabledSetted, false);
     QCOMPARE(HbListView::mLatestVisibility, false);
-    QVERIFY(!HbListView::mLatestModel);
-    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0);
     
-    // no context menu, model exist: succeeds
+    // model exist, no current view default level: succeeds
     QVERIFY(mTestWidget->initialize(*model) == 0);
     QVERIFY(mTestWidget->activate() == 0);
     QCOMPARE(HbMenuData::mEnabledSetted, false);
     QCOMPARE(HbListView::mLatestVisibility, true);
-    QCOMPARE(HbListView::mLatestModel, model);
     QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
     
     HbMenuData::mEnabledSetted = true;
     HbListView::mLatestVisibility = false;
     HbListView::mLatestEnableValue = false;
-    HbListView::mLatestModel = 0;
     VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
     
-    // context menu exists, succeed (signal connecting failure cannot be tested here)
-    mTestWidget->mContextMenu = new HbMenu;
+    // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, 
+    // no mNavKeyQuitAction
+    HbView *tmpView = new HbView();
+    hbInstance->allMainWindows().value(0)->addView(tmpView);
+    HbAction *tmpAction = mTestWidget->mNavKeyQuitAction;
+    mTestWidget->mNavKeyQuitAction = 0;
+    QVERIFY(mTestWidget->activate() == 0);
+    QCOMPARE(HbMenuData::mEnabledSetted, true);
+    QCOMPARE(HbListView::mLatestVisibility, true);
+    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QVERIFY(!tmpView->mNavigationAction);
+    
+    HbMenuData::mEnabledSetted = true;
+    HbListView::mLatestVisibility = false;
+    HbListView::mLatestEnableValue = false;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
+    mTestWidget->mNavKeyQuitAction = tmpAction;
+    
+    // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, 
+    // mNavKeyQuitAction exists
     QVERIFY(mTestWidget->activate() == 0);
     QCOMPARE(HbMenuData::mEnabledSetted, true);
     QCOMPARE(HbListView::mLatestVisibility, true);
-    QCOMPARE(HbListView::mLatestModel, model);
+    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QVERIFY(tmpView->mNavigationAction == tmpAction);
+    
+    HbMenuData::mEnabledSetted = true;
+    HbListView::mLatestVisibility = false;
+    HbListView::mLatestEnableValue = false;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
+    
+    // model exists, current view exists, level is ELevelAlbum  
+    // no mNavKeyBackAction
+    tmpView->mNavigationAction = 0;
+    tmpAction = mTestWidget->mNavKeyBackAction;
+    mTestWidget->mNavKeyBackAction = 0;
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0);
+    QCOMPARE(HbMenuData::mEnabledSetted, true);
+    QCOMPARE(HbListView::mLatestVisibility, true);
     QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QVERIFY(!tmpView->mNavigationAction);
+       
+    HbMenuData::mEnabledSetted = true;
+    HbListView::mLatestVisibility = false;
+    HbListView::mLatestEnableValue = false;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
+    
+    mTestWidget->mNavKeyBackAction = tmpAction;
+    // model exists, current view exists, level neither ELevelAlbum nor ELevelDefaultColl, 
+    // mNavKeyBackAction exists
+    QVERIFY(mTestWidget->activate(VideoCollectionCommon::ELevelAlbum) == 0);
+    QCOMPARE(HbMenuData::mEnabledSetted, true);
+    QCOMPARE(HbListView::mLatestVisibility, true);
+    QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 1);
+    QVERIFY(tmpView->mNavigationAction == tmpAction);
+    
+    HbMenuData::mEnabledSetted = true;
+    HbListView::mLatestVisibility = false;
+    HbListView::mLatestEnableValue = false;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
+            
+    hbInstance->allMainWindows().value(0)->removeView(tmpView);
+    delete tmpView;
 }
  
 // ---------------------------------------------------------------------------
@@ -250,28 +310,25 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
 
-    HbMenuData::mEnabledSetted = false;
-    HbListView::mLatestVisibility = false;
-    HbListView::mLatestEnableValue = false;
-    HbListView::mLatestModel = 0;
-    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 0;
-    VideoSortFilterProxyModel *nullModel = 0;
+    HbListView::mLatestVisibility = true;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 1;
     
     mTestWidget->activate();
     
     // no context menu and activated without model
     mTestWidget->deactivate();
     QCOMPARE(HbListView::mLatestVisibility, false);
-    QCOMPARE(HbListView::mLatestModel, nullModel);
     QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0);
     
+    HbListView::mLatestVisibility = true;
+    VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled = 1;
+    
     // context menu exists and activated with model
     mTestWidget->mContextMenu = new HbMenu;
     QVERIFY(mTestWidget->initialize(*model) == 0);
     mTestWidget->activate();
     mTestWidget->deactivate();
-    QCOMPARE(HbListView::mLatestVisibility, true);
-    QCOMPARE(HbListView::mLatestModel, model);
+    QCOMPARE(HbListView::mLatestVisibility, false);
     QCOMPARE(VideoThumbnailTestData::mBackgroundThumbnailFetchingEnabled, 0);
    
 }
@@ -318,71 +375,118 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
 
-    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&)));
+    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)));
+    QSignalSpy spysignalFileUri(mTestWidget, SIGNAL(fileUri(const QString&)));
+    QSignalSpy spysignalActivated(mTestWidget, SIGNAL(activated(const QModelIndex&)));
+    
     mTestWidget->initialize(*model);
-    mTestWidget->activate();
-    hbInstance->mWindowses.append(mDummyMainWnd);
+    mTestWidget->activate();    
     
+    VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId();
+    TMPXItemId savedId = TMPXItemId(1,1);
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
     QVariant data = QString("test");
-    // correct data to index 0
     VideoListDataModelData::setData( Qt::DisplayRole, data);
-    setRowCount(1);
+    setRowCount(2);
     VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(0,0));
     
     QModelIndex fetchIndex = model->index(0, 0, QModelIndex());
     
     // selection mode == HbAbstractItemView::MultiSelection
-    HbListView::mSelectionMode = HbAbstractItemView::MultiSelection;
+    mTestWidget->setSelectionMode(HbAbstractItemView::MultiSelection);
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
-    QVERIFY(mDummyMainWnd->mSoftKeyAction == 0);
-    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    spysignal.clear();
+    spysignalFileUri.clear();
+    spysignalActivated.clear();
     
     // modelIndex is not valid
-    HbListView::mSelectionMode = HbAbstractItemView::NoSelection;
+    mTestWidget->setSelectionMode(HbAbstractItemView::NoSelection);
     fetchIndex = QModelIndex();
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
-    QVERIFY(mDummyMainWnd->mSoftKeyAction == 0);
-    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
-
-    // current level is not ELevelCategory
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+   
+    // current level is ELevelCategory
+    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
+    // --> variant is not valid 
+    VideoListDataModelData::setData( Qt::DisplayRole, QVariant());
     fetchIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
-    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0);
-    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
     
-    // current level is ELevelCategory
-    mTestWidget->mCurrentLevel= VideoCollectionCommon::ELevelCategory;
 
-    // -> getType() != ECollections
+    // --> variant is valid, collectionOpened -signal should be emitted
+    VideoListDataModelData::setData( Qt::DisplayRole, data);
+    fetchIndex = model->index(1, 0, QModelIndex());
+    mTestWidget->callEmiteActivated(fetchIndex);
+    QVERIFY(spysignal.count() == 1);
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+  
+    spysignal.clear();
+    spysignalFileUri.clear();
+    spysignalActivated.clear();
+    
+    // current level is not ELevelCategory
+    // mIsService is true, variant gotten is invalid
+    VideoListDataModelData::setData( Qt::DisplayRole, QVariant());
+    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+    mTestWidget->mIsService = true;
+    fetchIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
-    QVERIFY(mDummyMainWnd->mSoftKeyAction == 0);
-    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0);
-    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
     
-    // -> getType() == ECollections
-
-    // --> variant is not valid (invalid data at row index 1)
-    fetchIndex = model->index(1, 0, QModelIndex());
+    // current level is not ELevelCategory
+    // mIsService is true, variant gotten is valid
+    VideoListDataModelData::setData( VideoCollectionCommon::KeyFilePath, data);
+    fetchIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
     QVERIFY(spysignal.count() == 0);
-    QVERIFY(mDummyMainWnd->mSoftKeyAction == 0);
-    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 1);
-    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
-
-    // --> variant is valid (correct data at index 0),5 collectionOpened -signal should be emitted
-    mDummyMainWnd->mSoftKeyAction = 0;
+    QVERIFY(spysignalFileUri.count() == 1);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    
+    spysignal.clear();
+    spysignalFileUri.clear();
+    spysignalActivated.clear();
+    
+    // current level is not ELevelCategory
+    // mIsService is false
+    mTestWidget->mIsService = false;
     fetchIndex = model->index(0, 0, QModelIndex());
     mTestWidget->callEmiteActivated(fetchIndex);
-    QVERIFY(spysignal.count() == 1);
-//    QVERIFY(mDummyMainWnd->mSoftKeyAction == mTestWidget->mSecSkAction);
-    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0);
-    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
-  
-    hbInstance->mWindowses.clear();
+    QVERIFY(spysignal.count() == 0);
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == savedId);
+    
+    // context menu is visible
+    if (!mTestWidget->mContextMenu)
+    {
+        mTestWidget->mContextMenu = new HbMenu;
+    }
+    mTestWidget->mContextMenu->show();
+    VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId();
+    fetchIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->callEmiteActivated(fetchIndex);
+    QVERIFY(spysignal.count() == 0);
+    QVERIFY(spysignalFileUri.count() == 0);
+    QVERIFY(spysignalActivated.count() == 0);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
 }
  
 
@@ -398,111 +502,103 @@
     QVariant data = QString("test");
     // correct data to index 0
     VideoListDataModelData::setData( Qt::DisplayRole, data);
-    setRowCount(1);
+    setRowCount(2);
     
     QPointF point(1,1);
-
-    QSignalSpy spysignal(mTestWidget, SIGNAL(command(int)));
     mTestWidget->initialize(*model);
-    hbInstance->mWindowses.append(mDummyMainWnd);
     
-    HbListView::mSelectionMode = HbAbstractItemView::MultiSelection;
+    mTestWidget->setSelectionMode(HbAbstractItemView::MultiSelection);
     // mDetailsReady is false
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 1);
     QVERIFY(HbMenuData::mExecPoint != point);
     QVERIFY(HbListView::mLongPressedPoint != point);
-    spysignal.clear();
     
     // multiselection is on
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
+    QVERIFY(HbMenuData::mExecPoint != point);
+    
+    // selection mode is custom
+    mTestWidget->setSelectionMode(-1);
+    
+    mTestWidget->callLongPressGesture(point);
     QVERIFY(HbMenuData::mExecPoint != point);
         
-    // current index is invalid
-    HbListView::mSelectionMode = HbAbstractItemView::NoSelection;
+    // item at position is null
+    HbListViewItem *pTmp = mTestWidget->mItem;
+    mTestWidget->mItem = 0;
+    mTestWidget->setSelectionMode(HbAbstractItemView::NoSelection);
     HbListView::mCurrentIndex = QModelIndex();    
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
     QVERIFY(HbMenuData::mExecPoint != point);
     QVERIFY(HbListView::mLongPressedPoint == point);
     
-    // current index is valid
+    // item at position is not null, but returns invalid index
+    mTestWidget->mItem = pTmp;
+    mTestWidget->mItem->mModelIndex = QModelIndex();
+    mTestWidget->callLongPressGesture(point);
+    QVERIFY(HbMenuData::mExecPoint != point);
+    QVERIFY(HbListView::mLongPressedPoint == point);
+    
+    // item at position is not null, returns current index is valid
     HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ;
     
     // model is == 0
     VideoSortFilterProxyModel *tmp = mTestWidget->mModel;
     mTestWidget->mModel = 0;
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
     QVERIFY(HbMenuData::mExecPoint != point);
     QVERIFY(HbListView::mLongPressedPoint == point);
     mTestWidget->mModel = tmp;
+    HbListView::mLongPressedPoint = QPointF();
     
-    // mCurrentLevel != ELevelCategory
-    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+    // gotten id != KVcxMvcMediaTypeVideo, service is true and id !=  KVcxMvcMediaTypeAlbum
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1));
+    mTestWidget->mIsService = true;
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
-    QVERIFY(HbMenuData::mExecPoint == point);
+    QVERIFY(HbMenuData::mExecPoint != point);
     QVERIFY(HbListView::mLongPressedPoint == point);
-    HbMenuData::mExecPoint = QPointF();
+    HbListView::mLongPressedPoint = QPointF();
     
-    // mCurrentLevel == ELevelCategory
-    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
+    // gotten id != KVcxMvcMediaTypeVideo, service is false and id !=  KVcxMvcMediaTypeAlbum
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,1));
+    mTestWidget->mIsService = false;
+    mTestWidget->callLongPressGesture(point);
+    QVERIFY(HbMenuData::mExecPoint != point);
+    QVERIFY(HbListView::mLongPressedPoint == point);
+    HbListView::mLongPressedPoint = QPointF();
     
-    // --> mpxId.iId2 != 1
-    TMPXItemId itemId;
-    itemId.iId2 = 0;
-    VideoSortFilterProxyModelData::mItemIds.append(itemId);
+    // gotten id != KVcxMvcMediaTypeVideo, service is false and id ==  KVcxMvcMediaTypeAlbum
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,2));
+    mTestWidget->mIsService = false;
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
     QVERIFY(HbMenuData::mExecPoint == point);
     QVERIFY(HbListView::mLongPressedPoint == point);
     HbMenuData::mExecPoint = QPointF();
-    VideoSortFilterProxyModelData::mItemIds.clear();
-    
-    // --> mpxId.iId2 == 1
-    itemId.iId2 = 1;
+    HbListView::mLongPressedPoint = QPointF();
     
-    // ---> mpxId.iId1 == KVcxMvcCategoryIdDownloads
-    itemId.iId1 = KVcxMvcCategoryIdDownloads;
-    VideoSortFilterProxyModelData::mItemIds.append(itemId);
+    // gotten id == KVcxMvcMediaTypeVideo
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,02));
+    mTestWidget->mIsService = false;
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
     QVERIFY(HbMenuData::mExecPoint == point);
     QVERIFY(HbListView::mLongPressedPoint == point);
     HbMenuData::mExecPoint = QPointF();
-    VideoSortFilterProxyModelData::mItemIds.clear();
+    HbListView::mLongPressedPoint = QPointF();
     
-    // ---> mpxId.iId1 == KVcxMvcCategoryIdCaptured
-    itemId.iId1 = KVcxMvcCategoryIdCaptured;
-    VideoSortFilterProxyModelData::mItemIds.append(itemId);
-    mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
-    QVERIFY(HbMenuData::mExecPoint == point);
-    QVERIFY(HbListView::mLongPressedPoint == point);
-    HbMenuData::mExecPoint = QPointF();
-    VideoSortFilterProxyModelData::mItemIds.clear();
-    
-    // ---> mpxId.iId1 != KVcxMvcCategoryIdDownloads and mpxId.iId1 != KVcxMvcCategoryIdCaptured
-    itemId.iId1 = KVcxMvcCategoryIdAll;
-    VideoSortFilterProxyModelData::mItemIds.append(itemId);
-    mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
-    QVERIFY(HbMenuData::mExecPoint == point);
-    QVERIFY(HbListView::mLongPressedPoint == point);
-    HbMenuData::mExecPoint = QPointF();  
-    
-    // context menu setup fails, due invalid amount of correct actions
+    // no context menu
+    // (context menu setup fails, due invalid amount of correct actions)
     QMap<VideoListWidget::TContextActionIds, HbAction*>::iterator iter = mTestWidget->mContextMenuActions.begin();
     iter++;
     HbAction *nullAction = 0;
     iter.value() = nullAction;
     mTestWidget->callLongPressGesture(point);
-    QVERIFY(spysignal.count() == 0);
     QVERIFY(HbMenuData::mExecPoint != point);
     QVERIFY(HbListView::mLongPressedPoint == point);
-   
 }
 
 // ---------------------------------------------------------------------------
@@ -514,10 +610,12 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
     VideoListDataModel *sourceModel = qobject_cast<VideoListDataModel*>(model->sourceModel());
-
     VideoSortFilterProxyModelData::mItemIds.clear();
     mTestWidget->initialize(*model);
-    hbInstance->mWindowses.append(mDummyMainWnd);
+    
+    setRowCount(1);
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ;
     
     TMPXItemId itemId;
     QPointF point(1,1);
@@ -544,7 +642,7 @@
         }
         ++iter;
     }
-    QVERIFY(visibleCount == 4);
+    QVERIFY(visibleCount == 3);
     
     // invalid amount of actions -> invalid items gets removed
     HbAction *nullAction = 0;
@@ -557,8 +655,8 @@
     
     // mCurrentLevel == ELevelCategory
     mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
-    // --> getType returns ECollections
-    // ---> default collection flag is on
+    // mIsService is false
+    mTestWidget->mIsService = false;
     mTestWidget->callLongPressGesture(point);
     iter = mTestWidget->mContextMenuActions.begin();
     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
@@ -569,81 +667,116 @@
         {
             visibleCount++;   
          }
-         ++iter;
-     }
-     QVERIFY(visibleCount == 0);
+        ++iter;
+    }
+    QVERIFY(visibleCount == 2);
     
-     // ---> default collection flag is off
-     VideoSortFilterProxyModelData::mItemIds.clear();
-     itemId.iId2 = 1;
-     itemId.iId1 = KVcxMvcCategoryIdAll;
-     VideoSortFilterProxyModelData::mItemIds.append(itemId);
-     mTestWidget->callLongPressGesture(point);
-     iter = mTestWidget->mContextMenuActions.begin();
-     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
-     visibleCount = 0;
-     while(iter != mTestWidget->mContextMenuActions.end())
-     {
-         if(iter.value()->mVisible)
-         {
-             visibleCount++;   
-         }
-         ++iter;
-     }
-     QVERIFY(visibleCount == 4);
+    // mIsService is true
+    mTestWidget->mIsService = true;
+    mTestWidget->callLongPressGesture(point);
+    iter = mTestWidget->mContextMenuActions.begin();
+    QVERIFY(iter != mTestWidget->mContextMenuActions.end());
+    visibleCount = 0;
+    while(iter != mTestWidget->mContextMenuActions.end())
+    {
+        if(iter.value()->mVisible)
+        {
+            visibleCount++;   
+        }
+        ++iter;
+    }
+    QVERIFY(visibleCount == 0);
+    
+    // mCurrentLevel == ELevelAlbum
+    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
+    // mIsService is false
+    mTestWidget->mIsService = false;
+    mTestWidget->callLongPressGesture(point);
+    iter = mTestWidget->mContextMenuActions.begin();
+    QVERIFY(iter != mTestWidget->mContextMenuActions.end());
+    visibleCount = 0;
+    while(iter != mTestWidget->mContextMenuActions.end())
+    {
+        if(iter.value()->mVisible)
+        {
+            visibleCount++;   
+        }
+        ++iter;
+    }
+    QVERIFY(visibleCount == 3);    
     
-    // --> getType returns EUserColItems
-     mTestWidget->callLongPressGesture(point);
-     iter = mTestWidget->mContextMenuActions.begin();
-     QVERIFY(iter != mTestWidget->mContextMenuActions.end());
-     visibleCount = 0;
-     while(iter != mTestWidget->mContextMenuActions.end())
-     {
-         if(iter.value()->mVisible)
-         {
-             visibleCount++;   
-         }
-         ++iter;
-     }
-     QVERIFY(visibleCount == 4);    
-     
-     // --> getType returns EUnknow
-     mTestWidget->mCurrentLevel = (VideoCollectionCommon::TCollectionLevels)0;
-     mTestWidget->callLongPressGesture(point);
-      iter = mTestWidget->mContextMenuActions.begin();
-      QVERIFY(iter != mTestWidget->mContextMenuActions.end());
-      visibleCount = 0;
-      while(iter != mTestWidget->mContextMenuActions.end())
-      {
-          if(iter.value()->mVisible)
-          {
-              visibleCount++;   
-          }
-          ++iter;
-      }
-      QVERIFY(visibleCount == 0);    
+    // mIsService is true
+    // object needs to be resetted for the service use
+    cleanup();
+    init();
+    setRowCount(1);
+    model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
+    mTestWidget->initialize(*model);
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    mTestWidget->mItem->mModelIndex = HbListView::mCurrentIndex ;
+    
+    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
+    VideoSortFilterProxyModelData::mItemIds.append(itemId);
+    mTestWidget->mIsService = true;
+    mTestWidget->callLongPressGesture(point);
+    iter = mTestWidget->mContextMenuActions.begin();
+    QVERIFY(iter != mTestWidget->mContextMenuActions.end());
+    visibleCount = 0;
+    while(iter != mTestWidget->mContextMenuActions.end())
+    {
+        if(iter.value()->mVisible)
+        {
+            visibleCount++;   
+        }
+        ++iter;
+    }
+    QVERIFY(visibleCount == 2);    
+      
+    //invalid level
+    mTestWidget->mCurrentLevel = (VideoCollectionCommon::TCollectionLevels)0;
+    mTestWidget->callLongPressGesture(point);
+    iter = mTestWidget->mContextMenuActions.begin();
+    QVERIFY(iter != mTestWidget->mContextMenuActions.end());
+    visibleCount = 0;
+    while(iter != mTestWidget->mContextMenuActions.end())
+    {
+        if(iter.value()->mVisible)
+        {
+            visibleCount++;   
+        }
+        ++iter;
+    }
+    QVERIFY(visibleCount == 0);    
 }
-  
-// ---------------------------------------------------------------------------
-// testShareItemSlot
-// ---------------------------------------------------------------------------
-//
-void TestListWidget::testShareItemSlot()
+
+void TestListWidget::testDoDelayedsSlot()
 {
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(doDelayedsSlot()));
+    
+    //dodelayed calls create context menu, which is already tested at
+    // testSetContextMenu -method, these tests are just for coverity's sake
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
-    VideoListDataModel *sourceModel = qobject_cast<VideoListDataModel*>(model->sourceModel());
+    mTestWidget->initialize(*model);
+    
+    delete mTestWidget->mContextMenu;
+    mTestWidget->mContextMenu = 0;   
+    int visibleCount = 0;
+    mTestWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+    
+    // no context menu
+    emit testSignal();
+    
+    QVERIFY(mTestWidget->mContextMenuActions.count() == 6);
+   
+    // context menu exists
+    emit testSignal();
+   
+    QVERIFY(mTestWidget->mContextMenuActions.count() == 6);
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot()));
+}
 
-    // nothing to test yet
-    HbMessageBoxData::mLatestTxt = "";
-    mTestWidget->initialize(*model);
-    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(shareItemSlot()));
-    emit testSignal();
-    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
-    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(shareItemSlot()));
-    
-}
- 
 // ---------------------------------------------------------------------------
 // testDeleteItemSlot
 // ---------------------------------------------------------------------------
@@ -668,14 +801,6 @@
     setRowCount(1);
     mTestWidget->mModel = tmp;
     
-    // current index is invalid
-    mTestWidget->mCurrentIndex = QModelIndex();
-    emit testSignal();
-    QVERIFY(VideoListDataModelData::dataAccessCount() == 1);
-    QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty());
-    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
-    setRowCount(0);
-    
     // data fetched from item is invalid
     setRowCount(1);
     mTestWidget->mCurrentIndex = model->index(0, 0, QModelIndex()); 
@@ -694,18 +819,19 @@
     // messagebox question returns false
     HbMessageBoxData::mQuestionReturnValue = false;
     emit testSignal();
-    QVERIFY(VideoListDataModelData::dataAccessCount() == 1);
+    QVERIFY(VideoListDataModelData::dataAccessCount() == 2);
     QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
-    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());;
+    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
     HbMessageBoxData::mLatestTxt = "";
     setRowCount(1);
     data = QString("test");
     VideoListDataModelData::setData( Qt::DisplayRole, data);
     
     // messagebox question returns true
+    VideoSortFilterProxyModelData::mDeleteItemsFails = false;
     HbMessageBoxData::mQuestionReturnValue = true;
     emit testSignal();
-    QVERIFY(VideoListDataModelData::dataAccessCount() == 1);
+    QVERIFY(VideoListDataModelData::dataAccessCount() == 3);
     QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
     QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 0);
     
@@ -731,40 +857,38 @@
 }
   
 // ---------------------------------------------------------------------------
+// testPlayItemSlot
+// ---------------------------------------------------------------------------
+//
+void TestListWidget::testPlayItemSlot()
+{
+    VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
+    VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
+    mTestWidget->initialize(*model);
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playItemSlot()));
+    setRowCount(1);
+    TMPXItemId savedId = TMPXItemId(1,1);
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    
+    emit testSignal();
+    
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == savedId);
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playItemSlot()));    
+}
+
+// ---------------------------------------------------------------------------
 // testPlayAllSlot
 // ---------------------------------------------------------------------------
 //
 void TestListWidget::testPlayAllSlot()
 {
-    VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
-    VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
-
-    // nothing to test yet
-    HbMessageBoxData::mLatestTxt = "";
-    mTestWidget->initialize(*model);
-    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot()));
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot())); 
     emit testSignal();
-    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
     disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(playAllSlot()));    
 }
- 
-// ---------------------------------------------------------------------------
-// testAddItemSlot
-// ---------------------------------------------------------------------------
-//
-void TestListWidget::testAddItemSlot()
-{
-    VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
-    VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
-
-    // nothing to test yet
-    HbMessageBoxData::mLatestTxt = "";
-    mTestWidget->initialize(*model);
-    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addItemSlot()));
-    emit testSignal();
-    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
-    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addItemSlot()));    
-}
   
 // ---------------------------------------------------------------------------
 // testAddToCollectionSlot
@@ -775,16 +899,156 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
 
-    // nothing to test yet
-    HbMessageBoxData::mLatestTxt = "";
-    mTestWidget->initialize(*model);
+    VideoListSelectionDialogData::mSelectionType = -1;
+    VideoListSelectionDialogData::mSettedMpxId = TMPXItemId::InvalidId();
+    
     connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot()));
+    setRowCount(1);
+    TMPXItemId savedId = TMPXItemId(1,1);
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    
+    // no model
     emit testSignal();
-    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
-    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot()));    
+    QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 );
+    QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId());
+
+    mTestWidget->initialize(*model);
+    // dialog finding fails
+    VideoCollectionUiLoaderData::mFindFailureNameList.append(DOCML_NAME_DIALOG);
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 );
+    QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId());
+    VideoCollectionUiLoaderData::mFindFailureNameList.clear();
+    
+    // invalid id at current index
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId());
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mSelectionType == -1 );
+    QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId());
+    
+    // valid id at current index
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::ESelectCollection );
+    QVERIFY(VideoListSelectionDialogData::mSettedMpxId == savedId);
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(addToCollectionSlot()));
+        
 }
  
 // ---------------------------------------------------------------------------
+// testRemoveFromCollectionSlot
+// ---------------------------------------------------------------------------
+// 
+void TestListWidget::testRemoveFromCollectionSlot()
+{
+    VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
+    VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
+
+    VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0;
+    VideoSortFilterProxyModelData::mLastItemId = TMPXItemId::InvalidId();
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeFromCollectionSlot()));
+    setRowCount(2);
+    TMPXItemId savedId = TMPXItemId(1,1);
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    // invalid id at index 0
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId());
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
+    HbListView::mCurrentIndex = model->index(1, 0, QModelIndex());
+    
+    // no model
+    emit testSignal();
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId  == TMPXItemId::InvalidId());
+    
+    mTestWidget->initialize(*model);
+    VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId::InvalidId();
+    
+    // collection id is invalid
+    emit testSignal();
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId  == TMPXItemId::InvalidId());
+    VideoSortFilterProxyModelData::mOpenedItemId = TMPXItemId(1,2);
+    
+    // media at current index is invalid
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    emit testSignal();
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId  == TMPXItemId::InvalidId());
+            
+    // all is ok
+    HbListView::mCurrentIndex = model->index(1, 0, QModelIndex());
+    emit testSignal();
+    
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId  == TMPXItemId(1,2));
+    // ids are to be saved at VideoSortFilterProxyModelData::mItemIds 
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == savedId);
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeFromCollectionSlot())); 
+}
+ 
+// ---------------------------------------------------------------------------
+// testRemoveCollectionSlot
+// ---------------------------------------------------------------------------
+//
+void TestListWidget::testRemoveCollectionSlot()
+{
+    VideoSortFilterProxyModelData::mRemoveAlbumsFails = false;
+    VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
+    VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
+    
+    HbMessageBoxData::mQuestionReturnValue = true;
+    HbMessageBoxData::mLatestTxt = "";
+    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
+    
+    setRowCount(1);
+    HbListView::mCurrentIndex = model->index(0, 0, QModelIndex());
+    
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeCollectionSlot()));
+    
+    setRowCount(2);
+    TMPXItemId savedId = TMPXItemId(1,1);
+    VideoSortFilterProxyModelData::mItemIds.clear();
+    // invalid id at index 0
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId::InvalidId());
+    VideoSortFilterProxyModelData::mItemIds.append(savedId);
+    HbListView::mCurrentIndex = model->index(1, 0, QModelIndex());
+    
+    // no model
+    emit testSignal();
+    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
+    QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty());
+    
+    mTestWidget->initialize(*model);
+    
+    // invalid data    
+    VideoListDataModelData::setData( Qt::DisplayRole, QVariant());
+    emit testSignal();
+    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
+    QVERIFY(HbMessageBoxData::mLatestTxt.isEmpty());
+    
+    // valid data 
+    VideoListDataModelData::setData( Qt::DisplayRole, "test");
+    emit testSignal();
+    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.isValid());
+    QVERIFY(VideoSortFilterProxyModelData::mLastIndex.row() == 1);
+    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
+    
+    // msg box return false (for coverity)
+    VideoSortFilterProxyModelData::mLastIndex = QModelIndex();
+    HbMessageBoxData::mLatestTxt = "";
+    HbMessageBoxData::mQuestionReturnValue = false;
+    emit testSignal();
+    QVERIFY(!VideoSortFilterProxyModelData::mLastIndex.isValid());
+    QVERIFY(!HbMessageBoxData::mLatestTxt.isEmpty());
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(removeCollectionSlot()));
+}
+
+// ---------------------------------------------------------------------------
 // testOpenDetailsSlot
 // ---------------------------------------------------------------------------
 //
@@ -840,10 +1104,9 @@
     VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
     VideoSortFilterProxyModel *model = wrapper.getModel(VideoCollectionWrapper::EAllVideos);
 
-    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&)));
+    QSignalSpy spysignal(mTestWidget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)));
     connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(back()));
     // no model
-    hbInstance->mWindowses.append(mDummyMainWnd);
     emit testSignal();        
     QVERIFY(spysignal.count() == 0);
         
@@ -858,7 +1121,21 @@
     
     disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(back()));
 }
-  
+
+// ---------------------------------------------------------------------------
+// testScrollingEndedSlot
+// ---------------------------------------------------------------------------
+//
+void TestListWidget::testScrollingStartedSlot()
+{
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot()));
+    
+    emit testSignal();
+    
+    
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollingStartedSlot()));
+}
+
 // ---------------------------------------------------------------------------
 // testScrollingEndedSlot
 // ---------------------------------------------------------------------------
@@ -906,7 +1183,7 @@
 }
 
 // ---------------------------------------------------------------------------
-// testScrollingEndedSlot
+// testScrollPositionChangedSlot
 // ---------------------------------------------------------------------------
 // 
 void TestListWidget::testScrollPositionChangedSlot()
@@ -936,4 +1213,12 @@
     disconnect(this, SIGNAL(testSignal(const QPointF&)), mTestWidget, SLOT(scrollPositionChangedSlot(const QPointF&)));
 }
 
+void TestListWidget::testScrollPositionTimerSlot()
+{
+    connect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollPositionTimerSlot()));
+    emit testSignal();
+    disconnect(this, SIGNAL(testSignal()), mTestWidget, SLOT(scrollPositionTimerSlot()));
+        
+}
+
 // end of file
--- a/videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testlistwidget/testlistwidget.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -20,7 +20,8 @@
  
 DEPENDPATH += . \
     inc \
-    src
+    src \
+    ../../../tsrc/stubs
 
 INCLUDEPATH += . \
     inc \
@@ -40,57 +41,21 @@
     -lfbscli.dll \
     -lbitgdi.dll \
     -lgdi.dll \
-    -lvideocollectionwrapper.dll \
     -lxqservice.dll \
     -lxqserviceutil.dll
 
 HEADERS += inc/testlistwidget.h \
     \ # headers needed in test
     ../../../videocollectionview/inc/videolistwidget.h \
-    \ # headers needed in stubs
-    ../../../tsrc/stubs/inc/hbmainwindow.h \
-    ../../../tsrc/stubs/inc/hbwidget.h \
-    ../../../tsrc/stubs/inc/hbinstance.h \
-    ../../../tsrc/stubs/inc/hbscrollbar.h \
-    ../../../tsrc/stubs/inc/hbaction.h \
-    ../../../tsrc/stubs/inc/hbview.h \
-    ../../../tsrc/stubs/inc/hblistviewitem.h \
-    ../../../tsrc/stubs/inc/hblistview.h \
-    ../../../tsrc/stubs/inc/hbglobal.h \
-    ../../../tsrc/stubs/inc/hbstyleloader.h \
-    ../../../tsrc/stubs/inc/hbmenu.h \
-    ../../../tsrc/stubs/inc/hbmessagebox.h \
-    ../../../tsrc/stubs/inc/xqserviceutil.h \
-    ../../../videocollectionview/inc/videocollectionviewutils.h \
-    ../../../videocollectionview/inc/videocollectionuiloader.h \
-    ../../../videocollectionview/inc/videolistselectiondialog.h \
-    ../../../videocollectionwrapper/inc/videocollectionwrapper.h \
-    ../../../videocollectionwrapper/inc/videosortfilterproxymodel.h \
-    ../../../videocollectionwrapper/inc/videolistdatamodel.h \
-    ../../../videocollectionwrapper/inc/videothumbnaildata.h \
-    ../../../../videoplayerapp/videoplayerengine/inc/videoserviceurifetch.h
 
 SOURCES += src/testlistwidget.cpp \
     \ # sources needed in test
     ../../../videocollectionview/src/videolistwidget.cpp \
-    \ # sources needed in stubs
-    ../../../tsrc/stubs/src/hbwidget.cpp \
-    ../../../tsrc/stubs/src/hbscrollbar.cpp \
-    ../../../tsrc/stubs/src/hbaction.cpp \
-    ../../../tsrc/stubs/src/hblistviewitem.cpp \
-    ../../../tsrc/stubs/src/hblistview.cpp \
-    ../../../tsrc/stubs/src/hbglobal.cpp \
-    ../../../tsrc/stubs/src/hbstyleloader.cpp \
-    ../../../tsrc/stubs/src/hbmenu.cpp \
-    ../../../tsrc/stubs/src/hbmessagebox.cpp \
-    ../../../tsrc/stubs/src/hbdialog.cpp \
-    ../../../tsrc/stubs/src/videocollectionviewutils.cpp \
-    ../../../tsrc/stubs/src/videocollectionuiloader.cpp \
-    ../../../tsrc/stubs/src/videolistselectiondialog.cpp \
-    ../../../tsrc/stubs/src/videocollectionwrapper.cpp \
-    ../../../tsrc/stubs/src/videosortfilterproxymodel.cpp \
-    ../../../tsrc/stubs/src/videolistdatamodel.cpp \
-    ../../../tsrc/stubs/src/videothumbnaildata.cpp \
-    ../../../tsrc/stubs/src/videoservices.cpp \
-    ../../../tsrc/stubs/src/videoserviceurifetch.cpp \
+
+    
+TESTEDCLASS = videolistwidget
+include(../../../tsrc/stubs/stubs.pro)
+
+RESOURCES += ../../data/videocollectionview.qrc
+
     
\ No newline at end of file
--- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/src/testvideocollectionviewutils.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -82,106 +82,79 @@
     VideoCollectionViewUtils &testObject(VideoCollectionViewUtils::instance());
     QVariant additional;
     QString txt = "__test__";      
-    additional = txt;
     HbMessageBoxData::mWarningCallCount = 0;
     HbMessageBoxData::mInformationCallCount = 0;
     
     // status: VideoCollectionCommon::statusSingleDeleteFail
+    additional = txt;
     testObject.showStatusMsgSlot(VideoCollectionCommon::statusSingleDeleteFail, additional);
     QVERIFY(HbMessageBoxData::mWarningCallCount == 1);
     QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
     HbMessageBoxData::mWarningCallCount = 0;
     HbMessageBoxData::mInformationCallCount = 0;
-    additional = QVariant();
     
     // - invalid additional
+    additional = QVariant();
     testObject.showStatusMsgSlot(VideoCollectionCommon::statusSingleDeleteFail, additional);
     QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
     QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
     
-    // status: VideoCollectionCommon::statusMultipleDeleteFail (additional not needed)
+    // status: VideoCollectionCommon::statusMultipleDeleteFail
+    additional = txt;
     testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultipleDeleteFail, additional);
     QVERIFY(HbMessageBoxData::mWarningCallCount == 1);
     QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
     HbMessageBoxData::mWarningCallCount = 0;
     HbMessageBoxData::mInformationCallCount = 0;
+    
+    // - invalid additional
     additional = QVariant();
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultipleDeleteFail, additional);
+    HbMessageBoxData::mWarningCallCount = 0;
+    HbMessageBoxData::mInformationCallCount = 0;
     
-    additional = 5;
-    // status: VideoCollectionCommon::statusMultipleDeleteSucceed
-    testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed, additional);
+    // status: VideoCollectionCommon::statusMultipleRemoveFail (additional not needed)
+    additional = QVariant();
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusMultiRemoveFail, additional);
+    QVERIFY(HbMessageBoxData::mWarningCallCount == 1);
+    QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
+    HbMessageBoxData::mWarningCallCount = 0;
+    HbMessageBoxData::mInformationCallCount = 0;
+    
+    // status: VideoCollectionCommon::statusVideosAddedToCollection
+    additional = txt;
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusVideosAddedToCollection, additional);
     QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
     QVERIFY(HbMessageBoxData::mInformationCallCount == 1);
     HbMessageBoxData::mWarningCallCount = 0;
     HbMessageBoxData::mInformationCallCount = 0;
+    
+    // - invalid additional
     additional = QVariant();
-    
-    // -> invalid additional
-    testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed, additional);
-    QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
-    QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
-    
-    // status: invalid
-    testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteSucceed + 1, additional);
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusVideosAddedToCollection, additional);
     QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
     QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
     
-    
-/*    
+    // status: VideoCollectionCommon::statusAllVideosAlreadyInCollection
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusAllVideosAlreadyInCollection, additional);
+    QVERIFY(HbMessageBoxData::mWarningCallCount == 1);
+    QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
+    HbMessageBoxData::mWarningCallCount = 0;
+    HbMessageBoxData::mInformationCallCount = 0;
     
-    QString txt = "__test__";      
-    // error code 0, no additional
-    testObject.showErrorMsgSlot(0, additional);
-    QVERIFY(!HbMessageBox::staticInstance);
-
-    // error code 0, additional 
-    additional = txt;
-    testObject.showErrorMsgSlot(0, additional);
-    QVERIFY(!HbMessageBox::staticInstance);
-    
-    // error code VideoCollectionCommon::errorCollectionSingleDelete, no additional
-    additional.clear();
-    testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionSingleDelete, additional);
-    QVERIFY(!HbMessageBox::staticInstance);
-    
-    // error code VideoCollectionCommon::errorCollectionSingleDelete, additional
+    // status: VideoCollectionCommon::statusDeleteInProgress
     additional = txt;
-    testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionSingleDelete, additional);
-    QVERIFY(HbMessageBox::staticInstance);
-    QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning);
-    QVERIFY(!HbMessageBox::staticInstance->mBGFaded);
-    QVERIFY(!HbMessageBox::staticInstance->mModal);
-    QVERIFY(HbMessageBox::staticInstance->mText.count() > 0);
-    QVERIFY(HbMessageBox::staticInstance->mText.contains(txt));
-    QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose);
-    delete HbMessageBox::staticInstance;
-    HbMessageBox::staticInstance = 0;
-    
-    // error code VideoCollectionCommon::errorCollectionMultipleDelete, no additional
-    additional.clear();
-    testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionMultipleDelete, additional);
-    QVERIFY(HbMessageBox::staticInstance);
-    QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning);
-    QVERIFY(!HbMessageBox::staticInstance->mBGFaded);
-    QVERIFY(!HbMessageBox::staticInstance->mModal);
-    QVERIFY(HbMessageBox::staticInstance->mText.count() > 0);
-    QVERIFY(!HbMessageBox::staticInstance->mText.contains(txt));
-    QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose);
-    delete HbMessageBox::staticInstance;
-    HbMessageBox::staticInstance = 0;
-    
-    // error code VideoCollectionCommon::errorCollectionMultipleDelete, additional
-    additional = txt;
-    testObject.showErrorMsgSlot(VideoCollectionCommon::errorCollectionMultipleDelete, additional);
-    QVERIFY(HbMessageBox::staticInstance);
-    QVERIFY(HbMessageBox::staticInstance->mType == HbMessageBoxData::messageTypeWarning);
-    QVERIFY(!HbMessageBox::staticInstance->mBGFaded);
-    QVERIFY(!HbMessageBox::staticInstance->mModal);
-    QVERIFY(HbMessageBox::staticInstance->mText.count() > 0);
-    QVERIFY(!HbMessageBox::staticInstance->mText.contains(txt));
-    QVERIFY(HbMessageBox::staticInstance->mAttribute == Qt::WA_DeleteOnClose);
-    delete HbMessageBox::staticInstance;
-*/
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteInProgress, additional);
+    QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
+    QVERIFY(HbMessageBoxData::mInformationCallCount == 1);
+    HbMessageBoxData::mWarningCallCount = 0;
+    HbMessageBoxData::mInformationCallCount = 0;
+
+    // - invalid additional
+    additional = QVariant();
+    testObject.showStatusMsgSlot(VideoCollectionCommon::statusDeleteInProgress, additional);
+    QVERIFY(HbMessageBoxData::mWarningCallCount == 0);
+    QVERIFY(HbMessageBoxData::mInformationCallCount == 0);
 }
 
 // -----------------------------------------------------------------------------
@@ -217,32 +190,41 @@
 void TestVideoVideoCollectionViewUtils::testLoadSortingValues()
 {
     VideoCollectionViewUtils &testObject(VideoCollectionViewUtils::instance());
-    CRepository::setNewLLeave(true);
-    CRepository::setRoleValue(Qt::DisplayRole);
-    CRepository::setOrderValue(Qt::DescendingOrder);
     
     int sortRole(-1);
     Qt::SortOrder sortOrder(Qt::AscendingOrder);
     
+    CRepository::setRoleValue(Qt::DisplayRole);
+    CRepository::setOrderValue(Qt::AscendingOrder);
+    
+    CRepository::setNewLLeave(true);
+    testObject.mSortRole = -1;
+    testObject.mSortOrder = Qt::DescendingOrder;
     QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0);
     QCOMPARE(sortRole, -1);
-    QCOMPARE(sortOrder, Qt::AscendingOrder);
-    
+    QCOMPARE(sortOrder, Qt::DescendingOrder);
+
     CRepository::setNewLLeave(false);
     CRepository::setGetFail(0);
+    testObject.mSortRole = -1;
+    testObject.mSortOrder = Qt::DescendingOrder;
     QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0);
     QCOMPARE(sortRole, -1);
-    QCOMPARE(sortOrder, Qt::AscendingOrder);
+    QCOMPARE(sortOrder, Qt::DescendingOrder);
 
     CRepository::setGetFail(1);
+    testObject.mSortRole = -1;
+    testObject.mSortOrder = Qt::DescendingOrder;
     QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) < 0);
-    QCOMPARE(sortRole, -1);
-    QCOMPARE(sortOrder, Qt::AscendingOrder);
+    QCOMPARE(sortRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortOrder, Qt::DescendingOrder);
     
     CRepository::setGetFail(255);
+    testObject.mSortRole = -1;
+    testObject.mSortOrder = Qt::DescendingOrder;
     QVERIFY(testObject.loadSortingValues(sortRole, sortOrder) == 0);
     QCOMPARE(sortRole, (int)Qt::DisplayRole);
-    QCOMPARE(sortOrder, Qt::DescendingOrder);
+    QCOMPARE(sortOrder, Qt::AscendingOrder);
 }
 
 // -----------------------------------------------------------------------------
--- a/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideocollectionviewutils/testvideocollectionviewutils.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -20,13 +20,15 @@
 
 DEPENDPATH += . \
     inc \
-    src
-    
+    src \
+    ../../../tsrc/stubs
+
 INCLUDEPATH = . \
     inc \
     ../../../tsrc/stubs/inc \
     \ # keep these at bottom so that stubbed headers are taken first
     ../../../inc \
+    ../../../videocollectionview/inc \
     ../../../videocollectionwrapper/inc
     
 CONFIG += qtestlib \
@@ -39,27 +41,15 @@
     -lgdi.dll
 
 # Input
-HEADERS +=  inc/testvideocollectionviewutils.h \
+HEADERS += inc/testvideocollectionviewutils.h \
     \ # headers needed in test
-    ../../inc/videocollectionviewutils.h \
-    \ # headers needed in stubs
-    ../../../tsrc/stubs/inc/hbaction.h \
-    ../../../tsrc/stubs/inc/hblabel.h \
-    ../../../tsrc/stubs/inc/hbmessagebox.h \
-    ../../../tsrc/stubs/inc/hbdialog.h \
-    ../../../tsrc/stubs/inc/hbwidget.h \
-    ../../../tsrc/stubs/inc/centralrepository.h \
-    ../../../videocollectionwrapper/inc/videocollectionwrapper.h
+    ../../inc/videocollectionviewutils.h
     
 SOURCES += src/testvideocollectionviewutils.cpp \
     \ # sources needed in test
-    ../../src/videocollectionviewutils.cpp \
-    \ # sources needed in stubs
-    ../../../tsrc/stubs/src/hbaction.cpp \
-    ../../../tsrc/stubs/src/hblabel.cpp \
-    ../../../tsrc/stubs/src/hbmessagebox.cpp \
-    ../../../tsrc/stubs/src/hbdialog.cpp \
-    ../../../tsrc/stubs/src/hbwidget.cpp \
-    ../../../tsrc/stubs/src/centralrepository.cpp \
-    ../../../tsrc/stubs/src/videocollectionwrapper.cpp
+    ../../src/videocollectionviewutils.cpp
+   
+TESTEDCLASS = videocollectionviewutils.cpp
+include(../../../tsrc/stubs/stubs.pro)
+    
            
--- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/testvideolistselectiondialog.h	Thu Apr 01 23:32:44 2010 +0300
@@ -18,18 +18,39 @@
 #ifndef __TESTVIDEOLISTSELECTIONDIALOG_H__
 #define __TESTVIDEOLISTSELECTIONDIALOG_H__
 
-
 // INCLUDES
 #include <QtTest/QtTest>
 
+class VideoListSelectionDialog;
+class VideoCollectionUiLoader;
+class VideoListDataModel;
+class VideoSortFilterProxyModel;
+class VideoListWidget;
+class VideoListSelectionDialogTesterHelper;
+
 class TestVideoListSelectionDialog : public QObject
 {
     Q_OBJECT
 
+private:
+    
+    void setRowCount(int count, int type = 0, VideoListDataModel *model = 0);
+    
     // test functions for the test framework
-   
+
 private slots:
-   
+
+    /**
+     * called before anything else when test starts
+     */
+    void initTestCase();
+
+    /**
+     * will be called after testing ends
+     *
+     */
+    void cleanupTestCase();
+    
     /**
      * will be called before each testfunction is executed.
      *
@@ -40,8 +61,104 @@
      * will be called after every testfunction.
      *
      */
-    void cleanup();    
+    void cleanup();
+    
+    /**
+     * Tests constructor and destructor.
+     */
+    void testConstructDestruct();
+    
+    /**
+     * tests VideoListSelectionDialog::setupContent
+     */
+    void testSetupContent();
+    
+    /**
+     * verifies failure cases in initDialog
+     */
+    void testSetupInitFailures();
+    
+    /**
+     * tests VideoListSelectionDialog::exec
+     */
+    void testExec();
+
+    /**
+     * tests finishedSlot
+     */
+    void testFinishedSlot();
+    
+    /**
+     * tests VideoListSelectionDialog::markAllStateChangedSlot
+     */
+    void testMarkAllStateChangedSlot();
+
+    /**
+     * tests VideoListSelectionDialog::selectionChangedSlot
+     */
+    void testSelectionChangedSlot();
+
+    /**
+     * tests VideoListSelectionDialog::singleItemSelectedSlot
+     */
+    void testSingleItemSelectedSlot();
+
+    /**
+     * tests VideoListSelectionDialog::initDialog
+     */
+    void testModelReadySlot();
+
+    /**
+     * tests VideoListSelectionDialog::updateCounterSlot
+     */
+    void testUpdateCounterSlot();
+
+    /**
+     * tests VideoListSelectionDialog::primaryActionTriggeredSlot
+     */
+    void testPrimaryActionTriggeredSlot();
+    
+    /**
+     * tests VideoListSelectionDialog::getSelectedName
+     */
+    void testGetSelectedName();
+    
 private:
+
+    /**
+     * test helper
+     */
+    VideoListSelectionDialogTesterHelper *mTestHelper;  
+    
+    /**
+     * object under test
+     */
+    VideoListSelectionDialog *mTestObject;
+    
+    /**
+     * dummy UI loader object
+     */
+    VideoCollectionUiLoader *mTestUiLoader;
+    
+    /**
+     * dummy source model
+     */
+    VideoListDataModel *mSourceModel;
+    
+    /**
+     * dummy model
+     */
+    VideoSortFilterProxyModel *mModel;
+    
+    /**
+     * dummy widget
+     */
+    VideoListWidget *mTestWidget;
+    
+	/**
+ 	 * flag indicating if last call to init succeeded.
+ 	 */
+    bool mInitOk;
 };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/inc/videolistselectiondialogtester.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,144 @@
+/**
+* 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:   VideoListSelectionDialogTester class
+* 
+*/
+
+#ifndef __VIDEOLISTSELECTIONDIALOGTESTER_H__
+#define __VIDEOLISTSELECTIONDIALOGTESTER_H__
+
+#include "videolistselectiondialog.h"
+
+class VideoListSelectionDialogTesterHelper : public QObject
+{
+    Q_OBJECT
+    
+signals:
+    
+    void markAllSignal(int);
+    
+    void selectionChangedSignal(const QItemSelection&, const QItemSelection&);
+    
+    void singleItemSelectedSignal(const QModelIndex&);
+    
+    void modelReadySignal();
+    
+    void updateCounterSignal();
+    
+    void primaryActionTriggeredSignal();
+    
+    void finishedSignal(HbAction*);
+    
+public:
+    
+    VideoListSelectionDialogTesterHelper(VideoListSelectionDialog *testable = 0) 
+    : mTestable(testable) {};
+    
+    ~VideoListSelectionDialogTesterHelper() {};
+    
+    bool connectSignals()
+    {
+        if(!mTestable)
+        {
+            return false;
+        }
+        // disconnect first to make sure there signals are not connected twice
+        disconnectSignals();
+        if(!connect(this, SIGNAL(markAllSignal(int)), mTestable, SLOT(markAllStateChangedSlot(int))))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(selectionChangedSignal(const QItemSelection&, const QItemSelection&)), 
+                mTestable, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&))))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(singleItemSelectedSignal(const QModelIndex&)), 
+                mTestable, SLOT(singleItemSelectedSlot(const QModelIndex&))))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(modelReadySignal()), mTestable, SLOT(modelReadySlot())))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(updateCounterSignal()), mTestable, SLOT(updateCounterSlot())))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(primaryActionTriggeredSignal()), 
+                mTestable, SLOT(primaryActionTriggeredSlot())))
+        {
+            return false;
+        }
+        if(!connect(this, SIGNAL(finishedSignal(HbAction*)), mTestable, SLOT(finishedSlot(HbAction*))))
+        {
+            return false;
+        }
+        return true;
+    }
+    
+    void disconnectSignals()
+    {
+        disconnect(this, SIGNAL(markAllSignal(int)), mTestable, SLOT(markAllStateChangedSlot(int)));
+        disconnect(this, SIGNAL(selectionChangedSignal(const QItemSelection&, const QItemSelection&)), 
+                        mTestable, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&)));
+        disconnect(this, SIGNAL(singleItemSelectedSignal(const QModelIndex&)), 
+                        mTestable, SLOT(singleItemSelectedSlot(const QModelIndex&)));
+        disconnect(this, SIGNAL(modelReadySignal()), mTestable, SLOT(modelReadySlot()));
+        disconnect(this, SIGNAL(updateCounterSignal()), mTestable, SLOT(updateCounterSlot()));
+        disconnect(this, SIGNAL(primaryActionTriggeredSignal()), 
+                        mTestable, SLOT(primaryActionTriggeredSlot()));
+        disconnect(this, SIGNAL(finishedSignal(HbAction*)), mTestable, SLOT(finishedSlot(HbAction*)));
+    }
+    
+    void emitMarkAllStateChanged(int state)
+    {
+        emit markAllSignal(state);
+    }
+
+    void emitSelectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected)
+    {
+        emit selectionChangedSignal(selected, deselected);
+    }
+    
+    void emitSingleItemSelectedSlot(const QModelIndex &index)
+    {
+        emit singleItemSelectedSignal(index);
+    }
+    
+    void emitModelReadySlot()
+    {
+        emit modelReadySignal();
+    }
+    
+    void emitUpdateCounterSlot()
+    {
+        emit updateCounterSignal();
+    }
+    
+    void emitPrimaryActionTriggeredSlot()
+    {
+        emit primaryActionTriggeredSignal();
+    }
+    
+    void emitFinishedSlot(HbAction *action)
+    {
+        emit finishedSignal(action);
+    }
+    
+    VideoListSelectionDialog *mTestable;
+};
+
+#endif
--- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/src/testvideolistselectiondialog.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,12 +15,37 @@
 * 
 */
 
+#include <qdebug.h>
 #include <qapplication.h>
+#include "hbview.h"
+#include "hbabstractitemview.h"
+#include "hbdocumentloader.h"
+#include "hbstackedwidget.h"
+#include "hbcheckbox.h"
+#include "hbdialog.h"
+#include "hbwidget.h"
+#include "hblistview.h"
+#include "hbinputdialog.h"
 
 #include "testvideolistselectiondialog.h"
 
+#include "videocollectionuiloader.h"
+#include "videolistdatamodel.h"
+#include "videosortfilterproxymodel.h"
+#include "videolistwidget.h"
+#include "videocollectionwrapper.h"
+#include "videocollectioncommon.h"
+#include <vcxmyvideosdefs.h>
+
+#include "videolistdatamodeldata.h"
+#include "videocollectionwrapperdata.h"
+#include "videocollectionuiloaderdata.h"
+#include "videolistwidgetdata.h"
+#include "videosortfilterproxymodeldata.h"
+#include "videocollectionviewutilsdata.h"
+
 #define private public
-#include "videolistselectiondialog.h"
+#include "videolistselectiondialogtester.h"
 #undef private
 
 // ---------------------------------------------------------------------------
@@ -51,19 +76,988 @@
 }
 
 // ---------------------------------------------------------------------------
+// global qHash function required fo creating hash values for TMPXItemId -keys
+// ---------------------------------------------------------------------------
+inline uint qHash(TMPXItemId key) 
+{ 
+    QPair<uint, uint> keyPair(key.iId1, key.iId2); 
+
+    return qHash(keyPair);
+}
+
+// ---------------------------------------------------------------------------
+// setRowCount
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::setRowCount(int count, int type, VideoListDataModel *model)
+{
+    if (!model)
+    {
+        VideoCollectionWrapper &wrapper = VideoCollectionWrapper::instance();
+        VideoSortFilterProxyModel *model = wrapper.getModel(type);
+        QVERIFY(model);
+        
+        VideoListDataModel *sourceModel = qobject_cast<VideoListDataModel*>(model->sourceModel());
+        QVERIFY(sourceModel);
+        
+        VideoListDataModelData::setRowCount(*sourceModel, count);
+    }
+    else
+    {
+        VideoListDataModelData::setRowCount(*model, count);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// initTestCase
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::initTestCase()
+{
+    mTestHelper = new VideoListSelectionDialogTesterHelper();
+}
+
+// ---------------------------------------------------------------------------
+// cleanupTestCase
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::cleanupTestCase()
+{
+    delete mTestHelper;
+}
+
+// ---------------------------------------------------------------------------
 // init
 // ---------------------------------------------------------------------------
 //
 void TestVideoListSelectionDialog::init()
 {
+    mTestObject = 0;
+    mModel = 0;
+    mTestUiLoader = 0;
+    mTestWidget = 0;
+    
+    mInitOk = false;
+    
+    mTestUiLoader = new VideoCollectionUiLoader();
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    mModel = VideoCollectionWrapper::instance().getModel(VideoCollectionWrapper::EGeneric);
+    
+    mTestHelper->mTestable = mTestObject;
+    QVERIFY(mTestHelper->connectSignals());
+    
+    mInitOk = true;
 }
- 
+
 // ---------------------------------------------------------------------------
 // cleanup
 // ---------------------------------------------------------------------------
 //
 void TestVideoListSelectionDialog::cleanup()
 {
+    mTestHelper->disconnectSignals();
+    
+    delete mTestObject; 
+    mTestObject = 0;
+    
+    delete mTestUiLoader;
+    mTestUiLoader = 0;  
+    
+    mSourceModel = 0;
+    
+    mModel = 0;
+    
+    
+}
+
+// ---------------------------------------------------------------------------
+// testConstructDestruct
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::testConstructDestruct()
+{
+    QVERIFY(mInitOk == true);
+    
+    QVERIFY(mTestObject != 0);
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mModel != 0);
+
+    delete mTestObject;
+    mTestObject = 0;
+    
+    // Getting model fails 
+    VideoCollectionWrapperData::mGetModelFails = true;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    QVERIFY(mTestObject->mModel == 0);
+    QVERIFY(mTestObject->mListWidget == 0);
+    
+    delete mTestObject;
+    mTestObject = 0;
+
+    // List widget initialize fails
+    VideoCollectionWrapperData::mGetModelFails = false;
+    VideoListWidgetData::mInitializeReturnValue = -1;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget == 0);
+}
+
+// ---------------------------------------------------------------------------
+// testSetupContent
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::testSetupContent()
+{
+    VideoCollectionWrapperData::reset();
+    VideoListWidgetData::reset();
+    
+    QVERIFY(mInitOk == true);
+    QVERIFY(mModel != 0);
+    
+    TMPXItemId mpxId;
+    
+    // invalid type provided, object's internal data will not change
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos;
+    mTestObject->setupContent(-1, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    mTestObject->setupContent(600, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    
+    // No data. type EDeleteVideos. Default mpx item 
+    setRowCount(0);
+    mpxId = TMPXItemId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    VideoSortFilterProxyModelData::reset();
+    
+    // second setup (for coverity)
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+        
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    VideoSortFilterProxyModelData::reset();
+    
+    // No data. type ESelectCollection. Default mpx item 
+    setRowCount(0);
+    mpxId = TMPXItemId();
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ESelectCollection);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == false);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(!VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    VideoSortFilterProxyModelData::reset();
+    
+    // No data. type EAddToCollection:. Default mpx item 
+    setRowCount(0);
+    mpxId = TMPXItemId();
+    mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(!VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    VideoSortFilterProxyModelData::reset();
+    
+    // No data. type ERemoveFromCollection:. Default mpx item 
+    setRowCount(0);
+    mpxId = TMPXItemId();
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);    
+    VideoSortFilterProxyModelData::reset();
+    
+    // Some data, mpx item type is album 
+    setRowCount(10);
+    mpxId = TMPXItemId(0, KVcxMvcMediaTypeAlbum);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    QVERIFY(mTestObject->mSelectedAlbumId == mpxId);
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    VideoSortFilterProxyModelData::reset();
+    
+    // Some data, mpx item type is invalid: category
+    mpxId = TMPXItemId(0, KVcxMvcMediaTypeCategory);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    VideoSortFilterProxyModelData::reset();
+    
+    // Some data, mpx item type is invalid id
+    mpxId = TMPXItemId::InvalidId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);  
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+    
+    VideoSortFilterProxyModelData::reset();
+    // some data, second initialization without widget and model, for coverity
+    delete mTestObject->mListWidget;
+    mTestObject->mListWidget = 0;
+    mTestObject->mModel = 0;
+    mTestObject->mListContainer = 0;
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QCOMPARE(mTestObject->mSelection.count(), 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    QVERIFY(mTestObject->mSelectedAlbumId == TMPXItemId::InvalidId());
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);
+    QVERIFY(mTestObject->mListContainer != 0);
+    QVERIFY(mTestObject->mListContainer->mCurrentWidget == mTestObject->mListWidget);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mCheckboxContainer->isVisible() == true);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);
+    QVERIFY(mTestObject->primaryAction() != 0);
+    QVERIFY(mTestObject->secondaryAction() != 0);  
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mGenericFilterValue);
+}
+
+// ---------------------------------------------------------------------------
+// testSetupInitFailures
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::testSetupInitFailures()
+{
+    TMPXItemId mpxId;
+    
+    // initDialog fails because model get fails. 
+    QVERIFY(mTestObject->mModel != 0);
+    VideoSortFilterProxyModel *backup = mTestObject->mModel;
+    VideoListWidget *backupWidget = mTestObject->mListWidget;
+    mTestObject->mModel = 0;
+    mTestObject->mListWidget = 0;
+    VideoCollectionWrapperData::mGetModelFails = true;
+    mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    VideoCollectionWrapperData::mGetModelFails = false;
+    QVERIFY(mTestObject->mModel == 0);
+    QVERIFY(mTestObject->mListWidget == 0);
+    QVERIFY(mTestObject->mListContainer == 0);
+    QVERIFY(mTestObject->mHeading == 0);
+    QVERIFY(mTestObject->mCheckboxContainer == 0);
+    QVERIFY(mTestObject->mItemCount == 0);
+    QVERIFY(mTestObject->mCheckBox == 0);
+    mTestObject->mModel = backup; backup = 0;
+    mTestObject->mListWidget = backupWidget; backupWidget = 0;
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    
+    // initDialog fails because mListWidget::initialize
+    QVERIFY(mTestObject->mModel != 0);
+    VideoListWidgetData::mInitializeReturnValue = -1;
+    backupWidget = mTestObject->mListWidget;
+    mTestObject->mListWidget = 0;
+    mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget == 0);    
+    QVERIFY(mTestObject->mListContainer == 0);
+    QVERIFY(mTestObject->mHeading == 0);
+    QVERIFY(mTestObject->mCheckboxContainer == 0);
+    QVERIFY(mTestObject->mItemCount == 0);
+    QVERIFY(mTestObject->mCheckBox == 0);  
+    VideoListWidgetData::mInitializeReturnValue = 0;
+    
+    delete mTestObject;
+    mTestObject = new VideoListSelectionDialog(mTestUiLoader);
+    
+    // initdialog fails because DOCML_NAME_LIST_CONTAINER finding fails
+    VideoCollectionUiLoaderData::mFindFailure = false;
+    VideoCollectionUiLoaderData::mFindFailureNameList.clear();
+    VideoCollectionUiLoaderData::mFindFailureNameList.append(DOCML_NAME_LIST_CONTAINER);
+    mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    QVERIFY(mTestObject->mModel != 0);
+    QVERIFY(mTestObject->mListWidget != 0);    
+    QVERIFY(mTestObject->mListContainer == 0);
+    QVERIFY(mTestObject->mHeading != 0);
+    QVERIFY(mTestObject->mCheckboxContainer != 0);
+    QVERIFY(mTestObject->mItemCount != 0);
+    QVERIFY(mTestObject->mCheckBox != 0);     
+    VideoCollectionUiLoaderData::mFindFailureNameList.clear();
+}
+
+// ---------------------------------------------------------------------------
+// testExec
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::testExec()
+{   
+    // there's not much to test in exec -method, basically these
+    // are for coberity only
+    // we're using EDeleteVideos type and make sure correct
+    // status exists in view utils after exec 
+    TMPXItemId mpxId = TMPXItemId(0, KVcxMvcMediaTypeVideo);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    
+    HbDialog::execReturnPrimary = true;
+    
+    VideoCollectionViewUtilsData::mLastError = -1;
+    
+    // empty model row count
+    setRowCount(0);
+    mTestObject->exec();
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress);
+    VideoCollectionViewUtilsData::mLastError = -1;
+    
+    // model contains data
+    setRowCount(10);
+    mTestObject->exec();
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress);
+    
+    // just to make sure finishedSlot is called with correct params
+    VideoCollectionViewUtilsData::mLastError = -1;
+    HbDialog::execReturnPrimary = false;
+    mTestObject->exec();
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
 }
 
+// ---------------------------------------------------------------------------
+// testFinishedSlot
+// ---------------------------------------------------------------------------
+//
+void TestVideoListSelectionDialog::testFinishedSlot()
+{
+    // finished slot tested throught exec -method
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    
+    TMPXItemId mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum);
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    // finished with secondary action
+    VideoCollectionViewUtilsData::mLastError = -1;
+    HbDialog::execReturnPrimary = false;
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+
+    HbDialog::execReturnPrimary = true;    
+    
+    ////////////
+    // mTypeOfSelection == ESelectCollection     
+    //  mSelectedAlbumId != TMPXItemId::InvalidId())    
+    VideoCollectionViewUtilsData::mLastError = -1;    
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0;
+    mTestObject->exec();
+    // type of selection has changed
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    // videos added into collection
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0));
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0));
+    
+    
+    VideoCollectionViewUtilsData::mLastError = -1;
+    //  mSelectedAlbumId == TMPXItemId::InvalidId())
+    mpxId = TMPXItemId::InvalidId();
+    //    queryNewAlbumSelected does not set selected
+    HbInputDialog::mGetTextFails = true;   
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId::InvalidId();
+    mTestObject->exec();     
+    // type of selection does not change
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ESelectCollection);
+    // since there's no selected videos, status code does not change
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+ 
+    //    queryNewAlbumSelected sets selected
+    HbInputDialog::mGetTextFails = false;   
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId(1,2);
+    mTestObject->exec();  
+    // type of selection has changed
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    // videos added into collection
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == VideoSortFilterProxyModelData::mNewAlbumId);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0));
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0));
+    
+    ////////////
+    // mTypeOfSelection == EAddToCollection
+    VideoCollectionViewUtilsData::mLastError = -1;
+    // selected album id == invalid
+    mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, TMPXItemId::InvalidId());
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+      
+    // no selected videos
+    mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum);
+    mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId);
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+    
+    // selected album exist, selected videos exists, add items fails    
+    mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = -1;
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+    
+    // selected album exist, selected videos exists, add items succeeds   
+    mTestObject->setupContent(VideoListSelectionDialog::EAddToCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mAddItemsInAlbumReturnValue = 0;
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0));
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0));
+    
+    VideoCollectionViewUtilsData::mLastError = -1;
+    // selected album exist, selected videos exists, name for selected album exist
+    // (using ESelectCollection type to fetch albumname)
+    HbInputDialog::mGetTextFails = false;   
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mNewAlbumId = TMPXItemId(1,2);
+    mTestObject->exec();  
+    // type of selection has changed
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EAddToCollection);
+    // videos added into collection
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosAddedToCollection);
+    
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0));
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0));
+    
+    /////
+    // mTypeOfSelection == ERemoveFromCollection
+    VideoCollectionViewUtilsData::mLastError = -1;
+    // selected album id == invalid
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, TMPXItemId::InvalidId());
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+      
+    // no selected videos
+    mpxId = TMPXItemId(1, KVcxMvcMediaTypeAlbum);
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId);
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+    
+    // selected videos exists, removeitemsFromAlbum fails   
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = -1;
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == TMPXItemId::InvalidId());
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+       
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    VideoSortFilterProxyModelData::mRemoveItemsFromAlbumReturnValue = 0;
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::ERemoveFromCollection);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusVideosRemovedFromCollection);
+    QVERIFY(VideoSortFilterProxyModelData::mLastItemId == mpxId);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.count() == 2);
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(0) == TMPXItemId(1,0));
+    QVERIFY(VideoSortFilterProxyModelData::mItemIds.at(1) == TMPXItemId(2,0));
+    
+    /////
+    // mTypeOfSelection == EDeleteVideos
+    VideoCollectionViewUtilsData::mLastError = -1;
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == VideoListSelectionDialog::EDeleteVideos);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteInProgress);
+    
+    // invalid type
+    mTestObject->mTypeOfSelection = 500;
+    VideoCollectionViewUtilsData::mLastError = -1;
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    VideoSortFilterProxyModelData::reset();
+    mTestObject->exec();  
+    QVERIFY(mTestObject->mTypeOfSelection == 500);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == -1);
+    QVERIFY(!VideoSortFilterProxyModelData::mItemIds.count());
+   
+}
+
+void TestVideoListSelectionDialog::testMarkAllStateChangedSlot()
+{
+    VideoCollectionWrapperData::reset();
+    VideoListWidgetData::reset();
+    VideoSortFilterProxyModelData::reset();
+
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    HbListView::mAllSelectedStatus = -1;
+    
+    // forced check
+    mTestObject->mForcedCheck = true;
+    mTestHelper->emitMarkAllStateChanged(Qt::Checked);
+    mTestObject->mForcedCheck = false;
+    QVERIFY(HbListView::mAllSelectedStatus == -1);
+    
+    // checked
+    mTestHelper->emitMarkAllStateChanged(Qt::Checked);
+    QVERIFY(HbListView::mAllSelectedStatus == 1);
+    HbListView::mAllSelectedStatus = -1;
+    
+    // unchecked
+    mTestHelper->emitMarkAllStateChanged(Qt::Unchecked);
+    QVERIFY(HbListView::mAllSelectedStatus == 0);
+    
+    HbListView::mAllSelectedStatus = -1;
+    
+    mTestHelper->disconnectSignals();
+
+}
+
+void TestVideoListSelectionDialog::testSelectionChangedSlot()
+{
+    QItemSelection selected;
+    QItemSelection deselected;
+    
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    mTestObject->mSelection.clear();
+    
+    // no primary action
+    mTestHelper->emitSelectionChangedSlot(selected, deselected);
+    QVERIFY(!mTestObject->mSelection.count());
+    
+    TMPXItemId mpxId = TMPXItemId::InvalidId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, TMPXItemId(1,1));
+
+    setRowCount(10);
+    
+    // select item
+    mTestObject->primaryAction()->mDisable = true;
+    QModelIndex index = mModel->index(0, 0);
+    QItemSelectionRange range(mModel->index(0, 0));
+    selected.append(range);
+    mTestHelper->emitSelectionChangedSlot(selected, deselected);
+    QVERIFY(mTestObject->mSelection.count() == 1);
+    QVERIFY(mTestObject->primaryAction()->mDisable == false);
+    
+    // deselect item
+    selected.clear();
+    deselected.append(range);
+    mTestHelper->emitSelectionChangedSlot(selected, deselected);
+    QVERIFY(mTestObject->mSelection.count() == 0);
+    QVERIFY(mTestObject->primaryAction()->mDisable == true);
+    
+    mTestHelper->disconnectSignals();
+
+}
+
+void TestVideoListSelectionDialog::testSingleItemSelectedSlot()
+{
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    setRowCount(10);
+    TMPXItemId mpxId = TMPXItemId::InvalidId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection;
+    mTestHelper->emitSingleItemSelectedSlot(mModel->index(0, 0));
+    
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection;
+    QModelIndex invalidIndex;
+    mTestHelper->emitSingleItemSelectedSlot(invalidIndex);
+    
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos;
+    mTestHelper->emitSingleItemSelectedSlot(mModel->index(0, 0));
+    
+    mTestHelper->disconnectSignals();
+}
+
+void TestVideoListSelectionDialog::testModelReadySlot()
+{
+
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, TMPXItemId(1,2));
+    
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    
+    // type of selection != ESelectCollection    
+    mTestHelper->emitModelReadySlot();
+    QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 0);    
+    
+    mTestObject->setupContent(VideoListSelectionDialog::ESelectCollection, TMPXItemId(1,2));
+    // no items in model
+    setRowCount(0);
+    mTestHelper->emitModelReadySlot();
+    QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 1);    
+    
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    setRowCount(10);
+    // type of selection is ESelectCollection and there are items in model
+    mTestHelper->emitModelReadySlot();
+    QVERIFY(mTestObject->primaryAction()->mTriggeredCount == 0);   
+    
+    mTestHelper->disconnectSignals();
+}
+
+void TestVideoListSelectionDialog::testUpdateCounterSlot()
+{
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    TMPXItemId mpxId = TMPXItemId::InvalidId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    
+    // itemCount is null
+    HbLabel *labelBackup = mTestObject->mItemCount;
+    mTestObject->mCheckBox->setChecked(true);
+    mTestObject->mItemCount = 0;
+    mTestHelper->emitUpdateCounterSlot();
+    mTestObject->mItemCount = labelBackup;
+    QVERIFY(mTestObject->mCheckBox->mChecked == true);
+    
+    // no items in model
+    setRowCount(0);
+    mTestObject->mCheckBox->setChecked(true);
+    mTestHelper->emitUpdateCounterSlot();
+    QVERIFY(mTestObject->mCheckBox->mChecked == false);
+
+    // all selected.
+    setRowCount(1);
+    mTestObject->mCheckBox->setChecked(false);
+    QItemSelection selected;
+    QItemSelectionRange range(mTestObject->mModel->index(0, 0));
+    selected.append(range);
+    mTestObject->mSelection.merge(selected, QItemSelectionModel::Select);
+    mTestHelper->emitUpdateCounterSlot();
+    QVERIFY(mTestObject->mCheckBox->mChecked == true);
+    
+    // not all selected
+    setRowCount(10);
+    mTestObject->mCheckBox->setChecked(true);
+    selected.clear();
+    range = QItemSelectionRange(mModel->index(0, 0));
+    selected.append(range);
+    mTestObject->mSelection.clear();
+    mTestObject->mSelection.merge(selected, QItemSelectionModel::Select);
+    mTestHelper->emitUpdateCounterSlot();
+    QVERIFY(mTestObject->mCheckBox->mChecked == false);
+    
+    mTestHelper->disconnectSignals();
+}
+
+void TestVideoListSelectionDialog::testPrimaryActionTriggeredSlot()
+{
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    TMPXItemId mpxId = TMPXItemId::InvalidId();
+    mTestObject->setupContent(VideoListSelectionDialog::EDeleteVideos, mpxId);
+    
+    // nothing selected, album id invalid, selection type != EAddToCollection
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::EDeleteVideos;
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    
+    // nothing selected, album id invalid, selection type EAddToCollection
+    mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId();
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::EAddToCollection;
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    
+    // nothing selected, album id invalid, selection type ESelectCollection
+    mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId();
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection;
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+    
+    // nothing selected, album id invalid, selection type invalid
+    mTestObject->mSelectedAlbumId = TMPXItemId::InvalidId();
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = 555;
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+
+    // nothing selected, album id ok
+    mTestObject->mSelectedAlbumId = TMPXItemId(0, KVcxMvcMediaTypeAlbum);
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::ESelectCollection;
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 1);
+    QCOMPARE(mTestObject->secondaryAction()->mTriggeredCount, 0);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 0);
+
+    setRowCount(10);
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(0,0));
+    VideoSortFilterProxyModelData::mItemIds.append(TMPXItemId(1,2));
+    
+    // videos selected, other one's type is not video
+    QItemSelection selected;
+    QItemSelectionRange range(mTestObject->mModel->index(0, 0), mTestObject->mModel->index(1, 0));
+    selected.append(range);
+    mTestObject->mSelection.merge(selected, QItemSelectionModel::Select);
+    mTestObject->primaryAction()->mTriggeredCount = 0;
+    mTestObject->secondaryAction()->mTriggeredCount = 0;
+    mTestObject->mTypeOfSelection = VideoListSelectionDialog::EAddToCollection;
+    mTestObject->mSelectedVideos.clear();
+    mTestHelper->emitPrimaryActionTriggeredSlot();
+    QCOMPARE(mTestObject->primaryAction()->mTriggeredCount, 1);
+    QCOMPARE(mTestObject->mSelectedVideos.count(), 1);
+  
+    mTestHelper->disconnectSignals(); 
+}
+
+void TestVideoListSelectionDialog::testGetSelectedName()
+{
+    mTestHelper->mTestable = mTestObject;
+    mTestHelper->connectSignals();
+    
+    mTestObject->setupContent(VideoListSelectionDialog::ERemoveFromCollection, TMPXItemId::InvalidId());
+    
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,0));
+    mTestObject->mSelectedVideos.insert(TMPXItemId(2,0));
+    
+    VideoCollectionViewUtilsData::mLastStatusAdditional = QVariant();
+    // mSelectedAlbumId is video
+    mTestObject->mSelectedAlbumId = TMPXItemId(1,0);
+    mTestHelper->emitFinishedSlot(mTestObject->primaryAction());
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid());
+    QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length());
+    
+    mTestObject->mSelectedAlbumId = TMPXItemId(1,2);
+    // fetching collections model unsucceeds
+    VideoCollectionWrapperData::mGetModelFails = true;
+    mTestHelper->emitFinishedSlot(mTestObject->primaryAction());
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid());
+    QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length());
+    VideoCollectionWrapperData::mGetModelFails = false;
+    
+    // invalid index for selected album
+    mTestHelper->emitFinishedSlot(mTestObject->primaryAction());
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid());
+    QVERIFY(!VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length());
+    
+    // succeed case:
+    // need to add album ib into selected list, because stub proxy overwrites
+    // VideoSortFilterProxyModelData::mItemIds at removeitems removeItemsFromAlbum -method
+    // and we need valid index for id
+    QStringList testnameList;
+    testnameList.append("testname");
+    VideoListDataModelData::mData[Qt::DisplayRole] = testnameList;
+    mTestObject->mSelectedVideos.insert(TMPXItemId(1,2));   
+    mTestHelper->emitFinishedSlot(mTestObject->primaryAction());
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.isValid());
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.toString().length() > 0);
+    QVERIFY(VideoCollectionViewUtilsData::mLastStatusAdditional.toString() == "testname");
+    
+    mTestHelper->disconnectSignals(); 
+}
+
+
 // end of file
--- a/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionview/tsrc/testvideolistselectiondialog/testvideolistselectiondialog.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -20,7 +20,8 @@
 
 DEPENDPATH += . \
     inc \
-    src
+    src \
+    ../../../tsrc/stubs
     
 INCLUDEPATH = . \ 
     inc \
@@ -38,37 +39,16 @@
     -lfbscli.dll \
     -lbitgdi.dll \
     -lgdi.dll
-
+    
 HEADERS += inc/testvideolistselectiondialog.h \
+	inc/videolistselectiondialogtester.h \
     \ # headers needed in test
     ../../inc/videolistselectiondialog.h \
-    \ # headers needed in stubs
-    ../../../tsrc/stubs/inc/hbdialog.h \            
-    ../../../tsrc/stubs/inc/hblabel.h \
-    ../../../tsrc/stubs/inc/hbcheckbox.h \
-    ../../../tsrc/stubs/inc/hbwidget.h \
-    ../../../tsrc/stubs/inc/hbstackedwidget.h \
-    ../../../tsrc/stubs/inc/hbdeviceprofile.h \
-    ../../../tsrc/stubs/inc/hbabstractitemview.h \
-    ../../../tsrc/stubs/inc/hbaction.h \
-    ../../../tsrc/stubs/inc/hbview.h \
-    ../../../videocollectionview/inc/videolistwidget.h \
-    ../../../videocollectionview/inc/videocollectionuiloader.h \
-    ../../../videocollectionwrapper/inc/videocollectionwrapper.h \
-    ../../../videocollectionwrapper/inc/videolistdatamodel.h \        
-    ../../../videocollectionwrapper/inc/videosortfilterproxymodel.h            
+   
     
 SOURCES += src/testvideolistselectiondialog.cpp \           
     \ # sources needed in test
     ../../src/videolistselectiondialog.cpp \
-    \ # sources needed in stubs
-    ../../../tsrc/stubs/src/hbdialog.cpp \
-    ../../../tsrc/stubs/src/hblabel.cpp \
-    ../../../tsrc/stubs/src/hbcheckbox.cpp \
-    ../../../tsrc/stubs/src/hbwidget.cpp \
-    ../../../tsrc/stubs/src/hbstackedwidget.cpp \
-    ../../../tsrc/stubs/src/hbaction.cpp \
-    ../../../tsrc/stubs/src/videolistwidget.cpp \
-    ../../../tsrc/stubs/src/videocollectionuiloader.cpp \
-    ../../../tsrc/stubs/src/videosortfilterproxymodel.cpp \  
-    ../../../tsrc/stubs/src/videolistdatamodel.cpp
+   
+TESTEDCLASS = videolistselectiondialog
+include(../../../tsrc/stubs/stubs.pro)
--- a/videocollection/videocollectionwrapper/inc/videocollectionclient.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/inc/videocollectionclient.h	Thu Apr 01 23:32:44 2010 +0300
@@ -195,7 +195,16 @@
      * @param mediaIds, Items which to add.
      * @return 0 if no errors.
      */
-    int addItemsInAlbum(TMPXItemId albumId, const QList<TMPXItemId> &mediaIds);
+    int addItemsInAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);
+    
+    /**
+     * Removes items from existing album.
+     * 
+     * @param albumId, Album from where to remove items.
+     * @param mediaIds, Items which to remove.
+     * @return 0 if no errors.
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);
 
 private:
     
@@ -270,7 +279,16 @@
      * @param mediaIds, Items to add in the album.
      * @return None.
      */
-    void addItemsInAlbumL(TMPXItemId albumId, const QList<TMPXItemId> &mediaIds);
+    void addItemsInAlbumL(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);
+    
+    /**
+     * Removes items from an album.
+     * 
+     * @param albumId, Album where to remove items.
+     * @param mediaIds, Items to remove from album.
+     * @return None.
+     */
+    void removeItemsFromAlbumL(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);
     
 private:
     
--- a/videocollection/videocollectionwrapper/inc/videolistdatamodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/inc/videolistdatamodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -140,6 +140,17 @@
      */
     TMPXItemId albumInUse();
     
+    /**
+     * removes provided items from provided album id and calls
+     * collectionclient to update mds as well.
+     * 
+     * @param albumId album from where to remove
+     * @param items items to remove
+     * 
+     * @return count of items removed or -1 if failed 
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);    
+    
 public: // from QAbstractItemModel
     
     /**
@@ -254,7 +265,20 @@
      * 
      * @return QString detail string
      */
-    QString prepareDetailRow( int index ) const; 
+    QString prepareDetailRow(int index) const; 
+
+    /**
+     * Generates a video count string for category or album at given index.
+     * 
+     * In case item is not found in the provided index, empty
+     * string is returned.
+     * 
+     * @param index, index of the item data is requested
+     * @param index, item id of the item data is requested  
+     * 
+     * @return QString video count string
+     */
+    QString prepareVideoCountString(int index) const;
     
     /**
      * Generates a video size string from video item at given index
@@ -266,7 +290,7 @@
      * 
      * @return QString size string
      */
-    QString prepareSizeString( int index ) const;
+    QString prepareSizeString(int index) const;
     
     /**
      * Called when there are status changes in some async operation
@@ -286,7 +310,7 @@
      * 
      * @return Lengths as QStringList, first item tells the minutes, second tells seconds
      */
-    QStringList prepareLengthStrings( int index  ) const;
+    QStringList prepareLengthStrings(int index) const;
 
 private:
     
--- a/videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/inc/videolistdatamodel_p.h	Thu Apr 01 23:32:44 2010 +0300
@@ -221,6 +221,16 @@
     const QIcon* getVideoThumbnailFromIndex(int index)  const;
     
     /**
+     * Returns the value for item count attribute from given index. 
+	 * If there is no item at that index, 0 is returned.
+     * 
+     * @param index: item position where client wants the count from 
+     * 
+     * @return guint32 size in bytes
+     */
+    quint32 getCategoryVideoCountFromIndex( int index ) const;
+    
+    /**
      * Returns the size of the video from given index.
      * If there is no item at that index, 0 is returned
      * 
@@ -317,6 +327,16 @@
      * @return None.
      */
     void setAlbumInUse(TMPXItemId albumId);
+    
+    /**
+     * removes provided items from album provided
+     * 
+     * @param albumId album from where to remove
+     * @param items to remove
+     * 
+     * @return count of item removed;
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);
 
 private: // private methods
   
@@ -363,9 +383,12 @@
     bool isValid(const CMPXMedia &media, const TMPXItemId &itemId) const;
     
     /**
-     * Appends data in album.
+     * Album data changed, resets album data from array provided
+     * 
+     * @param albumId id of album
+     * @param videoarray array of videos in album 
      */
-    void appendDataToAlbumL(TMPXItemId albumId, CMPXMediaArray *videoArray);
+    void albumDataChangedL(TMPXItemId albumId, CMPXMediaArray *videoArray);
 
     /**
      * Called when an album has been removed.
--- a/videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/inc/videosortfilterproxymodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -175,7 +175,16 @@
 	 * @param mediaIds, list of item ids
 	 * @return 0 if no errors.
 	 */
-    int addItemsInAlbum(TMPXItemId albumId, const QList<TMPXItemId> &mediaIds);    
+    int addItemsInAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);    
+    
+    /**
+     * Removes items from existing album.
+     * 
+     * @param albumId, Album where to add items.
+     * @param mediaIds, list of item ids
+     * @return 0 if no errors.
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &mediaIds);    
 	
 	/**
 	 * Resolves duplicate album names and returns the resolved name.
@@ -195,10 +204,18 @@
      * If false, filtering works other way around. 
      * 
      * 
-     * @param TMPXItemId item id used as filter
+     * @param filterValue item id used as filter
+     * @param filterValue
      */
     void setGenericIdFilter(TMPXItemId itemId, bool filterValue);
     
+    /**
+     * Set album in use and invalidates filtering.
+     * 
+     * @param albumId album id
+     */
+    void setAlbumInUse(TMPXItemId albumId);
+    
 	/**
 	 * Gets the currently opened item.
 	 * 
@@ -218,13 +235,6 @@
     void shortDetailsReady(TMPXItemId itemId);
     
     /**
-    * Signal to be emitted after all details are being fetched.
-    * 
-    * @param index, index of the item
-    */ 
-    void fullDetailsReady(TMPXItemId itemId);
-    
-    /**
      * Signals that the model is ready, ie. that all data has been
      * loaded from myvideoscollection.
      */
--- a/videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/inc/videothumbnaildata_p.h	Thu Apr 01 23:32:44 2010 +0300
@@ -34,6 +34,7 @@
 class QModelIndex;
 class QTimer;
 class VideoThumbnailFetcher;
+class HbIcon;
 
 class VideoThumbnailDataPrivate : public QObject
 {
@@ -243,7 +244,7 @@
     VideoThumbnailFetcher            *mThumbnailFetcher;
     
     /**
-     * Local data map for thumbnail data:
+     * Local cache for thumbnail data:
      * - key is the video's media id
      * - data is the actual thumbnail data.
      * If thumbnail data is not yet fetched, QIcon is default thumbnail.
@@ -251,10 +252,12 @@
     QCache<TMPXItemId, QIcon>        mThumbnailData;
 
     /**
-     * Default thumbnail for a video.
+     * Local hash for default thumbnails.
+     * - key is mpx item id defining default tn type 
+     *  - data is the actual thumbnail data.
      */
-    QIcon                           *mDefaultTnVideo;
-
+    QHash<TMPXItemId, HbIcon>       mDefaultThumbnails;
+    
     /**
      * Default thumbnail for a category.
      */
--- a/videocollection/videocollectionwrapper/src/videocollectionclient.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videocollectionclient.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -284,7 +284,7 @@
 {
     int err(-1);
     
-    if (mCollectionUtility)
+    if (mCollectionUtility && mediaIds.count())
     {
         TRAP(err, removeAlbumsL(mediaIds));
     }
@@ -296,13 +296,13 @@
 // addItemsInAlbum
 // -----------------------------------------------------------------------------
 //
-int VideoCollectionClient::addItemsInAlbum(TMPXItemId albumId,
+int VideoCollectionClient::addItemsInAlbum(TMPXItemId &albumId,
     const QList<TMPXItemId> &mediaIds)
 {
     int err(-1);
     
     if (mCollectionUtility && albumId != TMPXItemId::InvalidId() &&
-        albumId.iId2 == KVcxMvcMediaTypeAlbum)
+        albumId.iId2 == KVcxMvcMediaTypeAlbum && mediaIds.count())
     {
         TRAP(err, addItemsInAlbumL(albumId, mediaIds));
     }
@@ -311,6 +311,24 @@
 }
 
 // -----------------------------------------------------------------------------
+// removeItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+int VideoCollectionClient::removeItemsFromAlbum(TMPXItemId &albumId, 
+            const QList<TMPXItemId> &mediaIds)
+{
+    int err(-1);
+        
+    if (mCollectionUtility && albumId != TMPXItemId::InvalidId() &&
+        albumId.iId2 == KVcxMvcMediaTypeAlbum && mediaIds.count())
+    {
+        TRAP(err, removeItemsFromAlbumL(albumId, mediaIds));
+    }
+    
+    return err;
+}
+
+// -----------------------------------------------------------------------------
 // startOpenCollectionL
 // -----------------------------------------------------------------------------
 //
@@ -498,15 +516,25 @@
     int count = mediaIds.count();
     for (int i = 0; i < count; i++)
     {
-        media = CMPXMedia::NewL();
-        CleanupStack::PushL(media);
-        media->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i));
-        array->AppendL(*media);
-        CleanupStack::PopAndDestroy(media);
+        if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeAlbum)
+        {
+            media = CMPXMedia::NewL();
+            CleanupStack::PushL(media);
+            media->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i));
+            array->AppendL(*media);
+            CleanupStack::PopAndDestroy(media);
+        }
     }
-    cmd->SetCObjectValueL(KMPXMediaArrayContents, array);
-
-    mCollectionUtility->Collection().CommandL(*cmd);
+    if(array->Count())
+    {
+        cmd->SetCObjectValueL(KMPXMediaArrayContents, array);
+        mCollectionUtility->Collection().CommandL(*cmd);
+    }
+    else
+    {
+        // invalid data provided
+        User::Leave(KErrGeneral);   
+    }
 
     CleanupStack::PopAndDestroy( array );  
     CleanupStack::PopAndDestroy( cmd );  
@@ -549,7 +577,7 @@
 // addItemsInAlbumL
 // -----------------------------------------------------------------------------
 //
-void VideoCollectionClient::addItemsInAlbumL(TMPXItemId albumId,
+void VideoCollectionClient::addItemsInAlbumL(TMPXItemId &albumId,
     const QList<TMPXItemId> &mediaIds)
 {
     CMPXCommand* cmd = CMPXCommand::NewL();
@@ -557,7 +585,6 @@
     cmd->SetTObjectValueL(KMPXCommandGeneralId, KVcxCommandIdMyVideos);
     cmd->SetTObjectValueL(KVcxMediaMyVideosCommandId, KVcxCommandMyVideosAddToAlbum);
     cmd->SetTObjectValueL(KVcxMediaMyVideosUint32Value, albumId.iId1);
-    cmd->SetTObjectValueL(KMPXCommandGeneralDoSync, EFalse);
     cmd->SetTObjectValueL(KMPXCommandGeneralCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection));
 
     CMPXMediaArray* array = CMPXMediaArray::NewL();
@@ -566,16 +593,69 @@
     int count = mediaIds.count();
     for (int i = 0; i < count; i++)
     {
-        video = CMPXMedia::NewL();
-        CleanupStack::PushL(video);
-        video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i));
-        array->AppendL(*video);
-        CleanupStack::PopAndDestroy(video);
+        if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeVideo)
+        {
+            video = CMPXMedia::NewL();
+            CleanupStack::PushL(video);
+            video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i));
+            array->AppendL(*video);
+            CleanupStack::PopAndDestroy(video);
+        }
+    }
+    if(array->Count())
+    {
+        cmd->SetCObjectValueL(KMPXMediaArrayContents, array);
+        mCollectionUtility->Collection().CommandL(*cmd);
+    }
+    else
+    {
+        // invalid data provided
+        User::Leave(KErrGeneral);   
     }
-    cmd->SetCObjectValueL(KMPXMediaArrayContents, array);
+
+    CleanupStack::PopAndDestroy(array);
+    CleanupStack::PopAndDestroy(cmd);
+}
+
+// -----------------------------------------------------------------------------
+// removeItemsFromAlbumL
+// -----------------------------------------------------------------------------
+//
+void VideoCollectionClient::removeItemsFromAlbumL(TMPXItemId &albumId, 
+                                                const QList<TMPXItemId> &mediaIds)
+{
+    CMPXCommand* cmd = CMPXCommand::NewL();
+    CleanupStack::PushL(cmd);
+    cmd->SetTObjectValueL(KMPXCommandGeneralId, KVcxCommandIdMyVideos);
+    cmd->SetTObjectValueL(KVcxMediaMyVideosCommandId, KVcxCommandMyVideosRemoveFromAlbum);
+    cmd->SetTObjectValueL(KVcxMediaMyVideosUint32Value, albumId.iId1);
+    cmd->SetTObjectValueL(KMPXCommandGeneralCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection));
 
-    mCollectionUtility->Collection().CommandL(*cmd);
-
+    CMPXMediaArray* array = CMPXMediaArray::NewL();
+    CleanupStack::PushL( array );
+    CMPXMedia* video = 0;
+    int count = mediaIds.count();
+    for (int i = 0; i < count; i++)
+    {
+        if(mediaIds.at(i).iId2 == KVcxMvcMediaTypeVideo)
+        {
+            video = CMPXMedia::NewL();
+            CleanupStack::PushL(video);
+            video->SetTObjectValueL(KMPXMediaGeneralId, mediaIds.at(i));
+            array->AppendL(*video);
+            CleanupStack::PopAndDestroy(video);
+        }
+    }
+    if(array->Count())
+    {
+        cmd->SetCObjectValueL(KMPXMediaArrayContents, array);
+        mCollectionUtility->Collection().CommandL(*cmd);
+    }
+    else
+    {
+        // invalid data provided
+        User::Leave(KErrGeneral);   
+    }
     CleanupStack::PopAndDestroy(array);
     CleanupStack::PopAndDestroy(cmd);
 }
--- a/videocollection/videocollectionwrapper/src/videocollectionlistener.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videocollectionlistener.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -107,7 +107,7 @@
     TMPXItemId pathId = path->Id();
     
     TBool categoryOrAlbumVideoList = false;
-    if(path->Levels() == VideoCollectionCommon::PathLevelVideos && pathId.iId2 != 0)
+    if(path->Levels() == VideoCollectionCommon::PathLevelVideos && pathId.iId2 != KVcxMvcMediaTypeVideo)
 	{
         categoryOrAlbumVideoList = true;
 	}
--- a/videocollection/videocollectionwrapper/src/videocollectionutils.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videocollectionutils.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -70,11 +70,11 @@
         {
             if(hours == 1)
             {
-                lengthStr = QObject::tr("%1 hour ").arg(QString::number(hours)); //TODO: Localisation
+                lengthStr = QObject::tr("%1 hour ").arg(QString::number(hours)); //localisation
             }
             else
             {
-                lengthStr += QObject::tr("%1 hours ").arg(QString::number(hours)); //TODO: Localisation
+                lengthStr += QObject::tr("%1 hours ").arg(QString::number(hours)); //localisation
             }
         }
 
@@ -82,22 +82,22 @@
         {
             if(minutes == 1)
             {
-                lengthStr += QObject::tr("%1 minute ").arg(QString::number(minutes)); //TODO: Localisation
+                lengthStr += QObject::tr("%1 minute ").arg(QString::number(minutes)); //localisation
             }
             else
             {
-                lengthStr += QObject::tr("%1 minutes ").arg(QString::number(minutes)); //TODO: Localisation
+                lengthStr += QObject::tr("%1 minutes ").arg(QString::number(minutes)); //localisation
             }
         }
         if (seconds > 0 && hours == 0)
         {
             if(seconds == 1)
             {
-                lengthStr += QObject::tr("%1 second").arg(QString::number(seconds)); //TODO: Localisation
+                lengthStr += QObject::tr("%1 second").arg(QString::number(seconds)); //localisation
             }
             else
             {
-                lengthStr += QObject::tr("%1 seconds").arg(QString::number(seconds)); //TODO: Localisation
+                lengthStr += QObject::tr("%1 seconds").arg(QString::number(seconds)); //localisation
             }
         }
     } else {
@@ -113,18 +113,25 @@
 const QStringList VideoCollectionUtils::prepareLengthStrings(quint32 total)
 {
     const int secondsInMinute( 60 );
+    const int secondsInHour( 3600 );
 
+    quint32 hours(0);
     quint32 minutes(0);
     quint32 seconds(0);
     
+    QString hrs("");
+    QString mins("");
+    QString secs("");
+
     if ( total > 0 )
     {
-        minutes = (total / secondsInMinute);
+    	hours =   (total / secondsInHour);
+    	total = total - (hours * secondsInHour);
+    	minutes = (total / secondsInMinute);
         seconds = (total % secondsInMinute);
     }
     
-    QString mins("");
-    QString secs("");
+    hrs = QString::number(hours); 
     
     if (minutes < 10)
     {
@@ -135,9 +142,7 @@
     {
         mins = QString::number(minutes);
     }
-      
-    QString secondsStr("");
-    
+
     if (seconds < 10)
     {
         secs = "0" + QString::number(seconds); 
@@ -150,6 +155,7 @@
     
     QStringList retVal;
     
+    retVal.append(hrs);
     retVal.append(mins);
     retVal.append(secs);
     
@@ -180,23 +186,23 @@
         {
             dispSize  = size + videoSizeHalfGB;
             dispSize /= videoSizeGB;
-            sizeStr = QString(QObject::tr("%1 GB").arg(QString::number(dispSize))); //TODO: Localisation
+            sizeStr = QString(QObject::tr("%1 GB").arg(QString::number(dispSize))); //localisation
         }
         else if ( size >= videoSizeMB )
         {
             dispSize  = size + videoSizeHalfMB;
             dispSize /= videoSizeMB;
-            sizeStr = QString(QObject::tr("%1 MB").arg(QString::number(dispSize))); //TODO: Localisation
+            sizeStr = QString(QObject::tr("%1 MB").arg(QString::number(dispSize))); //localisation
         }
         else if (size >= videoSizeKB) 
         {
             dispSize  = size + videoSizeHalfKB;
             dispSize /= videoSizeKB;
-            sizeStr = QString(QObject::tr("%1 kB").arg(QString::number(dispSize))); //TODO: Localisation
+            sizeStr = QString(QObject::tr("%1 kB").arg(QString::number(dispSize))); //localisation
         }
         else
         {
-            sizeStr = QString(QObject::tr("%1B").arg(QString::number(size))); //TODO: Localisation
+            sizeStr = QString(QObject::tr("%1B").arg(QString::number(size))); //localisation
         }
     }
     
--- a/videocollection/videocollectionwrapper/src/videolistdatamodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videolistdatamodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -14,6 +14,7 @@
 * Description: VideoListDataModel class implementation
 * 
 */
+
 // INCLUDE FILES
 
 #include <hbglobal.h>
@@ -26,7 +27,6 @@
 #include "videodeleteworker.h"
 #include "videocollectionwrapper.h"
 
-
 // ================= MEMBER FUNCTIONS =======================
 //
 
@@ -236,7 +236,7 @@
 // prepareDetailRow()
 // -----------------------------------------------------------------------------
 //
-QString VideoListDataModel::prepareDetailRow( int index ) const
+QString VideoListDataModel::prepareDetailRow(int index) const
 {
     // TODO: download -status?
 
@@ -246,26 +246,49 @@
     
     if(itemId.iId2 != KVcxMvcMediaTypeVideo) //category || album
     {
-        //TODO: get real items and total length
-        int items          = 99;
-        QString minutesStr = "10";
-        QString secondsStr = "01";
-        retString = hbTrId("txt_videos_dblist_val_ln_videos_l1l2", items).arg(minutesStr).arg(secondsStr);
+        retString = prepareVideoCountString(index);
     }
     else //video
     {
         const QString sizeStr = prepareSizeString(index);
         const QStringList list = prepareLengthStrings( index );
-        retString = hbTrId("txt_videos_dblist_captured_val_1_l1l2").arg(sizeStr).arg(list.at(0)).arg(list.at(1));
+        QString duration;
+        duration.append(list.at(0));
+        duration.append(":");
+        duration.append(list.at(1));
+        duration.append(":");
+        duration.append(list.at(2));
+        retString = hbTrId("txt_videos_dblist_captured_val_1_l1").arg(duration).arg(sizeStr);
     }
     return retString; 
 }
 
 // -----------------------------------------------------------------------------
+// prepareVideoCountString()
+// -----------------------------------------------------------------------------
+//
+QString VideoListDataModel::prepareVideoCountString(int index) const
+{
+    QString videoCountString("");
+
+    quint32 items = d_ptr->getCategoryVideoCountFromIndex(index);
+    if(items > 0)
+    {
+        videoCountString = hbTrId("txt_videos_dblist_val_ln_videos", items);
+    }
+    else
+    {
+        videoCountString = hbTrId("txt_videos_info_no_videos");
+    }
+
+    return videoCountString;
+}
+
+// -----------------------------------------------------------------------------
 // prepareSizeString()
 // -----------------------------------------------------------------------------
 //
-QString VideoListDataModel::prepareSizeString( int index ) const
+QString VideoListDataModel::prepareSizeString(int index) const
 {
     QString sizeStr("");
 
@@ -279,7 +302,7 @@
 // VideoListDataModel::prepareLengthStrings()
 // -----------------------------------------------------------------------------
 //
-QStringList VideoListDataModel::prepareLengthStrings( int index ) const
+QStringList VideoListDataModel::prepareLengthStrings(int index) const
 {
     quint32 total = d_ptr->getVideodurationFromIndex(index);
     return VideoCollectionUtils::instance().prepareLengthStrings(total);
@@ -450,13 +473,30 @@
 // albumInUse()
 // -----------------------------------------------------------------------------
 //
-
 TMPXItemId VideoListDataModel::albumInUse()
 {
     return d_ptr->mCurrentAlbum;
 }
 
 // -----------------------------------------------------------------------------
+// removeItemsFromAlbum()
+// -----------------------------------------------------------------------------
+//
+int VideoListDataModel::removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items)
+{
+    int removeCount = d_ptr->removeItemsFromAlbum(albumId, items);
+    if(removeCount)
+    {
+        if(mCollectionClient->removeItemsFromAlbum(albumId, items) < 0)
+        {
+            return -1;
+        }
+        emit albumChanged();
+    }
+    return removeCount;
+}   
+
+// -----------------------------------------------------------------------------
 // deleteStartingFailsSlot()
 // -----------------------------------------------------------------------------
 //
--- a/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videolistdatamodel_p.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -139,6 +139,18 @@
 }
 
 // -----------------------------------------------------------------------------
+// getCategoryVideoCountFromIndex
+// -----------------------------------------------------------------------------
+//
+quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const
+{
+    quint32 count(0);
+    CMPXMedia *media = mMediaData.fromIndex(index);
+    VideoCollectionUtils::instance().mediaValue<quint32>(media, KVcxMediaMyVideosCategoryItemCount, count );
+    return count;
+}
+
+// -----------------------------------------------------------------------------
 // getVideoSizeFromIndex
 // -----------------------------------------------------------------------------
 //
@@ -147,7 +159,7 @@
     quint32 size(0);
     CMPXMedia *media = mMediaData.fromIndex(index);
     VideoCollectionUtils::instance().mediaValue<quint32>(media, KMPXMediaGeneralSize, size );    
-    return size;    
+    return size;
 }
 
 // -----------------------------------------------------------------------------
@@ -366,7 +378,7 @@
 }
 
 // -----------------------------------------------------------------------------
-// belongsToAlbum
+// setAlbumInUse
 // -----------------------------------------------------------------------------
 //
 void VideoListDataModelPrivate::setAlbumInUse(TMPXItemId albumId)
@@ -375,6 +387,30 @@
 }
 
 // -----------------------------------------------------------------------------
+// removeItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+int VideoListDataModelPrivate::removeItemsFromAlbum(TMPXItemId &albumId, 
+                                        const QList<TMPXItemId> &items)
+{
+    QHash<TMPXItemId, QSet<TMPXItemId> >::iterator iter = mAlbumData.find(albumId);
+    if(iter == mAlbumData.end())
+    {
+        return 0;
+    }
+    int removeCount = 0;
+    int count = items.count();
+    for(int i = 0; i < count; ++i)
+    {
+        if(iter->remove(items.at(i)))
+        {
+            ++removeCount;
+        }
+    }   
+    return removeCount;
+}
+
+// -----------------------------------------------------------------------------
 // getMediaId
 // -----------------------------------------------------------------------------
 //
@@ -449,10 +485,10 @@
 }
 
 // -----------------------------------------------------------------------------
-// appendDataToAlbumL
+// albumDataChangedL
 // -----------------------------------------------------------------------------
 //
-void VideoListDataModelPrivate::appendDataToAlbumL(TMPXItemId albumId,
+void VideoListDataModelPrivate::albumDataChangedL(TMPXItemId albumId,
     CMPXMediaArray *videoArray)
 {
     if (!videoArray || albumId == TMPXItemId::InvalidId())
@@ -460,14 +496,10 @@
         return;
     }
     QSet<TMPXItemId> items;
-    QHash<TMPXItemId, QSet<TMPXItemId> >::iterator iter;
-    // if album exists fetch existing items
-    iter =  mAlbumData.find(albumId);
-    if(iter != mAlbumData.end())
-    {
-        items = iter.value();
-    }
-    bool albumUpdated = false;
+       
+    // remove existing
+    mAlbumData.remove(albumId);
+    
     int videoCount = videoArray->Count();
     CMPXMedia *media = 0;
     TMPXItemId id = TMPXItemId::InvalidId();
@@ -476,20 +508,16 @@
     {
         media = videoArray->AtL(i);
         id = getMediaId(media);
-        if (id != TMPXItemId::InvalidId())
-        {
-            
+        if (id != TMPXItemId::InvalidId() && id.iId2 == KVcxMvcMediaTypeVideo)
+        {          
             items.insert(id);
-            albumUpdated = true;
         }
     }  
-    // overwrite existing or create new
+ 
     mAlbumData[albumId] = items;
+    
     // signal that album has been updated
-    if (albumUpdated)
-    {
-        emit q_ptr->albumChanged();
-    }
+    emit q_ptr->albumChanged();
 
     // signal that model is ready
     emit q_ptr->modelReady();
@@ -661,6 +689,7 @@
     if(iter != mAlbumData.end())
     {
         iter->clear();
+        mAlbumData.remove(albumId);
         changed = true;
     }
 
@@ -745,6 +774,10 @@
 //
 void VideoListDataModelPrivate::albumRemoveFailureSlot(QList<TMPXItemId> *failedMediaIds)
 {
+    if(!failedMediaIds)
+    {
+        return;
+    }
     int status(VideoCollectionCommon::statusRemoveSucceed);
     QVariant data;
     if(failedMediaIds->count() > 0)
@@ -786,7 +819,7 @@
     CMPXMediaArray *albumItems)
 {
     // currently only one album is kept in memory
-    TRAP_IGNORE(appendDataToAlbumL(albumId, albumItems));
+    TRAP_IGNORE(albumDataChangedL(albumId, albumItems));
 }
 
 // End of file
--- a/videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -33,15 +33,15 @@
 // -----------------------------------------------------------------------------
 //
 VideoSortFilterProxyModel::VideoSortFilterProxyModel(int type, QObject *parent) :
- QSortFilterProxyModel(parent),
- mModel(0),
- mCollectionClient(0),
- mType(type),
- mLevel(-1),
- mGenericFilterId(TMPXItemId::InvalidId()),
+QSortFilterProxyModel(parent),
+mModel(0),
+mCollectionClient(0),
+mType(type),
+mLevel(-1),
+mGenericFilterId(TMPXItemId::InvalidId()),
 mGenericFilterValue(false),
- mIdleSortTimer(0),
- mWantedSortRole(VideoCollectionCommon::KeyDateTime)
+mIdleSortTimer(0),
+mWantedSortRole(VideoCollectionCommon::KeyDateTime)
 {
     // NOP
 }
@@ -87,12 +87,6 @@
 //
 bool VideoSortFilterProxyModel::connectSignals()
 {
-    if(!connect(mModel, SIGNAL(fullVideoDetailsReady(TMPXItemId)),
-                    this, SIGNAL(fullDetailsReady(TMPXItemId)))) 
-    {
-        return false;
-    }
-    
     if(!connect(mModel, SIGNAL(modelReady()),
             this, SIGNAL(modelReady()))) 
     {
@@ -103,10 +97,13 @@
     {
         return false;
     }
-    if(!connect(mModel, SIGNAL(albumChanged()),
-                  this, SLOT(albumChangedSlot()))) 
+    if(mType == VideoCollectionWrapper::ECollectionContent)
     {
-        return false;
+        if(!connect(mModel, SIGNAL(albumChanged()),
+                    this, SLOT(albumChangedSlot()))) 
+        {
+            return false;
+        }
     }
     return true;
 }
@@ -117,11 +114,13 @@
 //
 void VideoSortFilterProxyModel::disconnectSignals()
 {
-    disconnect(mModel, SIGNAL(fullVideoDetailsReady(TMPXItemId)),
-                                this, SIGNAL(fullDetailsReady(TMPXItemId)));
-    disconnect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady()));
+	disconnect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady()));
     disconnect(mModel, SIGNAL(modelChanged()), this, SIGNAL(modelChanged()));
-    disconnect(mModel, SIGNAL(albumChanged()), this, SLOT(albumChangedSlot())); 
+    if(mType == VideoCollectionWrapper::ECollectionContent)
+    {
+        disconnect(mModel, SIGNAL(albumChanged()), this, SLOT(albumChangedSlot()));
+    }
+
 }
 
 // -----------------------------------------------------------------------------
@@ -137,7 +136,7 @@
     
     if(mLevel != level) 
     {
-        mLevel = level;   
+        mLevel = level;
         invalidateFilter();
     }
     // need to call open every time to make sure all items are 
@@ -213,7 +212,6 @@
         {
             // Start fetching thumbnails at start of the model.
             VideoThumbnailData::instance().startBackgroundFetching(0, 0);
-            
             return 0;
         }
     }
@@ -228,8 +226,6 @@
 {
     if(mediaId != TMPXItemId::InvalidId() && mCollectionClient)
     {
-        mModel->setAlbumInUse(TMPXItemId::InvalidId());
-        
         if(mCollectionClient->openItem(mediaId) == 0)
         {
             if(mediaId.iId2 != KVcxMvcMediaTypeVideo)
@@ -250,10 +246,8 @@
 //
 int VideoSortFilterProxyModel::back()
 {
-
     if(mCollectionClient && mCollectionClient->back() == 0)
     {
-
         if(mLevel == VideoCollectionCommon::ELevelAlbum)
         {
             mLevel = VideoCollectionCommon::ELevelCategory;
@@ -264,7 +258,6 @@
         }
         return 0;
     }
-
     return -1;
 }
 
@@ -414,10 +407,10 @@
 // VideoSortFilterProxyModel::filterAcceptsRow
 // -----------------------------------------------------------------------------
 //
-bool VideoSortFilterProxyModel::filterAcceptsRow (int source_row, const QModelIndex &source_parent) const
+bool VideoSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
 {
     Q_UNUSED(source_parent);
-
+    
     if(!sourceModel())
         return false;
 
@@ -440,7 +433,6 @@
     }
     else if(mType == VideoCollectionWrapper::ECollections)
     {
-        
         if(mLevel == VideoCollectionCommon::ELevelCategory && id.iId2 != KVcxMvcMediaTypeVideo)
         {
             return true;
@@ -456,7 +448,6 @@
     }
     else if(mType == VideoCollectionWrapper::EGeneric)
     {
-
         if(mLevel == VideoCollectionCommon::ELevelVideos && id.iId2 == KVcxMvcMediaTypeVideo)
         {
             //  filter items that belong to that album setted as filter id
@@ -624,7 +615,7 @@
 // VideoSortFilterProxyModel::addItemsInAlbum()
 // -----------------------------------------------------------------------------
 //
-int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId albumId,
+int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId &albumId,
         const QList<TMPXItemId> &mediaIds)
 {
     int err(-1);
@@ -639,6 +630,29 @@
 }
 
 // -----------------------------------------------------------------------------
+// VideoSortFilterProxyModel::removeItemsFromAlbum()
+// -----------------------------------------------------------------------------
+//
+int VideoSortFilterProxyModel::removeItemsFromAlbum(TMPXItemId &albumId, 
+        const QList<TMPXItemId> &mediaIds)
+{
+    int err(-1);
+       
+    if (mModel)
+    {        
+        // remove items in album
+        err = mModel->removeItemsFromAlbum(albumId, mediaIds);
+        if(err > 0)
+        {
+            // if there really were items to be removed, invalid filter
+            invalidateFilter();
+            err = 0;
+        }
+    }
+    return err;
+}
+
+// -----------------------------------------------------------------------------
 // VideoSortFilterProxyModel::getOpenItem()
 // -----------------------------------------------------------------------------
 //
@@ -677,6 +691,16 @@
 }
 
 // -----------------------------------------------------------------------------
+// VideoSortFilterProxyModel::setAlbumInUse()
+// -----------------------------------------------------------------------------
+//
+void VideoSortFilterProxyModel::setAlbumInUse(TMPXItemId albumId)
+{
+    mModel->setAlbumInUse(albumId);
+    invalidateFilter();
+}
+
+// -----------------------------------------------------------------------------
 // VideoSortFilterProxyModel::albumChangedSlot()
 // -----------------------------------------------------------------------------
 //
--- a/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -20,6 +20,8 @@
 #include <qpixmap.h>
 #include <qtimer.h>
 #include <mpxmediageneraldefs.h>
+#include <hbicon.h>
+
 #include <vcxmyvideosdefs.h>
 
 #include "videothumbnaildata_p.h"
@@ -58,8 +60,6 @@
 //
 VideoThumbnailDataPrivate::VideoThumbnailDataPrivate() :
     mThumbnailFetcher(0),
-    mDefaultTnVideo(0),
-    mDefaultTnCategory(0),
     mCurrentModel(0),
     mCurrentFetchIndex(0),
     mCurrentBackgroundFetchCount(0),
@@ -417,18 +417,62 @@
 //
 const QIcon* VideoThumbnailDataPrivate::defaultThumbnail(TMPXItemId mediaId)
 {
-    // Is thumbnail for a video or a category.
+    const TMPXItemId defaultIdVideo(KMaxTUint32-1, KVcxMvcMediaTypeVideo);
+    const TMPXItemId defaultIdAlbum(KMaxTUint32-1, KVcxMvcMediaTypeAlbum);
+    const TMPXItemId defaultIdDownloads(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory);
+    const TMPXItemId defaultIdCaptured(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory);
+
+    // Default thumbnail for video
     if(mediaId.iId2 == KVcxMvcMediaTypeVideo) 
     {
-        if(!mDefaultTnVideo)
-            mDefaultTnVideo = new QIcon(":/icons/default_thumbnail_video.svg");
-        return mDefaultTnVideo;
+        if(!mDefaultThumbnails.contains(defaultIdVideo))
+        {
+            mDefaultThumbnails[defaultIdVideo] = HbIcon(":/icons/default_thumbnail_video.svg");
+        }
+        return &mDefaultThumbnails[defaultIdVideo].qicon();
     }
     else
     {
-        if(!mDefaultTnCategory)
-            mDefaultTnCategory = new QIcon(":/icons/default_thumbnail_collection.svg");
-        return mDefaultTnCategory;
+        // Default thumbnail for user defined album.
+        if(mediaId.iId2 == KVcxMvcMediaTypeAlbum)
+        {
+            if(!mDefaultThumbnails.contains(defaultIdAlbum))
+            {
+                mDefaultThumbnails[defaultIdAlbum] = HbIcon(":/icons/default_thumbnail_collection.svg");
+            }
+            return &mDefaultThumbnails[defaultIdAlbum].qicon();
+        }
+
+        // Thumbnails for default collections.
+        switch(mediaId.iId1)
+        {
+            case KVcxMvcCategoryIdDownloads:
+            {
+                if(!mDefaultThumbnails.contains(defaultIdDownloads))
+                {
+                    mDefaultThumbnails[defaultIdDownloads] = HbIcon("qtg_large_video_download");
+                }
+                return &mDefaultThumbnails[defaultIdDownloads].qicon();
+            }
+            
+            case KVcxMvcCategoryIdCaptured:
+            {
+                if(!mDefaultThumbnails.contains(defaultIdCaptured))
+                {
+                    mDefaultThumbnails[defaultIdCaptured] = HbIcon("qtg_large_video_capture");
+                }
+                return &mDefaultThumbnails[defaultIdCaptured].qicon();
+            }
+
+            default:
+            {
+                if(!mDefaultThumbnails.contains(defaultIdAlbum))
+                {
+                    mDefaultThumbnails[defaultIdAlbum] = HbIcon(":/icons/default_thumbnail_collection.svg");
+                }
+                return &mDefaultThumbnails[defaultIdAlbum].qicon();
+            }
+        }
     }
 }
 
@@ -480,12 +524,7 @@
     // Clear data.
     mReadyThumbnailMediaIds.clear();
     mThumbnailData.clear();
-    
-    delete mDefaultTnVideo;
-    mDefaultTnVideo = 0;
-    
-    delete mDefaultTnCategory;
-    mDefaultTnCategory = 0;
+    mDefaultThumbnails.clear();
 }
 
 // -----------------------------------------------------------------------------
--- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/inc/testvideocollectionclient.h	Thu Apr 01 23:32:44 2010 +0300
@@ -148,6 +148,11 @@
     void testGetVideoDetails();
     
     /**
+     * verifies removeAlbums
+     */
+    void testRemoveAlbums();
+    
+    /**
      * verifies addNewCollection -call.
      */
     void testAddNewCollection();
@@ -158,6 +163,11 @@
     void testAddItemsInAlbum();
     
     /**
+     * verifies removeItemsFromAlbum
+     */
+    void testRemoveItemsFromAlbum();
+    
+    /**
      * verifies back -call
      *
      */
--- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/src/testvideocollectionclient.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -418,6 +418,49 @@
     
 }
 
+// -----------------------------------------------------------------------------
+// testRemoveAlbums
+// -----------------------------------------------------------------------------
+//
+void TestVideoCollectionClient::testRemoveAlbums()
+{
+    TMPXItemId id(1,1); 
+    QList<TMPXItemId> albums;
+    
+    // no collectionutility
+    QVERIFY(mTestObject->removeAlbums(albums) == -1); 
+    
+    // collection exists
+    QVERIFY(mTestObject->initialize(mSignalReceiver) == 0); 
+    
+    // command leaves, no items
+    MMPXCollection::setCommandLLeave(true);
+    QVERIFY(mTestObject->removeAlbums(albums) < 0); 
+    
+    // command leaves items exists
+    albums.append(TMPXItemId(1,2));
+    albums.append(TMPXItemId(1,2));
+    QVERIFY(mTestObject->removeAlbums(albums) < 0); 
+    
+    // command does not leave, no items
+    albums.clear();
+    MMPXCollection::setCommandLLeave(false);
+    QVERIFY(mTestObject->removeAlbums(albums) < 0);
+    
+    // command does not leave, items exist, both albums and non abums
+    albums.append(TMPXItemId(1,2));
+    albums.append(TMPXItemId(2,0));
+    albums.append(TMPXItemId(2,2));
+    QVERIFY(mTestObject->removeAlbums(albums) == 0); 
+    
+    // command does not leave, items exist, only non abums
+    albums.clear();
+    albums.append(TMPXItemId(1,0));
+    albums.append(TMPXItemId(2,0));
+    albums.append(TMPXItemId(3,0));
+    QVERIFY(mTestObject->removeAlbums(albums) < 0); 
+    
+}
 
 // -----------------------------------------------------------------------------
 // testAddNewCollection
@@ -489,16 +532,72 @@
     MMPXCollection::setCommandLLeave(false);
     
     // empty list
-    QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) == 0);
+    QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) < 0);
     
     mediaIds.append(TMPXItemId(1,0));
+    mediaIds.append(TMPXItemId(2,2));
     mediaIds.append(TMPXItemId(2,0));
-    // list contains items
+    // list contains items, both videos and non-videos
     QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) == 0);
+    
+    // list contains only non-videos
+    mediaIds.clear();
+    mediaIds.append(TMPXItemId(1,2));
+    mediaIds.append(TMPXItemId(2,2));
+    mediaIds.append(TMPXItemId(2,1));
+       
+   QVERIFY(mTestObject->addItemsInAlbum(albumId, mediaIds) < 0);
    
 }
 
 // -----------------------------------------------------------------------------
+// testRemoveItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+void TestVideoCollectionClient::testRemoveItemsFromAlbum()
+{
+    TMPXItemId albumId = TMPXItemId(1,2);
+    QList<TMPXItemId> mediaIds;
+    
+    // no collectionutility
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+    
+    albumId = TMPXItemId::InvalidId();
+    mTestObject->initialize(mSignalReceiver);
+    // invalid album id
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+       
+    albumId = TMPXItemId(1,0);
+    // media type not album
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+    
+    // command leaves
+    albumId = TMPXItemId(1,2);
+    MMPXCollection::setCommandLLeave(true);
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+    MMPXCollection::setCommandLLeave(false);
+    
+    // empty list
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+    
+    mediaIds.append(TMPXItemId(1,0));
+    mediaIds.append(TMPXItemId(2,2));
+    mediaIds.append(TMPXItemId(2,0));
+    
+    // list contains items, both videos and non-videos
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) == 0);
+    
+    // list contains only non-videos
+    mediaIds.clear();
+    mediaIds.append(TMPXItemId(1,2));
+    mediaIds.append(TMPXItemId(2,2));
+    mediaIds.append(TMPXItemId(2,1));
+    
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, mediaIds) < 0);
+    
+}
+
+// -----------------------------------------------------------------------------
 // testBack
 // -----------------------------------------------------------------------------
 //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionclient/stub/inc/mpxmediaarray.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: stub array of media objects for unit testing CVideocollectionClient
+*
+*/
+
+#ifndef CMPXMEDIAARRAY_H
+#define CMPXMEDIAARRAY_H
+
+#include <s32strm.h>
+
+
+class CMPXMedia;
+
+class CMPXMediaArray : public CBase
+    {
+public:
+
+    /**
+     * creates new array
+     */
+    static CMPXMediaArray* NewL(){return new CMPXMediaArray();};
+    
+    /**
+     * Constructor 
+     */
+    CMPXMediaArray():itemCount(0){};
+    
+    /**
+     * Destructor 
+     */
+    ~CMPXMediaArray(){};
+
+    /**
+     * NOP 
+     */
+    void AppendL(const CMPXMedia* /*aMedia*/){itemCount++;};
+    
+    /**
+     * NOP 
+     */
+    void AppendL(const CMPXMedia& /*aMedia*/){itemCount++;};
+    
+    /**
+     * return itemCount
+     */
+    TInt Count() const{ return itemCount;};
+ 
+    int itemCount;
+    
+    };
+
+#endif // CMPXMEDIAARRAY_H
--- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videolistdatamodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -21,7 +21,7 @@
 
 #include <QObject>
 #include <qabstractitemmodel.h>
-
+#include <mpxitemid.h>
 
 // FORWARD DECLARATIONS
 class VideoCollectionClient;
@@ -70,9 +70,14 @@
 signals:
 
     /**
+     * not used in stub, but needed to make sure testable object is linked correctly
+     */
+    void shortDetailsReady(TMPXItemId);
+    
+    /**
      * not used ion stub, but needed to make sure testable object is linked correctly
      */
-    void fullVideoDetailsReady(int index);
+    void fullVideoDetailsReady(TMPXItemId);
             
 public: // from QAbstractItemModel
     
--- a/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideocollectionwrapper_p/stub/inc/videosortfilterproxymodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -19,6 +19,7 @@
 #define VIDEOSORTFILTERPROXYMODEL_H
 
 #include <qsortfilterproxymodel.h>
+#include <mpxitemid.h>
 
 class QTimer;
 class VideoListDataModel;
@@ -28,6 +29,10 @@
 {
     Q_OBJECT
     
+signals:
+    
+    void shortDetailsReady(TMPXItemId);
+    
 public: 
     
     /**
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/mediaobjectfactory.h	Thu Apr 01 23:32:44 2010 +0300
@@ -33,6 +33,7 @@
     MediaDetailSizeFlag  = 0x04,
     MediaDetailDurationFlag = 0x08,
     MediaDetailFilePathFlag = 0x10,
+    MediaDetailCategoryVideoCount = 0x20,
     MediaDetailAll = 0xff
 };
 
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/inc/testvideolistdatamodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -95,6 +95,11 @@
      *
      */
     void testMediaIdAtIndex();
+    
+    /**
+     * verifies indexOfId
+     */
+    void testIndexOfId();
 	
     /**
      * tests if correct file path for media will be returned at certain positions
@@ -138,7 +143,13 @@
      *
      */
     void testPrepareDetails(); 
-      
+
+    /**
+     * Tests video count string is created ok in all cases
+     *
+     */
+    void testPrepareVideoCountString();
+
     /**
      * Tests to make sure size strings are created ok in all cases
      *
@@ -173,6 +184,11 @@
     void testSetAlbumInUse();
     
     /**
+     * verifies removeItemsFromAlbum;
+     */
+    void testRemoveItemsFromAlbum();
+    
+    /**
      * tests reportAsyncStatus
      */
     void testreportAsyncStatus();
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/mediaobjectfactory.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -188,6 +188,17 @@
         }
     }
     
+    // set video count
+    if(detailSelectionFlag & MediaDetailCategoryVideoCount)
+    {  
+        int count = (index%5);
+        TRAPD(error, media->SetTObjectValueL<quint32>(KVcxMediaMyVideosCategoryItemCount, count));
+        if(error != KErrNone)
+        {
+            return false;
+        }
+    }    
+    
     return true;
     
 }
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -38,8 +38,6 @@
 
 const int MEDIA_COUNT = 10;
 
-
-
 // -----------------------------------------------------------------------------
 // main
 // -----------------------------------------------------------------------------
@@ -153,7 +151,7 @@
     VideoDeleteWorker::mCreateCount = 0;
     
     QVERIFY(mTestObjectNotInitialized->initialize() == 0);
-    // secon call should succeed right away
+    // second call should succeed right away
     QVERIFY(mTestObjectNotInitialized->initialize() == 0);
     QVERIFY(mTestObjectNotInitialized->getCollectionClient() != 0);
     
@@ -232,6 +230,49 @@
 }
 
 // -----------------------------------------------------------------------------
+// testIndexOfId
+// -----------------------------------------------------------------------------
+//
+void TestVideoListDataModel::testIndexOfId()
+{
+    mMediaFactory->removeArray();
+        
+    mMediaFactory->createMediaItems(MEDIA_COUNT);
+      
+    // ownership of media-array transferred
+    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
+    
+    QModelIndex index;
+    
+    // invalid id
+    TMPXItemId id = TMPXItemId::InvalidId();
+    index = mTestObjectInitialized->indexOfId(id);
+    QVERIFY(!index.isValid());
+    
+    //invalid index: does not exists
+    id = TMPXItemId(MEDIA_COUNT, 0);
+    index = mTestObjectInitialized->indexOfId(id);
+    QVERIFY(!index.isValid());
+    
+    // existing
+    id = TMPXItemId(0, 0);
+    index = mTestObjectInitialized->indexOfId(id);
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == 0);
+
+    id = TMPXItemId(MEDIA_COUNT / 2, 0);
+    index = mTestObjectInitialized->indexOfId(id);
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == MEDIA_COUNT / 2);
+    
+    id = TMPXItemId(MEDIA_COUNT - 1, 0);
+    index = mTestObjectInitialized->indexOfId(id);
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == MEDIA_COUNT - 1);
+ 
+}
+
+// -----------------------------------------------------------------------------
 // testMediaFilePathForId
 // -----------------------------------------------------------------------------
 //
@@ -439,7 +480,7 @@
     // test with valid "parent index
     QVERIFY(mTestObjectInitialized->columnCount(index) == 0);
 }
-   
+
 // -----------------------------------------------------------------------------
 // testIndex
 // -----------------------------------------------------------------------------
@@ -542,12 +583,35 @@
     
     // album typed data
     mMediaFactory->removeArray();        
-    mMediaFactory->createMediaItems(5, 2, MediaDetailNone);
+    mMediaFactory->createMediaItems(5, 2, MediaDetailCategoryVideoCount);
     mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
     modelIndex = mTestObjectInitialized->index(3, 0);
     result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
     QVERIFY (result.toStringList().count() == 2 );
-  
+}
+
+// -----------------------------------------------------------------------------
+// testPrepareVideoCountString
+// -----------------------------------------------------------------------------
+//
+void TestVideoListDataModel::testPrepareVideoCountString()
+{
+    QString details("");
+    QModelIndex modelIndex;
+    QVariant result;
+    
+    // Cagegory typed data.
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(MEDIA_COUNT, 1, MediaDetailCategoryVideoCount);
+    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
+
+    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
+    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
+    QVERIFY (result.toStringList().count() == 2 );
+    
+    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT-1, 0);
+    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
+    QVERIFY (result.toStringList().count() == 2 );
 }
 
 // -----------------------------------------------------------------------------
@@ -805,7 +869,32 @@
 {
     TMPXItemId dummyId(1,1);   
     mTestObjectInitialized->setAlbumInUse(dummyId);
-    QVERIFY(mTestObjectInitialized->d_ptr->mCurrentAlbum == dummyId);
+    QVERIFY(mTestObjectInitialized->albumInUse() == dummyId);
+}
+
+// -----------------------------------------------------------------------------
+// testRemoveItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+void TestVideoListDataModel::testRemoveItemsFromAlbum()
+{
+    VideoListDataModelPrivate::mRemoveFrAlbumReturn = 0;
+    VideoCollectionClient::mRemoveItemsReturn = 0;
+    TMPXItemId id(0,0);
+    QList<TMPXItemId> items;
+    items.append(id);
+    // remove count == 0
+    QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) == 0);
+    
+    VideoListDataModelPrivate::mRemoveFrAlbumReturn = 1;
+    VideoCollectionClient::mRemoveItemsReturn = -1;
+    // collectionclient returns < 0
+    QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) < 0);
+    
+    VideoListDataModelPrivate::mRemoveFrAlbumReturn = 1;
+    VideoCollectionClient::mRemoveItemsReturn = 0;
+    // succeeds
+    QVERIFY(mTestObjectInitialized->removeItemsFromAlbum(id, items) == 1);
 }
 
 // -----------------------------------------------------------------------------
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videocollectionclient.h	Thu Apr 01 23:32:44 2010 +0300
@@ -56,6 +56,11 @@
     int deleteVideos( QList<TMPXItemId> *ids );
     
     /**
+     * returns mRemoveItemsReturn
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);
+    
+    /**
      * if true, initializate fails
      */
     static bool mFailInitialize;
@@ -70,6 +75,11 @@
      */
     static int mInitializeCount;
     
+    /**
+     * returned from removeItemsFromAlbum
+     */
+    static int mRemoveItemsReturn;
+    
   
 };
 
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/inc/videolistdatamodel_p.h	Thu Apr 01 23:32:44 2010 +0300
@@ -141,6 +141,14 @@
     const QIcon* getVideoThumbnailFromIndex( int index ) const;
    
     /**
+     * return video count of the item at given index
+     * 
+     * @param index
+     * @return quint32
+     */
+    quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const;
+    
+    /**
      * return video size of the item at given index
      * 
      * @param index
@@ -224,6 +232,12 @@
      */
     void setAlbumInUse(TMPXItemId albumId);
     
+    /**
+     * returns mRemoveFrAlbumReturn
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &ids);
+    
+    
 private: // private methods
     
     /**
@@ -350,6 +364,16 @@
     static bool mFailInit;
 
     /**
+     * if true, size returned is mVideoCount
+     */
+    static bool mOverrideVideoCount;
+    
+    /**
+     * override video count value
+     */
+    static quint32 mVideoCount;
+    
+    /**
      * if true, size returned is mSize
      */
     static bool mOverrideSize;
@@ -379,6 +403,11 @@
      */
     static bool mBelongsToAlbum;
     
+    /**
+     * value returned from removeItemsFromAlbum
+     */
+    static int mRemoveFrAlbumReturn;
+    
 };
 
 /**
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videocollectionclient.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -26,6 +26,8 @@
 
 int VideoCollectionClient::mInitializeCount = 0;
 
+int VideoCollectionClient::mRemoveItemsReturn = -1;
+
 
 
 // -----------------------------------------------------------------------------
@@ -61,4 +63,16 @@
 }
 
 
+// -----------------------------------------------------------------------------
+// removeItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+int VideoCollectionClient::removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items)
+{
+    Q_UNUSED(albumId);
+    Q_UNUSED(items);
+    return mRemoveItemsReturn;
+}
 
+
+
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel/stub/src/videolistdatamodel_p.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -64,6 +64,8 @@
  */
 bool VideoListDataModelPrivate::mFailInit = false;
 
+bool VideoListDataModelPrivate::mOverrideVideoCount = false;
+quint32 VideoListDataModelPrivate::mVideoCount = 0;
 
 bool VideoListDataModelPrivate::mOverrideSize = false;
 quint32 VideoListDataModelPrivate::mSize = 0;
@@ -75,6 +77,8 @@
 
 bool VideoListDataModelPrivate::mBelongsToAlbum = false;
 
+int VideoListDataModelPrivate::mRemoveFrAlbumReturn = -1;
+
 // -----------------------------------------------------------------------------
 // CVideoListData
 // -----------------------------------------------------------------------------
@@ -173,15 +177,35 @@
 }
 
 // -----------------------------------------------------------------------------
+// getVideoThumbnailFromIndex
+// -----------------------------------------------------------------------------
+//
+quint32 VideoListDataModelPrivate::getCategoryVideoCountFromIndex( int index ) const
+{
+    if(mOverrideVideoCount)
+    {
+        return mVideoCount;
+    }
+    
+    quint32 count(0);
+    CMPXMedia *media = getMediaFromIndex(index);
+    if( media && media->IsSupported( KVcxMediaMyVideosCategoryItemCount ) )
+         {
+         count = *media->Value<TUint32>( KVcxMediaMyVideosCategoryItemCount );
+         }
+    return count;
+}
+
+// -----------------------------------------------------------------------------
 // getVideoSizeFromIndex
 // -----------------------------------------------------------------------------
 //
 quint32 VideoListDataModelPrivate::getVideoSizeFromIndex( int index ) const
 {
-     if(mOverrideSize)
-     {
-         return mSize;
-     }
+    if(mOverrideSize)
+    {
+        return mSize;
+    }
     quint32 size(0);
     CMPXMedia *media = getMediaFromIndex(index);
     if(media && media->IsSupported( KMPXMediaGeneralSize ))
@@ -285,6 +309,16 @@
     mCurrentAlbum = albumId;
 }
   
+// -----------------------------------------------------------------------------
+// removeItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+int VideoListDataModelPrivate::removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &ids)
+{
+    Q_UNUSED(albumId);
+    Q_UNUSED(ids);    
+    return mRemoveFrAlbumReturn;
+}
 
 // -----------------------------------------------------------------------------
 // getVideoStatusFromIndex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/mediaobjectfactory.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* 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:  Helper class for creating mediaobjects for testing CVideoListDataModel class methods*
+*/
+
+
+#ifndef __TESTVIDEOLISTMEDIAFACTORY_H__
+#define __TESTVIDEOLISTMEDIAFACTORY_H__
+
+
+class CMPXMediaArray;
+class CMPXMedia;
+
+/**
+ * flag values for selecting wich details are created for items
+ */
+enum MediaDataSelection
+{
+    MediaDataNone = 0x00,    
+    MediaDataRatingFlag = 0x01,
+    MediaDataDateFlag = 0x02,
+    MediaDataSizeFlag  = 0x04,
+    MediaDataDurationFlag = 0x08,
+    MediaDataAgeProfile = 0x10,
+    MediaDataFilePath = 0x20,
+    MediaDataName = 0x40,
+    MediaDataId   = 0x80,
+    MediaDataDesc = 0x100,
+    MediaDataModified = 0x200,
+    MediaDataAuthor = 0x400,
+    MediaDataCopyright = 0x800,
+    MediaDataLanguage = 0x1000,
+    MediaDataFormat = 0x2000,
+    MediaDetailCategoryVideoCount = 0x4000,
+    MediaDataAll = 0xffff
+};
+
+// const used for media creation
+_LIT( KMediaTestNamePrefix, "MEDIATESTNAME_%d" );
+const QString gQTMediaNamePrefix = "MEDIATESTNAME_";
+
+_LIT( KMediaTestPathPrefix, "MEDIATESTPATH_%d" );
+const QString gQTMediaPathPrefix = "MEDIATESTPATH_";
+
+_LIT( KMediaTestDescPrefix, "MEDIATESTDESC_%d" );
+const QString gQTMediaDescPrefix = "MEDIATESTDESC_";
+
+_LIT( KMediaTestAuthorPrefix, "MEDIATESTAUTHOR_%d" );
+const QString gQTMediaAuthorPrefix = "MEDIATESTAUTHOR_";
+
+_LIT( KMediaTestCopyrightPrefix, "MEDIATESTCOPYRIGHT_%d" );
+const QString gQTMediaCopyrightPrefix = "MEDIATESTCOPYRIGHT_";
+
+_LIT( KMediaTestLanguagePrefix, "MEDIATESTLANGUAGE_%d" );
+const QString gQTMediaLanguagePrefix = "MEDIATESTLANGUAGE_";
+
+_LIT( KMediaTestFormatPrefix, "MEDIATESTFORMAT_%d" );
+const QString gQTMediaFormatPrefix = "MEDIATESTFORMAT_";
+
+class MediaObjectFactory 
+{
+
+public:
+    /**
+     * constructor.
+     */
+    MediaObjectFactory();
+    
+    /**
+     * destructor
+     */
+    ~MediaObjectFactory();
+    
+    /**
+     * returns pointer to media-array 
+     */
+    CMPXMediaArray* mediaArray();
+    
+    /**
+     * creates a copy of media-array and transfers ownership to caller 
+     */
+    CMPXMediaArray* copyOfMediaArray();
+    
+    /**
+     * creates wanted amount of items with selected details
+     * 
+     * @param count
+     * @param MediaDetailSelection flags
+     */
+    void createMediaItems(int count, int flags = MediaDataAll);
+       
+    /**
+     * creates CMPXMediaArray of category items
+     * 
+     */
+    void createCollectionItems();
+
+    /**
+     * deletes media-array 
+     */
+    void removeArray();
+    
+    /**
+     * creates media-item
+     * 
+     * @index used as part of data values
+     * @MediaDetailSelection
+     * 
+     * @return CMPXMedia 
+     */
+    CMPXMedia* getMedia(int index, int dataSelectionFlags  = MediaDataAll );
+    
+    /**
+     * creates media-item
+     * 
+     * @index used as part of data values
+     * @MediaDetailSelection
+     * 
+     * @return CMPXMedia 
+     */
+    CMPXMedia* getMediaWithWantedIds(int id1, int id2 );
+    
+private:
+    
+    /**
+     * fills data for media
+     */
+    bool fillData(CMPXMedia *media, int index, int dataSelectionFlags  = MediaDataAll );
+    
+    /**
+     * array of medias
+     */
+    CMPXMediaArray *mArray;
+};
+
+
+#endif  // __TESTVIDEOLISTMEDIAFACTORY_H__
+
+// End of file
+    
+
+
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/inc/testvideomodel_p.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,12 +15,9 @@
 *
 */
 
-
-
 #ifndef __TESTVIDEOMODEL_P_H__
 #define __TESTVIDEOMODEL_P_H__
 
-
 // INCLUDES
 #include <QtTest/QtTest>
 #include <QList>
@@ -57,21 +54,31 @@
     void signalAppendVideoList(CMPXMediaArray*);
     
     /**
+     * emitted to verify albumListAvailableSlot
+     */
+    void signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*);
+    
+    /**
      * emitted to test newVideoAvailableSlot
      */
     void signalNewVideoAvailable(CMPXMedia*);
     
     /**
-     * emitted to get deleteVideoSlot to be called.
+     * emitted to get deleteItemSlot to be called.
      */
-    void signalDeleteVideo(TMPXItemId);
-    
+    void signalDeleteItem(TMPXItemId);
+         
     /**
     * emitted to get videoDeleteCompletedSlot to be called.
     */
    void signalDeleteCompleted(int, QList<TMPXItemId>*);
    
    /**
+    * emitted to get albumRemoveFailureSlot to be called.
+    */
+   void signalAlbumDeleteFailure(QList<TMPXItemId>*);
+   
+   /**
     * emitted to get videoDetailsCompletedSlot to be called.
     */
    void signalVideoDetailsCompleted(TMPXItemId);
@@ -128,6 +135,11 @@
     void testGetVideoThumbnailFromIndex();
     
     /**
+     * verifies getCategoryVideoCountFromIndex
+     */
+    void testGetCategoryVideoCountFromIndex();
+    
+    /**
      * verifies getVideoSizeFromIndex
      */
     void testGetVideoSizeFromIndex();
@@ -166,6 +178,16 @@
      * verifies getFilePathForId
      */
     void testGetFilePathForId();
+    
+    /**
+     * verifies belongsToAlbum
+     */
+    void testBelongsToAlbum();
+    
+    /**
+     * verifies removeItemsFromAlbum
+     */
+    void testRemoveItemsFromAlbum();
          
     /**
      * verifies thumbnailsFetchedSlot
@@ -181,6 +203,11 @@
      * verifies appendVideoListSlot
      */
     void testAppendVideoListSlot();
+    
+    /**
+     * verifies albumListAvailableSlot
+     */
+    void testAlbumListAvailableSlot();
         
     /**
      * verifies newVideoAvailableSlot
@@ -188,14 +215,19 @@
     void testNewVideoAvailableSlot();
      
     /**
-     * verifies videoDeletedSlot
+     * verifies itemDeletedSlot
      */
-    void testVideoDeletedSlot();
+    void testItemDeletedSlot();
     
     /**
      * verifies videoDeleteCompletedSlot
      */
     void testVideoDeleteCompletedSlot();
+    
+    /**
+     * verifies albumRemoveFailureSlot
+     */
+    void testAlbumRemoveFailureSlot();
       
     /**
      * verifies videoDetailsCompletedSlot
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/mediaobjectfactory.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -185,6 +185,16 @@
         delete media;
         return 0;
     }
+    
+    TBuf<65> videoname;
+    videoname.Format(KMediaTestNamePrefix, id1);              
+    TRAP(error, media->SetTextValueL( KMPXMediaGeneralTitle, videoname));
+    if(error != KErrNone)
+    {
+       delete media;
+       return 0;
+    }
+
     return media;
 }
 
@@ -399,6 +409,18 @@
             return false;
         }
     }
+    
+    // set video count
+    if(dataSelectionFlags & MediaDetailCategoryVideoCount)
+    {  
+        int count = (index%5) + 1;
+        TRAPD(error, media->SetTObjectValueL<quint32>(KVcxMediaMyVideosCategoryItemCount, count));
+        if(error != KErrNone)
+        {
+            return false;
+        }
+    }    
+    
     return true;
 }
 
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -241,8 +241,6 @@
 //
 void TestVideoModel_p::testGetVideoThumbnailFromIndex()
 {
-    // TODO:
-    // no thumbnail data
     QVERIFY(mTestObject->getVideoThumbnailFromIndex(0) == 0);
     
     mMediaFactory->removeArray();
@@ -266,6 +264,34 @@
 }
 
 // -----------------------------------------------------------------------------
+// testGetCategoryVideoCountFromIndex
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testGetCategoryVideoCountFromIndex()
+{
+    QVERIFY(mTestObject->getCategoryVideoCountFromIndex(0) == 0);
+    
+    mMediaFactory->removeArray();
+    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));          
+    mMediaFactory->createMediaItems(MEDIA_COUNT, MediaDataName | MediaDataId | MediaDetailCategoryVideoCount);
+    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
+
+    QVERIFY(mTestObject->initialize() == 0);
+    
+    // invalid indexes
+    QVERIFY(mTestObject->getCategoryVideoCountFromIndex(-1) == 0);
+    
+    QVERIFY(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT) == 0);
+    
+    // correct indexes
+    QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(0)), 1);
+    QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT/2)), 1);
+    QCOMPARE((int)(mTestObject->getCategoryVideoCountFromIndex(MEDIA_COUNT - 1)), 5);
+
+    disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))); 
+}
+
+// -----------------------------------------------------------------------------
 // testGetVideoSizeFromIndex
 // -----------------------------------------------------------------------------
 //
@@ -641,6 +667,59 @@
 }
 
 // -----------------------------------------------------------------------------
+// testBelongsToAlbum
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testBelongsToAlbum()
+{
+    TMPXItemId id(1,0);
+    // invalid id, no album setted
+    QVERIFY(!mTestObject->belongsToAlbum(id));
+    
+    mTestObject->setAlbumInUse(TMPXItemId(1,2));
+    
+    // invalid id, album setted
+    QVERIFY(!mTestObject->belongsToAlbum(id));
+    
+    QSet<TMPXItemId> items;
+    items.insert(id);
+    mTestObject->mAlbumData[TMPXItemId(1,2)] = items;
+    
+    // invalid id, album setted, items exist 
+    QVERIFY(mTestObject->belongsToAlbum(id));
+    
+    // no invalid id, item does not exist
+    QVERIFY(!mTestObject->belongsToAlbum(id, TMPXItemId(2,2)));
+    
+    // no invalid id, items exist 
+    QVERIFY(mTestObject->belongsToAlbum(id, TMPXItemId(1,2)));
+}
+    
+    
+// -----------------------------------------------------------------------------
+// testRemoveItemsFromAlbum
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testRemoveItemsFromAlbum()
+{    
+    TMPXItemId albumId(1,2);
+    QList<TMPXItemId> ids;
+    // album does not exists
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, ids) == 0);
+    
+    QSet<TMPXItemId> items;
+    items.insert(TMPXItemId(1,0));
+    items.insert(TMPXItemId(3,0));
+    mTestObject->mAlbumData[albumId] = items;
+    
+    ids.append(TMPXItemId(2,0));
+    ids.append(TMPXItemId(3,0));
+    // provided list contains and does not contain items in album
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, ids) == 1);
+    
+}
+
+// -----------------------------------------------------------------------------
 // testThumbnailsFetchedSlot
 // -----------------------------------------------------------------------------
 //
@@ -882,6 +961,57 @@
 }
 
 // -----------------------------------------------------------------------------
+// testAlbumListAvailableSlot
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testAlbumListAvailableSlot()
+{ 
+
+    QVERIFY(mTestObject->initialize() == 0);
+        
+    QVERIFY(connect(this, SIGNAL(signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*)),
+            mTestObject, SLOT(albumListAvailableSlot(TMPXItemId, CMPXMediaArray*))));  
+    
+    TMPXItemId albumId(1,2);
+    
+    // null video array
+    emit signalAlbumListAvailable(albumId, 0);
+    QVERIFY(mTestObject->mAlbumData.count() == 0);
+    
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(10);
+    // invalid album id
+    albumId = TMPXItemId::InvalidId();
+    emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray());
+    QVERIFY(mTestObject->mAlbumData.count() == 0);
+    
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(0);
+    albumId = TMPXItemId(1,2);
+    
+    // empty videoarray
+    emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray());
+    QVERIFY(mTestObject->mAlbumData.count() == 1);
+    
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(0);
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(1, 0)));
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(-1, -1)));
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(2, 0)));
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(3, 1)));
+    
+    // "normal" video array containing invalid ids.
+    emit signalAlbumListAvailable(albumId, mMediaFactory->mediaArray());
+    QVERIFY(mTestObject->mAlbumData.count() == 1);
+    QVERIFY(mTestObject->mAlbumData.find(albumId)->count() == 2);
+    TMPXItemId itemToCheck(1,0);
+    QVERIFY(mTestObject->belongsToAlbum(itemToCheck, albumId));    
+    
+    disconnect(this, SIGNAL(signalAlbumListAvailable(TMPXItemId, CMPXMediaArray*)),
+                mTestObject, SLOT(albumListAvailableSlot(TMPXItemId, CMPXMediaArray*)));
+}
+
+// -----------------------------------------------------------------------------
 // testNewVideoAvailableSlot
 // -----------------------------------------------------------------------------
 //
@@ -967,10 +1097,10 @@
 }
 
 // -----------------------------------------------------------------------------
-// testVideoDeletedSlot
+// testItemDeletedSlot
 // -----------------------------------------------------------------------------
 //
-void TestVideoModel_p::testVideoDeletedSlot()
+void TestVideoModel_p::testItemDeletedSlot()
 {
     mTestObject->initialize();
     mMediaFactory->removeArray();
@@ -979,16 +1109,16 @@
     QSignalSpy spyModelChanged(mStubModel, SIGNAL(modelChanged()));
     
     QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));  
-    QVERIFY(connect(this, SIGNAL(signalDeleteVideo(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId))));  
+    QVERIFY(connect(this, SIGNAL(signalDeleteItem(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId))));  
     
     // no videos
-    emit signalDeleteVideo(TMPXItemId(0,0));
+    emit signalDeleteItem(TMPXItemId(0,0));
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(spyModelChanged.count() == 0);
     
     // invalid id
-    emit signalDeleteVideo(TMPXItemId::InvalidId());
+    emit signalDeleteItem(TMPXItemId::InvalidId());
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(spyModelChanged.count() == 0);
@@ -1001,7 +1131,7 @@
     spyModelChanged.clear();
     
     // not marked as removed
-    emit signalDeleteVideo(TMPXItemId(MEDIA_COUNT / 2,0));
+    emit signalDeleteItem(TMPXItemId(MEDIA_COUNT / 2,0));
     QVERIFY(VideoListDataModel::mFirstRemoved == MEDIA_COUNT / 2);
     QVERIFY(VideoListDataModel::mFirstRemoved == MEDIA_COUNT / 2);
     QVERIFY(spyModelChanged.count() == 1);
@@ -1014,7 +1144,7 @@
     TMPXItemId id = mTestObject->markVideoRemoved(index);
     
     // marked as removed
-    emit signalDeleteVideo(id);
+    emit signalDeleteItem(id);
     // item already removed from container, no notifications
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
@@ -1026,7 +1156,7 @@
     
     index = mStubModel->index(mTestObject->getVideoCount() - 1, 0, QModelIndex());
     id = mTestObject->markVideoRemoved(index);
-    emit signalDeleteVideo(id);
+    emit signalDeleteItem(id);
     // item already removed from container, no notifications
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
     QVERIFY(VideoListDataModel::mFirstRemoved == -1);
@@ -1034,7 +1164,52 @@
     
     mTestObject->mVideoThumbnailData = tmp;
     
-    disconnect(this, SIGNAL(signalDeleteVideo(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId)));
+    // test albums
+    mTestObject->mAlbumData.clear();
+    mTestObject->mMediaData.clear();
+       
+    TMPXItemId album1 = TMPXItemId(2,2);
+    TMPXItemId album2 = TMPXItemId(3,2);
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(5);
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(album1.iId1, album1.iId2)));
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(album2.iId1, album2.iId2)));
+    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
+    VideoListDataModel::mFirstRemoved = -1;
+    VideoListDataModel::mLastRemoved = -1;
+    spyModelChanged.clear();
+    
+    QSet<TMPXItemId> items;
+    mTestObject->mAlbumData[album1] = items;
+    items.insert(mTestObject->getMediaIdFromIndex(0));
+    items.insert(mTestObject->getMediaIdFromIndex(1));
+    mTestObject->mAlbumData[album2] = items;
+    
+    // not existing album
+    emit signalDeleteItem(TMPXItemId(1,2));
+    QVERIFY(VideoListDataModel::mFirstRemoved == -1);
+    QVERIFY(spyModelChanged.count() == 0);
+    QVERIFY( mTestObject->mAlbumData.count() == 2);
+    
+    // existing
+    emit signalDeleteItem(album2);
+    QVERIFY(VideoListDataModel::mFirstRemoved == 6);
+    QVERIFY(spyModelChanged.count() == 1);
+    QVERIFY( mTestObject->mAlbumData.count() == 1);
+    
+    VideoListDataModel::mFirstRemoved = -1;
+    spyModelChanged.clear();
+    
+    // no tn object
+    VideoThumbnailData *pTmp = mTestObject->mVideoThumbnailData;
+    mTestObject->mVideoThumbnailData = 0;
+    emit signalDeleteItem(album1);
+    QVERIFY(VideoListDataModel::mFirstRemoved == 5);
+    QVERIFY(spyModelChanged.count() == 1);
+    QVERIFY( mTestObject->mAlbumData.count() == 0);
+    mTestObject->mVideoThumbnailData  = pTmp;
+    
+    disconnect(this, SIGNAL(signalDeleteItem(TMPXItemId)), mTestObject, SLOT(itemDeletedSlot(TMPXItemId)));
     disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)));
     
 }
@@ -1099,6 +1274,50 @@
 }
 
 // -----------------------------------------------------------------------------
+// testAlbumRemoveFailureSlot
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testAlbumRemoveFailureSlot()
+{
+    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));  
+    QVERIFY(connect(this, SIGNAL(signalAlbumDeleteFailure(QList<TMPXItemId>*)), mTestObject, SLOT(albumRemoveFailureSlot(QList<TMPXItemId>*)))); 
+    
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(1, 2)));
+    TRAP_IGNORE(mMediaFactory->mediaArray()->AppendL(mMediaFactory->getMediaWithWantedIds(2, 2)));
+    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
+    
+    VideoListDataModel::mStatus = -1;
+    VideoListDataModel::mStatusData = QVariant();
+    // null list
+    emit signalAlbumDeleteFailure(0);
+    QVERIFY(VideoListDataModel::mStatus == -1);
+    QVERIFY(!(VideoListDataModel::mStatusData.isValid()));
+    
+    QList<TMPXItemId> ids;
+    
+    // empty list
+    emit signalAlbumDeleteFailure(&ids);
+    QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusRemoveSucceed);
+    QVERIFY(!(VideoListDataModel::mStatusData.isValid()));
+    
+    ids.append(TMPXItemId(1,2));
+    
+    // list contains one item
+    emit signalAlbumDeleteFailure(&ids);
+    QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusSingleRemoveFail);    
+    QVERIFY(VideoListDataModel::mStatusData.isValid());
+    
+    // list contains more than one
+    ids.append(TMPXItemId(2,2));
+    emit signalAlbumDeleteFailure(&ids);
+    QVERIFY(VideoListDataModel::mStatus == VideoCollectionCommon::statusMultiRemoveFail);    
+    QVERIFY(VideoListDataModel::mStatusData.isValid());
+    
+    disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)));
+    disconnect(this, SIGNAL(signalAlbumDeleteFailure(QList<TMPXItemId>*)), mTestObject, SLOT(albumRemoveFailureSlot(QList<TMPXItemId>*)));
+}
+
+// -----------------------------------------------------------------------------
 // testVideoDetailsCompletedSlot
 // -----------------------------------------------------------------------------
 //
@@ -1111,9 +1330,10 @@
     
     QSignalSpy spysignal(mTestObject, SIGNAL(videoDetailsReady(TMPXItemId)));
 
-    // no videos
+    // no videos, id ok
     emit signalVideoDetailsCompleted(TMPXItemId(0,0));
-    QVERIFY(spysignal.count() == 0);        
+    QVERIFY(spysignal.count() == 1);        
+    spysignal.clear();
     
     mMediaFactory->createMediaItems(MEDIA_COUNT);
     emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
@@ -1121,8 +1341,6 @@
     // invalid id
     emit signalVideoDetailsCompleted(TMPXItemId::InvalidId());
     QVERIFY(spysignal.count() == 0); 
-    emit signalVideoDetailsCompleted(TMPXItemId(MEDIA_COUNT,0));
-    QVERIFY(spysignal.count() == 0); 
     
     // correct ids
     emit signalVideoDetailsCompleted(TMPXItemId(0,0));
--- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/inc/testvideosortfilterproxymodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -32,6 +32,12 @@
     Q_OBJECT
 
     // test functions for the test framework
+    
+signals:
+    /**
+     * test signal
+     */
+    void testSignal();
 
 private slots:
 
@@ -196,6 +202,11 @@
     void testAddItemsInAlbum();
     
     /**
+     * tests removeItemsFromAlbum
+     */
+    void testRemoveItemsFromAlbum();
+    
+    /**
      * tests getOpenItem
      */
     void testGetOpenItem();
--- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -393,9 +393,9 @@
 {
 	VideoCollectionClient::mFailMediaDetails = true;
 	
+	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+	mTestObject->open(3);
 	mStubModel->appendData("Test");
-
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
 	
 	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(TMPXItemId)));
 	QModelIndex index = mTestObject->index(0, 0);
@@ -1015,23 +1015,35 @@
     
    
     mCollectionModel->initialize(mStubModel);
+    mCollectionModel->open(2);
     VideoCollectionWrapper::instance().mProxyModel = mCollectionModel;
     
+    mStubModel->appendData(TMPXItemId(1,2)); 
     mStubModel->appendData(name);
     
+    int count = mCollectionModel->rowCount();
+    
     // invalid data from model, same name can be used
     VideoListDataModel::mReturnInvalid = true;
     resolved = mTestObject->resolveAlbumName(name);
     QVERIFY(resolved.length());
     QVERIFY(resolved == name);  
     VideoListDataModel::mReturnInvalid = false;
-    
+            
     // same name, name to be different
     resolved = mTestObject->resolveAlbumName(name);
     QVERIFY(resolved.length());
     QVERIFY(resolved != name);
     QVERIFY(resolved.contains("1"));
     
+    mStubModel->appendData(TMPXItemId(2,2)); 
+    mStubModel->appendData(resolved);
+    
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved.length());
+    QVERIFY(resolved != name);
+    QVERIFY(resolved.contains("2"));
+
     // different name, no changes
     name = "Another";
     resolved = mTestObject->resolveAlbumName(name);
@@ -1057,6 +1069,30 @@
 }
 
 // ---------------------------------------------------------------------------
+// testRemoveItemsFromAlbum
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testRemoveItemsFromAlbum()
+{
+    VideoListDataModel::mRemoveFrAlbumReturn = 1;
+    TMPXItemId albumId(1,2);
+    QList<TMPXItemId> items;
+    items.append(TMPXItemId(1,0));
+    
+    // no model
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == -1);
+    mTestObject->initialize(mStubModel);
+    
+    // model returns < 0
+    VideoListDataModel::mRemoveFrAlbumReturn = -1;
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == -1);
+    
+    VideoListDataModel::mRemoveFrAlbumReturn = 11;
+    // "succeed"
+    QVERIFY(mTestObject->removeItemsFromAlbum(albumId, items) == 0);
+}
+
+// ---------------------------------------------------------------------------
 // testGetOpenItem
 // ---------------------------------------------------------------------------
 //
@@ -1145,16 +1181,19 @@
 //
 void TestVideoSortFilterProxyModel::testAlbumChangedSlot()
 {
+    connect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot()));
     // cannot test anything here, just for the coverage
     // level incorrect
     mTestObject->initialize(mStubModel);
-    mStubModel->emitAlbumChanged();
+    emit testSignal();
     delete mTestObject;
     mTestObject = 0;
     mTestObject = new FilterProxyTester(VideoCollectionWrapper::ECollectionContent);
-    QVERIFY(mTestObject);
+    connect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot()));
+    QVERIFY(mTestObject);    
     mTestObject->initialize(mStubModel);
-    mStubModel->emitAlbumChanged();        
+    emit testSignal();      
+    disconnect(this, SIGNAL(testSignal()), mTestObject, SLOT(albumChangedSlot()));
 }
 
 // ---------------------------------------------------------------------------
--- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/inc/videolistdatamodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -109,6 +109,11 @@
     bool belongsToAlbum(TMPXItemId itemId, TMPXItemId albumId = TMPXItemId::InvalidId());
     
     /**
+     * returns mRemoveFrAlbumReturn
+     */
+    int removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items);
+    
+    /**
      * returns index of first occurence of provided id
      */
     QModelIndex indexOfId(TMPXItemId id);
@@ -263,6 +268,8 @@
 	
 	static bool mReturnInvalid;
 	
+	static int mRemoveFrAlbumReturn;
+	
 	static QString mMediaFilePathReturnValue;
 	
 	static int mLastDeletedIndexRow;
--- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/stub/src/videolistdatamodel.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -25,6 +25,7 @@
 bool VideoListDataModel::mGetMediaIdAtIndexFails = false;
 bool VideoListDataModel::mBelongsToAlbum = false;
 bool VideoListDataModel::mReturnInvalid = false;
+int VideoListDataModel::mRemoveFrAlbumReturn = -1;
 int VideoListDataModel::mLastDeletedIndexRow = -1;
 QString VideoListDataModel::mMediaFilePathReturnValue = "";
 
@@ -440,6 +441,17 @@
 }
 
 // ---------------------------------------------------------------------------
+// removeItemsFromAlbum
+// ---------------------------------------------------------------------------
+//
+int VideoListDataModel::removeItemsFromAlbum(TMPXItemId &albumId, const QList<TMPXItemId> &items)
+{
+    Q_UNUSED(albumId);
+    Q_UNUSED(items);
+    return mRemoveFrAlbumReturn;
+}
+
+// ---------------------------------------------------------------------------
 // indexOfId
 // ---------------------------------------------------------------------------
 //
--- a/videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideothumbnaildata_p/src/testvideothumbnaildata_p.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -24,6 +24,7 @@
 #include <qlist.h>
 #include <qvariant.h>
 #include "qmetatype.h"
+#include <vcxmyvideosdefs.h>
 
 #include "testvideothumbnaildata_p.h"
 #include "videothumbnailfetcher.h"
@@ -222,7 +223,7 @@
 
     mTestObject->mThumbnailData.insert(TMPXItemId(mediaid, 0), new QIcon(pixmap));
     QCOMPARE( *(mTestObject->getThumbnail(TMPXItemId(mediaid, 0))), *(mTestObject->mThumbnailData[TMPXItemId(mediaid, 0)]) );
-    QVERIFY( mTestObject->getThumbnail(TMPXItemId(mediaid+100, 0)) == mTestObject->mDefaultTnVideo );
+    QVERIFY( mTestObject->getThumbnail(TMPXItemId(mediaid+100, 0)) != 0);
 
     cleanup();
 }
@@ -699,26 +700,64 @@
 {
     init();
 
-    QVERIFY( mTestObject->mDefaultTnVideo == 0 );
-    QVERIFY( mTestObject->mDefaultTnCategory == 0 );
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 0);
     
     // Tn for video
-    const QIcon* tn = mTestObject->defaultThumbnail(TMPXItemId(1, 0));
+    const QIcon* tn = mTestObject->defaultThumbnail(TMPXItemId(1, KVcxMvcMediaTypeVideo));
+    QVERIFY( tn != 0 );
+    QVERIFY( tn->isNull() == false );    
+    // Second call when tn has been loaded already.
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(1, KVcxMvcMediaTypeVideo)));
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 1);
+
+    // Default tn for album
+    tn = mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeAlbum));
+    QVERIFY( tn != 0 );
+    QVERIFY( tn->isNull() == false );
+    // Second call when tn has been loaded already.
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeAlbum)));
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 2);
+    
+    // Default tn for unknown category
+    tn = mTestObject->defaultThumbnail(TMPXItemId(555, KVcxMvcMediaTypeCategory));
     QVERIFY( tn != 0 );
     QVERIFY( tn->isNull() == false );
-    QCOMPARE( tn->cacheKey(), mTestObject->mDefaultTnVideo->cacheKey() );
     // Second call when tn has been loaded already.
-    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(1, 0)));
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeCategory))); 
+    // Still two because icon is same as default album 
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 2);
+
+    // Default tn for downloads category
+    tn = mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory));
+    QVERIFY( tn != 0 );
+    QVERIFY( tn->isNull() == false );
+    // Second call when tn has been loaded already.
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory))); 
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 3);
 
-    // Tn for category
-    const QIcon* tn2 = mTestObject->defaultThumbnail(TMPXItemId(0, 1));
-    QVERIFY( tn2 != 0 );
-    QVERIFY( tn2->isNull() == false );
-    QCOMPARE( tn2->cacheKey(), mTestObject->mDefaultTnCategory->cacheKey() );
+    // Default tn for captured category
+    tn = mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory));
+    QVERIFY( tn != 0 );
+    QVERIFY( tn->isNull() == false );
     // Second call when tn has been loaded already.
-    QVERIFY(tn2 == mTestObject->defaultThumbnail(TMPXItemId(0, 1))); 
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory))); 
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 4);    
+    
+    cleanup();
+    
+
+    init();
 
-    QVERIFY(tn2->cacheKey() != tn->cacheKey());
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 0);
+
+    // Default tn for unknown category, tn not loaded
+    tn = mTestObject->defaultThumbnail(TMPXItemId(555, KVcxMvcMediaTypeCategory));
+    QVERIFY( tn != 0 );
+    QVERIFY( tn->isNull() == false );
+    // Second call when tn has been loaded already.
+    QVERIFY(tn == mTestObject->defaultThumbnail(TMPXItemId(0, KVcxMvcMediaTypeCategory))); 
+    // Still two because icon is same as default album 
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 1);
     
     cleanup();
 }
@@ -854,8 +893,10 @@
 {
     init();
 
-    QVERIFY( mTestObject->getThumbnail(TMPXItemId(1, 0)) == mTestObject->mDefaultTnVideo );
-    QVERIFY( mTestObject->getThumbnail(TMPXItemId(0, 1)) == mTestObject->mDefaultTnCategory );
+    mTestObject->getThumbnail(TMPXItemId(1, 0));
+    mTestObject->getThumbnail(TMPXItemId(0, 1));
+    QVERIFY(mTestObject->mDefaultThumbnails.count() > 0);
+    
     mTestObject->freeThumbnailData();
     
     QVERIFY(!mTestObject->mBgFetchTimer->isActive());
@@ -864,8 +905,7 @@
     QCOMPARE(mTestObject->mReadyThumbnailMediaIds.count(), 0);
     QCOMPARE(mTestObject->mThumbnailData.count(), 0);
     
-    QVERIFY(mTestObject->mDefaultTnVideo == 0);
-    QVERIFY(mTestObject->mDefaultTnVideo == 0);
+    QVERIFY(mTestObject->mDefaultThumbnails.count() == 0);
 
     // Call again.
     mTestObject->freeThumbnailData();
--- a/videocollection/videofiledetailsview/data/videofiledetails.qrc	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videofiledetailsview/data/videofiledetails.qrc	Thu Apr 01 23:32:44 2010 +0300
@@ -3,7 +3,6 @@
         <file alias="videofiledetails.docml">videofiledetails.xml</file>
     </qresource>
     <qresource prefix="/gfx" >
-        <file alias="play.png">play.png</file>
         <file alias="pri_large_video.svg">pri_large_video.svg</file>
     </qresource>
 </RCC>
--- a/videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h	Thu Apr 01 23:32:44 2010 +0300
@@ -127,7 +127,6 @@
      */
 	void getFileUri();
 
-
     /**
      * Signaled when short details are ready.
      *
@@ -193,19 +192,6 @@
 private:
 
     /**
-     * Pre-creates the view and thumbnailmanager.
-     *
-     */
-    void preCreateView();
-
-    /**
-     * Allocates view and rest of it's objects to be ready to
-     * be activated.
-     *
-     */
-    void finalizeCreateView();
-
-    /**
      * Signaled for one item deletion.
      *
      */
@@ -215,6 +201,11 @@
      * Starts fetching the large thumbnail with tnwrapper.
      */
     void startFetchingThumbnail();
+    
+    /**
+     * Gets the play icon for thumbnail.
+     */
+    const QPixmap &playIcon();
 
     /**
      * Finds and return the widget from document loader with the given name. Casts
@@ -232,19 +223,9 @@
 private:
 
     /**
-     * Details view create status
-     */
-    enum TViewStatus
-    {
-        ENotCreated,
-        EPreCreated,
-        EFinalized
-    };
-
-    /**
      * Document loader that holds the view object
      */
-    HbDocumentLoader mView;
+    HbDocumentLoader mLoader;
 
     /**
      * Pointer to the model that holds video details. Not owned.
@@ -268,14 +249,6 @@
     bool mIsService;
 
     /**
-     * Details view create status,
-     * if ENotCreated, view has not been created,
-     * if EPreCreated, view has been pre created
-     * if EFinalized, view creation has been finalised
-     */
-    TViewStatus mCreated;
-
-    /**
      * Mpx id of the video clip.
      */
     TMPXItemId mVideoId;
@@ -284,11 +257,16 @@
      * Index of the clip to be deleted in the proxy model.
      */
     int mDeletedIndex;
+    
+    /**
+     * Previously loaded orientation.
+     */
+    Qt::Orientation mPreviousOrietation;
 
 	/**
      * Navigation softkey action object for back.
      */
-	HbAction 				   *mNavKeyBackAction;
+	HbAction *mNavKeyBackAction;
 
     /**
      * Title animation widget
@@ -309,7 +287,11 @@
      * Collection wrapper.
      */
     VideoCollectionWrapper &mCollectionWrapper;
-
+    
+    /**
+     * Play icon with transparent background.
+     */
+    QPixmap mPlayIcon;
     };
 
 #endif  // VIDEOFILEDETAILSPLUGIN_H
--- a/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -43,7 +43,8 @@
 #include "videodetailslabel.h"
 
 const char* const VIDEO_DETAILS_DOCML = ":/xml/videofiledetails.docml";
-const char* const VIDEO_DETAILS_GFX_PLAY = ":/gfx/play.png";
+const char* const VIDEO_DETAILS_PORTRAIT = "portrait";
+const char* const VIDEO_DETAILS_LANDSCAPE = "landscape";
 const char* const VIDEO_DETAILS_GFX_DEFAULT = ":/gfx/pri_large_video.svg";
 const char* const VIDEO_DETAILS_VIEW = "videofiledetailsview";
 const char* const VIDEO_DETAILS_TITLE = "mLblTitle";
@@ -67,9 +68,9 @@
       mVideoServices(0),
       mActivated(false),
       mIsService(false),
-      mCreated(VideoFileDetailsViewPlugin::ENotCreated),
       mVideoId(TMPXItemId::InvalidId()),
       mDeletedIndex(-1),
+      mPreviousOrietation(Qt::Vertical),
       mNavKeyBackAction(0),
       mTitleAnim(0),
       mThumbLabel(0),
@@ -94,41 +95,27 @@
 //
 void VideoFileDetailsViewPlugin::createView()
 {
-    if (VideoFileDetailsViewPlugin::EPreCreated == mCreated)
-    {
-    	finalizeCreateView();
-    }
-    else if (VideoFileDetailsViewPlugin::ENotCreated == mCreated)
-    {
-    	preCreateView();
-    }
-}
+	mLoader.reset();
 
-// ---------------------------------------------------------------------------
-// preCreateView
-// ---------------------------------------------------------------------------
-//
-void VideoFileDetailsViewPlugin::preCreateView()
-{
 	mActivated = false;
-	mCreated = VideoFileDetailsViewPlugin::EPreCreated;
 
-	if (!mThumbnailManager)
+	bool ok = false;
+	
+	//Load the details view docml first
+	mLoader.load(VIDEO_DETAILS_DOCML, &ok);
+	
+	if(!ok)
 	{
-		mThumbnailManager = new ThumbnailManager();
+		return;
 	}
-}
-// ---------------------------------------------------------------------------
-// finalizeCreateView
-// ---------------------------------------------------------------------------
-//
-void VideoFileDetailsViewPlugin::finalizeCreateView()
-{
-	mView.reset();
-	mActivated = false;
-	mCreated = VideoFileDetailsViewPlugin::EFinalized;
-	bool ok = false;
-	mView.load(VIDEO_DETAILS_DOCML, &ok);
+
+	//Load portrait section by default as only vertical orientation is currently supported by videoplayer
+	mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT, &ok);
+	
+	if(!ok)
+	{
+		return;
+	}
 
 	mModel = mCollectionWrapper.getModel(VideoCollectionWrapper::EAllVideos);
 
@@ -153,8 +140,8 @@
 			SIGNAL(shortDetailsReady(TMPXItemId)),
 			this, SLOT(shortDetailsReadySlot(TMPXItemId)));
 
-	connect(mModel,
-			SIGNAL(fullDetailsReady(TMPXItemId)),
+	connect(mModel->sourceModel(),
+			SIGNAL(fullVideoDetailsReady(TMPXItemId)),
 			this, SLOT(fullDetailsReadySlot(TMPXItemId)));
 
 	connect(mModel,
@@ -186,10 +173,15 @@
 	{
 		connect(deleteAction, SIGNAL(triggered(bool)), this, SLOT(deleteVideoSlot()));
 	}
-	
+
 	// Create navigation keys.
 	mNavKeyBackAction = new HbAction(Hb::BackNaviAction);
-	
+
+	if (!mThumbnailManager)
+	{
+		mThumbnailManager = new ThumbnailManager();
+	}
+
 	connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap,void*,int,int)),
 			this, SLOT(thumbnailReadySlot(QPixmap,void*,int,int)));
 }
@@ -214,7 +206,7 @@
     delete mNavKeyBackAction; mNavKeyBackAction = 0;
     delete mThumbnailManager; mThumbnailManager = 0;
     disconnect();
-    mView.reset();
+    mLoader.reset();
 }
 
 // ---------------------------------------------------------------------------
@@ -223,7 +215,7 @@
 //
 void VideoFileDetailsViewPlugin::activateView()
 {
-	if ( !mActivated && (VideoFileDetailsViewPlugin::EFinalized == mCreated))
+	if (!mActivated)
     {
         HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
 
@@ -239,19 +231,21 @@
         		return;
         	}
         }
-        
+
         mainWnd->setOrientation(Qt::Vertical, false);
 
         // following if is for the future implementations where we should support
         // also landscape configuration.
         Qt::Orientation orientation = mainWnd->orientation();
-        if ( orientation == Qt::Vertical )
+        if ( (orientation == Qt::Vertical) && (orientation != mPreviousOrietation) )
         {
-    		mView.load(VIDEO_DETAILS_DOCML, "portrait");
+    		mPreviousOrietation = orientation;
+        	mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT);
         }
-        else if ( orientation == Qt::Horizontal )
+        else if ( (orientation == Qt::Horizontal) && (orientation != mPreviousOrietation) )
         {
-    		mView.load(VIDEO_DETAILS_DOCML, "landscape");
+    		mPreviousOrietation = orientation;
+    		mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_LANDSCAPE);
         }
 
     	if (mIsService && !mVideoServices)
@@ -263,12 +257,14 @@
 				return;
 			}
     	}
-    	if (mIsService && mVideoServices)
+
+		HbPushButton* button = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
+
+		if (mIsService && mVideoServices)
 		{
-			HbPushButton* attachBtn = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
-			attachBtn->setText(tr("Attach")); //TODO: Localisation
+			button->setText(tr("Attach")); //localisation
 
-			connect(attachBtn, SIGNAL(clicked(bool)), this, SLOT(getFileUri()));
+			connect(button, SIGNAL(clicked(bool)), this, SLOT(getFileUri()));
 			connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&)));
 
             HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
@@ -277,9 +273,8 @@
 		}
     	else if(!mIsService)
     	{
-    		HbPushButton* shareBtn = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
-			connect(shareBtn, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot()));
-			shareBtn->setText(hbTrId("txt_videos_opt_share"));
+			connect(button, SIGNAL(clicked(bool)), this, SLOT(sendVideoSlot()));
+			button->setText(hbTrId("txt_videos_opt_share"));
     	}
 
         connect(mainWnd,
@@ -345,7 +340,7 @@
     	}
 		else
 		{
-			disconnect(button, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot()));
+			disconnect(button, SIGNAL(clicked(bool)), this, SLOT(sendVideoSlot()));
 		}
 
     }
@@ -357,7 +352,7 @@
 //
 QGraphicsWidget* VideoFileDetailsViewPlugin::getView()
 {
-    return mView.findWidget(VIDEO_DETAILS_VIEW);
+    return mLoader.findWidget(VIDEO_DETAILS_VIEW);
 }
 
 // ---------------------------------------------------------------------------
@@ -368,12 +363,12 @@
 {
     if ( orientation == Qt::Vertical )
     {
-    	mView.load(VIDEO_DETAILS_DOCML, "portrait");
+    	mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_PORTRAIT);
     }
 
     else if ( orientation == Qt::Horizontal )
     {
-       	mView.load(VIDEO_DETAILS_DOCML, "landscape");
+       	mLoader.load(VIDEO_DETAILS_DOCML, VIDEO_DETAILS_LANDSCAPE);
     }
     mTitleAnim->adjustSize();
     mTitleAnim->startAnimation();
@@ -508,7 +503,8 @@
 
         if (variant.isValid())
         {
-            QString text = tr("Do you want to delete \"%1\"?").arg(variant.toStringList().first()); //TODO: Localisation: txt_common_menu_delete
+            QString text = hbTrId("txt_videos_info_do_you_want_to_delete_1").arg(
+			   variant.toStringList().first());
 
             if (HbMessageBox::question(text))
             {
@@ -559,7 +555,7 @@
     QString msg("");
     if(errorCode == VideoCollectionCommon::statusSingleDeleteFail)
     {
-        QString format = tr("Unable to delete item %1. It is currently open."); //TODO: Localisation
+        QString format = hbTrId("txt_videos_info_unable_to_delete_1_it_is_current"); 
         if(additional.isValid())
         {
            msg = format.arg(additional.toString());
@@ -583,7 +579,6 @@
     Q_UNUSED(id);
 
 	QSize size(mThumbLabel->size().toSize());
-	QImage play(VIDEO_DETAILS_GFX_PLAY);
 
 	if (!errorCode)
 	{
@@ -621,14 +616,14 @@
 		QImage resultImage = QImage(sourceImage.size(), QImage::Format_ARGB32_Premultiplied);
 
 		QPainter painter(&resultImage);
-		painter.setCompositionMode(QPainter::CompositionMode_Source);
+        painter.setCompositionMode(QPainter::CompositionMode_Source);
 		painter.fillRect(resultImage.rect(), Qt::transparent);
 		painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
-		painter.drawImage( (int)(sourceImage.width() - play.width())/2,
-				           (int)(sourceImage.height() - play.height())/2,
-				            play );
+		painter.drawPixmap( (int)(sourceImage.width() - playIcon().width())/2,
+				           (int)(sourceImage.height() - playIcon().height())/2,
+				            playIcon() );
 		painter.setCompositionMode(QPainter::CompositionMode_Screen);
-		painter.drawImage(0, 0, sourceImage);
+        painter.drawImage(0, 0, sourceImage);
 		painter.end();
 
 		HbIcon compsedIcon(QPixmap::fromImage(resultImage));
@@ -670,13 +665,90 @@
 }
 
 // ---------------------------------------------------------------------------
+// playIcon
+// ---------------------------------------------------------------------------
+//
+const QPixmap &VideoFileDetailsViewPlugin::playIcon()
+{
+    // Check if we have already the icon.
+    if(!mPlayIcon.isNull())
+    {
+        return mPlayIcon;
+    }
+    
+    // Compose the icon.
+    HbIcon play =        HbIcon("qtg_mono_play");
+    HbIcon topLeft =     HbIcon("qtg_fr_popup_trans_tl");
+    HbIcon top =         HbIcon("qtg_fr_popup_trans_t");
+    HbIcon topRight =    HbIcon("qtg_fr_popup_trans_tr");
+    HbIcon left =        HbIcon("qtg_fr_popup_trans_l");
+    HbIcon center =      HbIcon("qtg_fr_popup_trans_c");
+    HbIcon right =       HbIcon("qtg_fr_popup_trans_r");
+    HbIcon bottomLeft =  HbIcon("qtg_fr_popup_trans_bl");
+    HbIcon bottom =      HbIcon("qtg_fr_popup_trans_b");
+    HbIcon bottomRight = HbIcon("qtg_fr_popup_trans_br");
+
+    int width = topLeft.width() + top.width() + topRight.width();
+    int height = topLeft.height() + center.height() + bottomLeft.height();
+    
+    mPlayIcon = QPixmap(width, height);
+    
+    QPainter painter(&mPlayIcon);
+    painter.fillRect(mPlayIcon.rect(), Qt::white);
+    
+    painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
+    
+    int x = 0;
+    int y = 0;
+
+    // Draw top
+    painter.drawPixmap(QPoint(x, y), topLeft.pixmap());
+    x += left.width();
+    
+    painter.drawPixmap(QPoint(x, y), top.pixmap());
+    x += top.width();
+
+    painter.drawPixmap(QPoint(x, y), topRight.pixmap());
+    y += top.height();
+    
+    // Draw center
+    x = 0;
+    painter.drawPixmap(QPoint(x, y), left.pixmap());
+    x += left.width();
+    
+    painter.drawPixmap(QPoint(x, y), center.pixmap());
+    x += center.width();
+
+    painter.drawPixmap(QPoint(x, y), right.pixmap());
+    y += center.height();
+    
+    // Draw bottom
+    x = 0;
+    painter.drawPixmap(QPoint(x, y), bottomLeft.pixmap());
+    x += left.width();
+    
+    painter.drawPixmap(QPoint(x, y), bottom.pixmap());
+    x += top.width();
+    
+    painter.drawPixmap(QPoint(x, y), bottomRight.pixmap());
+    
+    // Draw play icon
+    play.setSize(mPlayIcon.size());
+    play.setColor(Qt::white);
+    painter.drawPixmap(mPlayIcon.rect(), play.pixmap());
+    painter.end();
+    
+    return mPlayIcon;
+}
+
+// ---------------------------------------------------------------------------
 // findWidget
 // ---------------------------------------------------------------------------
 //
 template<class T>
 T* VideoFileDetailsViewPlugin::findWidget(QString name)
 {
-    return qobject_cast<T *>(mView.findWidget(name));
+    return qobject_cast<T *>(mLoader.findWidget(name));
 }
 
 // ---------------------------------------------------------------------------
@@ -686,7 +758,7 @@
 template<class T>
 T* VideoFileDetailsViewPlugin::findObject(QString name)
 {
-    return qobject_cast<T *>(mView.findObject(name));
+    return qobject_cast<T *>(mLoader.findObject(name));
 }
 
 XQ_EXPORT_PLUGIN2( videofiledetailsview, VideoFileDetailsViewPlugin );
--- a/videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -63,7 +63,7 @@
    mDummyModel = new VideoSortFilterProxyModel();
    
    connect(this, SIGNAL(shortDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(shortDetailsReady(TMPXItemId)));
-   connect(this, SIGNAL(fullDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(fullDetailsReady(TMPXItemId)));
+   connect(this, SIGNAL(fullDetailsReady(TMPXItemId)), mDummyModel, SIGNAL(fullVideoDetailsReady(TMPXItemId)));
 
    connect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), 
            mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)));
@@ -81,7 +81,7 @@
 void TestVideoFileDetails::cleanupTestCase()
 {
     disconnect(this, SIGNAL(shortDetailsReady(int)), mDummyModel, SIGNAL(shortDetailsReady(int)));
-    disconnect(this, SIGNAL(fullDetailsReady(int)),mDummyModel, SIGNAL(fullDetailsReady(int)));
+    disconnect(this, SIGNAL(fullDetailsReady(int)),mDummyModel, SIGNAL(fullVideoDetailsReady(int)));
     disconnect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), 
             mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)));
     disconnect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
@@ -100,7 +100,6 @@
     
     mPlugin = new VideoFileDetailsViewPlugin();
     mPlugin->createView();
-    mPlugin->createView();
     mCommandReceived = false;
     mReceivedCommand = -1;
     ThumbnailManager::mRequests.clear();
@@ -245,7 +244,7 @@
     QVERIFY( mPlugin->getView() == 0 );
     // plugin is still alive
     QVERIFY( mPlugin->viewPlugin() == mPlugin );
-    QVERIFY( mPlugin->mSecSkAction == 0 );
+    QVERIFY( mPlugin->mNavKeyBackAction == 0 );
     QVERIFY( mPlugin->mActivated == false );
     cleanup();
 }
@@ -341,7 +340,7 @@
     QCOMPARE( mCommandReceived, false );
     QCOMPARE( mReceivedCommand, -1 );
     
-    mPlugin->mSecSkAction->trigger();
+    mPlugin->mNavKeyBackAction->trigger();
     QCOMPARE( mCommandReceived, false );
     QCOMPARE( mReceivedCommand, -1 );
     
@@ -354,7 +353,7 @@
     mCommandReceived = false;
     mReceivedCommand = -1;
 
-    mPlugin->mSecSkAction->trigger();
+    mPlugin->mNavKeyBackAction->trigger();
     QCOMPARE( mCommandReceived, true );
     QCOMPARE( mReceivedCommand, static_cast<int>(MpxHbVideoCommon::ActivateCollectionView) );
     
@@ -367,7 +366,7 @@
     QCOMPARE( mCommandReceived, false );
     QCOMPARE( mReceivedCommand, -1 );
     
-    mPlugin->mSecSkAction->trigger();
+    mPlugin->mNavKeyBackAction->trigger();
     QCOMPARE( mCommandReceived, false );
     QCOMPARE( mReceivedCommand, -1 );
 
@@ -739,7 +738,7 @@
 template<class T> 
 T* TestVideoFileDetails::findWidget(QString name)
 {
-    return qobject_cast<T *>(mPlugin->mView.findWidget(name));
+    return qobject_cast<T *>(mPlugin->mLoader.findWidget(name));
 }
 
 // ---------------------------------------------------------------------------
@@ -749,7 +748,7 @@
 template<class T> 
 T* TestVideoFileDetails::findObject(QString name)
 {
-    return qobject_cast<T *>(mPlugin->mView.findObject(name));
+    return qobject_cast<T *>(mPlugin->mLoader.findObject(name));
 }
 
 // ---------------------------------------------------------------------------
--- a/videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videocollection/videofiledetailsview/tsrc/testplugin/stub/inc/videosortfilterproxymodel.h	Thu Apr 01 23:32:44 2010 +0300
@@ -74,7 +74,7 @@
 	
     void shortDetailsReady(TMPXItemId index);
     
-    void fullDetailsReady(TMPXItemId index);
+    void fullVideoDetailsReady(TMPXItemId index);
 
 public: // from QAbstractItemModel
     
--- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackbuttonbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#8 %
+// Version : %version: da1mmcf#9 %
 
 
 
@@ -27,7 +27,6 @@
 #include <mpxplaybackframeworkdefs.h>
 
 
-class HbFrameItem;
 class HbPushButton;
 class QActionGroup;
 class QMPXVideoPlaybackViewFileDetails;
@@ -75,8 +74,6 @@
 
         QList<HbPushButton*>                 mButtons;
         bool                                 mInitialized;
-
-        HbFrameItem                         *mFrameItem;
 };
 
 #endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrol.hrh	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2008 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:  header file of CMPXVideoPlaybackControl
+*
+*/
+
+// Version : %version:  6 %
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROL_HRH_
+#define MPXVIDEOPLAYBACKCONTROL_HRH_
+
+// DATA TYPES
+const TInt KMPXVideoPlaybackVolumeMax = 10;
+
+enum TMPFXVideoPlaybackControlProperties
+{
+    EMPXShownWhenInitializing = 0x1,
+    EMPXShownWhenBuffering = 0x2,
+    EMPXShownWhenPlaying =  0x4,
+    EMPXShownWhenPaused = 0x8,
+    EMPXShownWhenSeeking = 0x10,
+    EMPXAllProperties = 0xffffffff
+};
+
+enum TMPXVideoPlaybackControls
+{
+    EMPXStatusPane,
+    EMPXControlBar,
+
+    // Only for streaming case
+    // Can handle from NotInitilized state
+    //
+    EMPXBufferingAnimation,
+
+    //
+    // For details view and audio only view
+    //
+    EMPXFileDetailsWidget,
+
+    //
+    // For details view
+    //
+    EMPXDetailsViewPlaybackWindow,
+
+    //
+    //  Bitmaps
+    //
+    EMPXBlackBitmap,
+    EMPXIndicatorBitmap,
+    EMPXRealLogoBitmap,
+
+    EMPXDownloadPausedIcon,
+
+    EMPXControlsCount  // has to be last
+};
+
+/** Command ID's. */
+enum TMPXVideoPlaybackControlCommandIds
+{
+    EMPXControlCmdPluginInitialized,
+    EMPXControlCmdTvOutConnected,
+    EMPXControlCmdTvOutDisconnected,
+    EMPXControlCmdSetAspectRatio,
+    EMPXControlCmdSetVolume,
+    EMPXControlCmdSetDuration,
+    EMPXControlCmdSetPosition,
+    EMPXControlCmdStateChanged,
+    EMPXControlCmdDownloadUpdated,
+    EMPXControlCmdSetDownloadSize,
+    EMPXControlCmdDownloadComplete,
+    EMPXControlCmdSetDownloadPaused,
+    EMPXControlCmdClearDownloadPaused,
+    EMPXControlCmdHandleBackgroundEvent,
+    EMPXControlCmdHandleForegroundEvent,
+    EMPXControlCmdHandleErrors,
+    EMPXControlCmdShowVolumeControls,
+    EMPXControlCmdSoftKeyPressed,
+    EMPXControlCmdFullScreenViewOpened,
+    EMPXControlCmdDetailsViewOpened,
+    EMPXControlCmdAudionOnlyViewOpened
+};
+
+enum TMPXVideoSeekingType
+{
+    EMpxVideoSeekingForward,
+    EMpxVideoSeekingBackward,
+    EMpxVideoSeekingStop
+};
+
+enum TMPXVideoControlType
+{
+    EMpxVideoPlaybackContainer,
+    EMpxVideoPlaybackControl
+};
+
+enum TMPXVideoUserInputType
+{
+    EMpxVideoKeyboard,
+    EMpxVideoTouch,
+    EMpxVideoMediaKeys,
+    EMpxVideoSpecialHWKeys,
+    EMpxVideoNone
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROL_HRH_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackcontrolbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version: 1 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_
+#define MPXVIDEOPLAYBACKCONTROLBAR_H_
+
+
+
+#include <hbeffect.h>
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class HbFrameItem;
+class QMPXVideoPlaybackButtonBar;
+class QMPXVideoPlaybackProgressBar;
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackControlBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackControlBar();
+        void updateState( TMPXPlaybackState state );
+        void aspectRatioChanged( int aspectRatio );
+        void initialize();
+        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+        void setVisibleToControlBar( bool visible );
+        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;
+        QMPXVideoPlaybackButtonBar          *mButtonBar;
+        QMPXVideoPlaybackProgressBar        *mProgressBar;
+        HbFrameItem                         *mFrameItem;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/
--- a/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlinc/mpxvideoplaybackprogressbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#8 %
+// Version : %version: da1mmcf#9 %
 
 
 
@@ -26,7 +26,6 @@
 #include <mpxplaybackframeworkdefs.h>
 
 class HbLabel;
-class HbFrameItem;
 class HbProgressBar;
 class QMPXVideoPlaybackViewFileDetails;
 class QMPXVideoPlaybackControlsController;
@@ -63,8 +62,6 @@
         bool                                 mNeedToResumeAfterSetPosition;
         bool                                 mInitialized;
         bool                                 mDragging;
-
-        HbFrameItem                         *mFrameItem;
 };
 
 #endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,13 +15,11 @@
 *
 */
 
-// Version : %version: da1mmcf#20 %
+// Version : %version: da1mmcf#21 %
 
 
 
-#include <hbframeitem.h>
 #include <hbpushbutton.h>
-#include <hbframedrawer.h>
 
 #include "mpxvideo_debug.h"
 #include "mpxvideoplaybackbuttonbar.h"
@@ -39,7 +37,6 @@
         QMPXVideoPlaybackControlsController* controller )
     : mController( controller )
     , mInitialized( false )
-    , mFrameItem( NULL )
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar"));
 }
@@ -142,16 +139,6 @@
         {
             mButtons[i]->setFlag( QGraphicsItem::ItemIsFocusable, false );
         }
-
-        //
-        // Set framedrawer for semi transparent background
-        //
-        mFrameItem = new HbFrameItem ( this );
-        mFrameItem->setGeometry( boundingRect() );
-        mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece );
-        mFrameItem->frameDrawer().setFillWholeRect( true );
-        mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" );
-        mFrameItem->setVisible( false );
     }
 }
 
@@ -410,8 +397,6 @@
         QGraphicsItem* widget = mButtons[i]->primitive( HbStyle::P_PushButton_background );
         widget->setVisible( backgrondVisible );        
     }
-
-    mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse ); 
 }
 
 // -------------------------------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,252 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version:  1 %
+
+
+
+#include <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackbuttonbar.h"
+#include "mpxvideoplaybackcontrolbar.h"
+#include "mpxvideoplaybackprogressbar.h"
+#include "mpxcommonvideoplaybackview.hrh"
+#include "mpxvideoplaybackdocumentloader.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( 
+        QMPXVideoPlaybackControlsController* controller )
+    : mController( controller )
+    , mButtonBar( NULL )
+    , mProgressBar( NULL )
+    , mFrameItem( NULL )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar"));
+
+    HbEffect::add( this, ":/hbvideoplaybackview/effects/controlbar_appear.fxml", "appear" );
+    HbEffect::add( this, ":/hbvideoplaybackview/effects/controlbar_disappear.fxml", "disappear" );
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()"));
+
+    HbEffect::remove( this, ":/hbvideoplaybackview/effects/controlbar_appear.fxml", "appear" );
+    HbEffect::remove( this, ":/hbvideoplaybackview/effects/controlbar_disappear.fxml", "disappear" );
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::initialize()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::initialize()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::initialize()"));
+
+    QMPXVideoPlaybackDocumentLoader *loader = mController->layoutLoader();
+
+    //
+    // Don't need to initialize buttons once it gets initialized
+    //
+    if ( mButtonBar == NULL && mProgressBar == NULL )
+    {
+        //
+        // button bar
+        //
+        QGraphicsWidget *widget = loader->findWidget( QString( "buttonBarLayout" ) );
+        mButtonBar = qobject_cast<QMPXVideoPlaybackButtonBar*>( widget );
+
+        if ( mButtonBar )
+        {
+            mButtonBar->initialize();
+        }
+        
+        //
+        // progress bar
+        //
+        widget = loader->findWidget( QString( "progressBarLayout" ) );
+        mProgressBar = qobject_cast<QMPXVideoPlaybackProgressBar*>( widget );
+
+        if ( mProgressBar )
+        {
+            mProgressBar->initialize();
+        }
+
+        //
+        // Set framedrawer for semi transparent background
+        //
+        mFrameItem = new HbFrameItem ( this );
+        mFrameItem->setGeometry( boundingRect() );
+        mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece );
+        mFrameItem->frameDrawer().setFillWholeRect( true );
+        mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" );
+        mFrameItem->setVisible( false );
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state );
+
+    if ( mButtonBar )
+    {
+        mButtonBar->updateState( state );
+    }
+
+    if ( mProgressBar )
+    {
+        mProgressBar->updateState( state );
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::aspectRatioChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
+
+    if ( mButtonBar )
+    {
+        mButtonBar->aspectRatioChanged( aspectRatio );
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()"));
+
+    if ( mButtonBar )
+    {
+        mButtonBar->updateWithFileDetails( details );
+    }
+
+    if ( mProgressBar )
+    {
+        mProgressBar->updateWithFileDetails( details );
+    }
+
+    mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse ); 
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::setVisibleToControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::setVisibleToControlBar( bool visible )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibleToControlBar() %d"), visible);
+
+    if ( visible && isVisible() == false )
+    {
+        setVisible( true );
+        HbEffect::start( this, "appear", this, "appeared" );
+    }
+    else if ( ! visible && isVisible() == true )
+    {
+        HbEffect::start( this, "disappear", this, "disappeared" );
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// 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()"));
+
+    setVisible( false );
+
+    if ( status.reason == Hb::EffectFinished )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() successful"));
+    }
+    else
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::disappeared() NOT successful"));
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::durationChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::durationChanged( int duration )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()"));
+
+    if ( mProgressBar )
+    {
+        mProgressBar->durationChanged( duration );
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::positionChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::positionChanged( int position )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()"));
+
+    if ( mProgressBar )
+    {
+        mProgressBar->positionChanged( position );
+    }
+}
+
+//End of file
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolconfiguration.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#16 %
+// Version : %version: da1mmcf#17 %
 
 
 
@@ -191,8 +191,7 @@
 {
     MPX_DEBUG(_L("QMPXVideoPlaybackControlConfiguration::updateControlsWithFileDetails()"));
 
-    addControlToList( EMPXButtonBar );
-    addControlToList( EMPXProgressBar );
+    addControlToList( EMPXControlBar );
 
     if ( mControlsController->fileDetails()->mVideoEnabled )
     {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolpolicy.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* 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:  Implementation of MPXVideoPlaybackControlPolicy
+*
+*/
+
+// Version : %version: da1mmcf#10 %
+
+
+
+// INCLUDE FILES
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolpolicy.h"
+#include "mpxvideoplaybackviewfiledetails.h"
+
+// ================= MEMBER FUNCTIONS ==============================================================
+
+// -------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackControlPolicy::CMPXVideoPlaybackControlPolicy()
+// C++ default constructor can NOT contain any code, that might leave.
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlPolicy::QMPXVideoPlaybackControlPolicy()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::QMPXVideoPlaybackControlPolicy()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy()
+// Destructor.
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::~QMPXVideoPlaybackControlPolicy()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlPolicy::setControlProperties()
+// -------------------------------------------------------------------------------------------------
+//
+void 
+QMPXVideoPlaybackControlPolicy::setControlProperties( TMPXVideoPlaybackControls controlIndex,
+                                                      TUint& properties,
+                                                      QMPXVideoPlaybackViewFileDetails *details,
+                                                      TPlaybackViewMode viewMode )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlPolicy::setControlProperties()"));
+
+    properties = 0;
+
+    switch ( controlIndex )
+    {
+        case EMPXBufferingAnimation:
+        {
+            properties = EMPXShownWhenInitializing |
+                         EMPXShownWhenBuffering;
+            break;
+        }
+        case EMPXStatusPane:
+        {
+            if ( details->mPlaybackMode != EMPXVideoLocal ||
+            	   viewMode == EAudioOnlyView ||
+            	   viewMode == EDetailsView )
+            {                
+                properties = EMPXAllProperties;
+            }
+            else
+            {
+                properties = EMPXShownWhenPlaying |
+                             EMPXShownWhenPaused |
+                             EMPXShownWhenSeeking;
+            }
+            break;
+        }
+        case EMPXControlBar:
+        {
+            //
+            // We don't delete ButtonBar and Progress Bar from the controlsList 
+            // to update information all the time though it's not visible or activated
+            // So just hide these if it is details view
+            //
+            if ( viewMode == EDetailsView )
+            {
+                properties = 0;
+            }
+            else if ( viewMode == EAudioOnlyView )
+            {
+                properties = EMPXAllProperties;
+            }
+            else
+            {
+                properties = EMPXShownWhenPlaying |
+                             EMPXShownWhenPaused |
+                             EMPXShownWhenSeeking;
+            }
+            break;
+        }
+        case EMPXFileDetailsWidget:
+        case EMPXIndicatorBitmap:
+        case EMPXDetailsViewPlaybackWindow:
+        {
+            //
+            // Add all these controls when it is details view or audio only view
+            // Once it's added to controlsList, these are visible always
+            //
+            properties = EMPXAllProperties;
+            break;
+        }
+    }
+}
+
+// End of File
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#27 %
+// Version : %version: da1mmcf#29 %
 
 
 
@@ -23,7 +23,6 @@
 #include <coecntrl.h>
 #include <bautils.h>
 #include <barsread.h>
-#include <StringLoader.h>
 #include <f32file.h>
 
 #include <QTimer>
@@ -36,11 +35,11 @@
 #include <hbratingslider.h>
 #include <hbiconanimator.h>
 #include <hbtransparentwindow.h>
+#include <hbiconanimationmanager.h>
 
 #include "mpxvideoviewwrapper.h"
 #include "hbvideobaseplaybackview.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
+#include "mpxvideoplaybackcontrolbar.h"
 #include "mpxvideoplaybackcontrolpolicy.h"
 #include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackviewfiledetails.h"
@@ -186,6 +185,8 @@
 void QMPXVideoPlaybackControlsController::addFileDetails(
     QMPXVideoPlaybackViewFileDetails* details )
 {
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlsController::addFileDetails"));
+
     //
     // If it is not local, hide the star rating
     //
@@ -481,10 +482,11 @@
             //
             // Buffering animation icon
             //
+            HbIconAnimationManager* manager = HbIconAnimationManager::global();
+            manager->addDefinitionFile(":/hbvideoplaybackview/animation.axml");
+			
             QGraphicsWidget *widget = mLoader->findWidget( QString( "bufferingIcon" ) );
             HbLabel *bufferingAnim = qobject_cast<HbLabel*>( widget );
-            HbIconItem *iconItem = new HbIconItem( bufferingAnim->icon() );
-            iconItem->animator().startAnimation();
 
             control = new QMPXVideoPlaybackFullScreenControl( this,
                                                               controlIndex,
@@ -507,43 +509,24 @@
 
             break;
         }
-        case EMPXButtonBar:
+        case EMPXControlBar:
         {
             //
             // Button bar
             //
-            QGraphicsWidget *widget = mLoader->findWidget( QString( "buttonBarLayout" ) );
-            QMPXVideoPlaybackButtonBar *buttonBar = 
-                qobject_cast<QMPXVideoPlaybackButtonBar*>( widget );
-            buttonBar->initialize();
+            QGraphicsWidget *widget = mLoader->findWidget( QString( "controlBarLayout" ) );
+            QMPXVideoPlaybackControlBar *controlBar = 
+                qobject_cast<QMPXVideoPlaybackControlBar*>( widget );
+            controlBar->initialize();
 
             control = new QMPXVideoPlaybackFullScreenControl( this,
                                                               controlIndex,
-                                                              buttonBar,
+                                                              controlBar,
                                                               properties );
             mControls.append( control );
 
             break;
         }
-        case EMPXProgressBar:
-        {
-            //
-            // Progress bar
-            //
-            QGraphicsWidget *widget = mLoader->findWidget( QString( "progressBarLayout" ) );
-            QMPXVideoPlaybackProgressBar *progressBar = 
-                qobject_cast<QMPXVideoPlaybackProgressBar*>( widget );
-            progressBar->initialize();
-
-            control = new QMPXVideoPlaybackFullScreenControl( this,
-                                                              controlIndex,
-                                                              progressBar,
-                                                              properties );
-
-            mControls.append( control );
-
-            break;
-        }
         case EMPXFileDetailsWidget:
         {
             QGraphicsWidget *widget = mLoader->findWidget( QString( "fileDetailsLayout" ) );
@@ -703,7 +686,7 @@
 
     for ( int i = 0 ; i < mControls.count() ; i++ )
     {
-        if ( mControls[i]->controlIndex() == EMPXButtonBar )
+        if ( mControls[i]->controlIndex() == EMPXControlBar )
         {
             if ( mControls[i]->isVisible() )
             {
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,12 +15,13 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 8 %
 
 
 
 #include "mpxvideo_debug.h"
 #include "mpxvideoplaybackbuttonbar.h"
+#include "mpxvideoplaybackcontrolbar.h"
 #include "mpxvideoplaybackprogressbar.h"
 #include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackfiledetailswidget.h"
@@ -58,7 +59,12 @@
 {
     QObject *object = NULL;
 
-    if ( name == "buttonBarLayout" )
+    if ( name == "controlBarLayout" )
+    {
+        object = new QMPXVideoPlaybackControlBar( mController );
+        object->setObjectName( name );
+    }
+    else if ( name == "buttonBarLayout" )
     {
         object = new QMPXVideoPlaybackButtonBar( mController );
         object->setObjectName( name );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,332 @@
+/*
+* 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:  Implementation of QMPXVideoPlaybackFullScreenControl
+*
+*/
+
+// Version : %version: da1mmcf#8 %
+
+
+
+#include <w32std.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolbar.h"
+#include "mpxvideoplaybackfullscreencontrol.h"
+#include "mpxvideoplaybackfiledetailswidget.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
+#include "mpxvideoplaybackdetailsplaybackwindow.h"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl( 
+        QMPXVideoPlaybackControlsController* controller, 
+        TMPXVideoPlaybackControls index, 
+        HbWidget* widget, 
+        TUint controlproperties )
+    : mController( controller )
+    , mControl( widget )
+    , mControlIndex( index )
+    , mProperties( controlproperties )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()"));
+
+    setParent( mController );
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackFullScreenControl"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::setVisible()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::setVisible( bool visible )
+{
+    switch ( mControlIndex )
+    {
+        case EMPXControlBar:
+        {
+            static_cast<QMPXVideoPlaybackControlBar*>(mControl)->setVisibleToControlBar( visible );
+            break;
+        }
+        default:
+        {
+            mControl->setVisible( visible );
+            break;
+        }
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::isVisible()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::isVisible()
+{
+    return mControl->isVisible();
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::setVisibility()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::setVisibility( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::setVisibility()"));
+
+    bool visible = false;
+
+    switch( state )
+    {
+        case EPbStatePlaying:
+        {
+            if ( mProperties & EMPXShownWhenPlaying )
+            {
+                visible = true;
+            }
+            break;
+        }
+        case EPbStatePaused:
+        {
+            if ( mProperties & EMPXShownWhenPaused )
+            {
+                visible = true;
+            }
+            break;
+        }
+        case EPbStatePluginSeeking:
+        {
+            if ( mProperties & EMPXShownWhenSeeking )
+            {
+                visible = true;
+            }
+            break;
+        }
+        case EPbStateBuffering:
+        {
+            if ( mProperties & EMPXShownWhenBuffering )
+            {
+                visible = true;
+            }
+            break;
+        }
+        case EPbStateNotInitialised:
+        case EPbStateInitialising:
+        {
+            if ( mProperties & EMPXShownWhenInitializing )
+            {
+                visible = true;
+            }
+            break;
+        }
+    }
+
+    setVisible( visible );
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::controlIndex()
+// -------------------------------------------------------------------------------------------------
+//
+TMPXVideoPlaybackControls QMPXVideoPlaybackFullScreenControl::controlIndex()
+{
+    return mControlIndex;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::volumeChanged()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int volume )
+{
+    bool changed = EFalse;
+
+    if ( mControlIndex == EMPXControlBar )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::volumeChanged() [%d]"), volume);
+
+        //static_cast<QMPXVideoPlaybackButtonBar*>(mControl)->volumeChanged( volume );
+
+        changed = ETrue;
+    }
+
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::durationChanged()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration )
+{
+    bool changed = EFalse;
+
+    if ( mControlIndex == EMPXControlBar )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration);
+
+        static_cast<QMPXVideoPlaybackControlBar*>(mControl)->durationChanged( duration );
+
+        changed = ETrue;
+    }
+
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::positionChanged()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position )
+{
+    bool changed = EFalse;
+
+    if ( mControlIndex == EMPXControlBar )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position);
+
+        static_cast<QMPXVideoPlaybackControlBar*>(mControl)->positionChanged( position );
+
+        changed = ETrue;
+    }
+
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio )
+{
+    bool changed = EFalse;
+
+    if ( mControlIndex == EMPXControlBar )
+    {
+        MPX_DEBUG(
+            _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio);
+
+        static_cast<QMPXVideoPlaybackControlBar*>(mControl)->aspectRatioChanged( aspectRatio );
+
+        changed = ETrue;
+    }
+
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackFullScreenControl::setDownloadSize()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::setDownloadSize( int /*size*/ )
+{
+    bool changed = EFalse;
+
+    /*
+    if ( mControlIndex == EMPXProgressBar )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::SetDownloadSize() [%d]"), size);
+
+        //static_cast<CMPXVideoPlaybackProgressBar*>(mControl)->SetDownloadSize( size );
+
+        changed = ETrue;
+    }
+*/
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackFullScreenControl::updateDownloadPosition()
+// -------------------------------------------------------------------------------------------------
+//
+bool QMPXVideoPlaybackFullScreenControl::updateDownloadPosition( int /*size*/ )
+{
+    bool changed = EFalse;
+
+    /*
+    if ( mControlIndex == EMPXProgressBar )
+    {
+        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::UpdateDownloadPosition() [%d]"), size);
+
+        //static_cast<CMPXVideoPlaybackProgressBar*>(mControl)->updateDownloadPosition( size );
+
+        changed = ETrue;
+    }*/
+
+    return changed;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateState( TMPXPlaybackState state )
+{
+    switch ( mControlIndex )
+    {
+        case EMPXControlBar:
+        {
+            static_cast<QMPXVideoPlaybackControlBar*>(mControl)->updateState( state );
+            break;
+        }
+        case EMPXDetailsViewPlaybackWindow:
+        {
+            static_cast<QMPXVideoPlaybackDetailsPlaybackWindow*>(mControl)->updateState( state );
+            break;
+        }
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    switch ( mControlIndex )
+    {
+        case EMPXControlBar:
+        {
+            static_cast<QMPXVideoPlaybackControlBar*>(mControl)->updateWithFileDetails( details );
+            break;
+        }
+        case EMPXFileDetailsWidget:
+        {
+            static_cast<QMPXVideoPlaybackFileDetailsWidget*>(mControl)->updateWithFileDetails( details );
+            break;
+        }
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackFullScreenControl::updateControlProperties()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackFullScreenControl::updateControlProperties( TUint properties )
+{
+    mProperties = properties;
+}
+
+// End of file
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackprogressbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#13 %
+// Version : %version: da1mmcf#14 %
 
 
 
@@ -24,9 +24,7 @@
 #include <QGraphicsSceneMouseEvent>
 
 #include <hblabel.h>
-#include <hbframeitem.h>
 #include <hbprogressbar.h>
-#include <hbframedrawer.h>
 
 #include "mpxvideo_debug.h"
 #include "mpxvideoplaybackprogressbar.h"
@@ -44,7 +42,6 @@
     , mNeedToResumeAfterSetPosition( false )
     , mInitialized( false )
     , mDragging( false )
-    , mFrameItem( NULL )
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()"));
 }
@@ -98,16 +95,6 @@
         // we need to set the duration manually 
         //
         durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier );
-
-        //
-        // Set framedrawer for semi transparent background
-        //
-        mFrameItem = new HbFrameItem ( this );
-        mFrameItem->setGeometry( boundingRect() );
-        mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::OnePiece );
-        mFrameItem->frameDrawer().setFillWholeRect( true );
-        mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_status_trans_normal_c" );
-        mFrameItem->setVisible( false );
     }
 }
 
@@ -295,8 +282,6 @@
     {
         setEnabled( true );
     }
-
-    mFrameItem->setVisible( ( mController->viewMode() == EFullScreenView )? ETrue:EFalse );
 }
 
 // -------------------------------------------------------------------------------------------------
--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackstatuspanecontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 12 %
+// Version : %version: ou1cpsw#13 %
 
 
 #include <hbmenu.h>
@@ -49,13 +49,16 @@
 {
     MPX_ENTER_EXIT(_L("QMPXVideoPlaybackStatusPaneControl::QMPXVideoPlaybackStatusPaneControl()"));
 
-    mActionBack = new HbAction( Hb::BackAction );
+    mActionBack = new HbAction( Hb::BackNaviAction );
 
     //
     // Press "back" key means going back to previous view if it's avaiable
     //
     connect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) );
-    hbInstance->allMainWindows()[0]->addSoftKeyAction( Hb::SecondarySoftKey , mActionBack );
+    
+    HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
+    HbView *currentView = mainWnd->currentView();
+    currentView->setNavigationAction(mActionBack);
 
     connect( mController->view()->menu(), SIGNAL( aboutToShow() ), this, SLOT( handleAboutToShow() ) );
     connect( mController->view()->menu(), SIGNAL( aboutToHide() ), this, SLOT( handleAboutToHide() ) );
@@ -74,7 +77,10 @@
 
     disconnect( mActionBack, SIGNAL( triggered() ), mController->view(), SLOT( closePlaybackView() ) );
     disconnect( mActionBack, SIGNAL( triggered() ), this, SLOT( openFullScreenView() ) );
-    hbInstance->allMainWindows()[0]->removeSoftKeyAction( Hb::SecondarySoftKey , mActionBack );
+
+    HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
+    HbView *currentView = mainWnd->currentView();
+    currentView->setNavigationAction(0);
 
     disconnect( mController->view()->menu(), SIGNAL( aboutToShow() ), this, SLOT( handleAboutToShow() ) );
     disconnect( mController->view()->menu(), SIGNAL( aboutToHide() ), this, SLOT( handleAboutToHide() ) );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/hbvideoplaybackview.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,97 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+# 
+# Description: Project file for building Videoplayer components
+#
+#
+# Version : %version: da1mmcf#17 %
+
+
+TEMPLATE = lib
+CONFIG += hb qt dll
+TARGET = hbvideoplaybackview
+DEFINES += BUILD_VIDEOPLAYBACK_DLL
+
+symbian:
+{
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.UID3 = 0x20024334
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \
+                   $$APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE
+    BLD_INF_RULES.prj_exports += "rom/hbvideoplaybackview.iby CORE_APP_LAYER_IBY_EXPORT_PATH(hbvideoplaybackview.iby)"
+}
+
+INCLUDEPATH += ../../inc \
+               /epoc32/include/platform/mw/alf
+
+LIBS += -lmpxplaybackutility.dll \
+        -lmpxcommon.dll \
+        -lmpxviewplugin.dll \
+        -lestor.dll \
+        -lcommonengine.dll \
+        -lflogger.dll \
+        -lsysutil.dll \
+        -lmpxcollectionutility.dll \
+        -lremconcoreapi.dll \
+        -lremconInterfacebase.dll \
+        -lcentralrepository.dll \
+        -lthumbnailmanagerqt.dll \
+        -lmediaclientvideodisplay.dll \
+        -lalfdecoderserverclient.dll
+
+DEPENDPATH += ../inc inc viewinc controlinc
+VPATH += viewsrc controlsrc
+
+HEADERS += hbvideobaseplaybackview.h \
+           hbvideoplaybackview.h \
+           mpxvideoplaybackviewfiledetails.h \
+           mpxvideoviewwrapper.h \
+           mpxvideoregion.h \
+           mpxvideoplaybackdisplayhandler.h \
+           mpxvideoplaybackfullscreencontrol.h \
+           mpxvideoplaybackstatuspanecontrol.h \
+           mpxvideoplaybackprogressbar.h \
+           mpxvideoplaybackbuttonbar.h \
+           mpxvideoplaybackcontrolbar.h \
+           mpxvideoplaybackcontrolpolicy.h \
+           mpxvideoplaybackcontrolconfiguration.h \
+           mpxvideoplaybackcontrolscontroller.h \
+           mpxvideoplaybackdocumentloader.h \
+           mpxvideoplaybackfiledetailswidget.h \
+           mpxvideoplaybackuserinputhandler.h \
+           mpxvideoplaybacknontouchvolumebar.h \
+           mpxvideoplaybackdetailsplaybackwindow.h \
+           mpxvideocontainer.h
+
+SOURCES += hbvideobaseplaybackview.cpp \
+           hbvideoplaybackview.cpp \
+           mpxvideoplaybackviewfiledetails.cpp \
+           mpxvideoviewwrapper.cpp \
+           mpxvideoplaybackdisplayhandler.cpp \
+           mpxvideoplaybackfullscreencontrol.cpp \
+           mpxvideoplaybackstatuspanecontrol.cpp \
+           mpxvideoplaybackprogressbar.cpp \
+           mpxvideoplaybackbuttonbar.cpp \
+           mpxvideoplaybackcontrolbar.cpp \
+           mpxvideoplaybackcontrolscontroller.cpp \
+           mpxvideoplaybackcontrolpolicy.cpp \
+           mpxvideoplaybackcontrolconfiguration.cpp \
+           mpxvideoplaybackdocumentloader.cpp \
+           mpxvideoplaybackfiledetailswidget.cpp \
+           mpxvideoplaybackuserinputhandler.cpp \
+           mpxvideoplaybacknontouchvolumebar.cpp \
+           mpxvideoplaybackdetailsplaybackwindow.cpp \
+           mpxvideocontainer.cpp
+
+RESOURCES += resources/hbvideoplaybackview.qrc
--- a/videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#12 %
+// Version : %version: da1mmcf#13 %
 
 
 
@@ -42,7 +42,6 @@
 class CMPXVideoViewWrapper;
 class HbVideoBasePlaybackView;
 class QMPXVideoPlaybackControlPolicy;
-class QMPXVideoPlaybackControlsLayout;
 class QMPXVideoPlaybackDocumentLoader;
 class QMPXVideoPlaybackFullScreenControl;
 class QMPXVideoPlaybackNonTouchVolumeBar;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/resources/animation.axml	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,14 @@
+<animations>
+<icon name="frame_anim_looping" frame_duration="100" playmode="loop">
+<frame>qtg_anim_loading_1</frame>
+<frame>qtg_anim_loading_2</frame>
+<frame>qtg_anim_loading_3</frame>
+<frame>qtg_anim_loading_4</frame>
+<frame>qtg_anim_loading_5</frame>
+<frame>qtg_anim_loading_6</frame>
+<frame>qtg_anim_loading_7</frame>
+<frame>qtg_anim_loading_8</frame>
+<frame>qtg_anim_loading_9</frame>
+<frame>qtg_anim_loading_10</frame>
+</icon>
+</animations>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/resources/effects/controlbar_appear.fxml	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,12 @@
+<layers>
+	<visual>
+	    <param name="translation_y" type="anim">
+	        <duration>0.4</duration>
+	        <style>outquad</style>
+	        <keyframe at="0.0">0.0</keyframe>
+	        <keyframe at="1.0">1.0</keyframe>
+	        <start ref="visual.bottom">1.0</start>
+	        <end ref="visual.top">1.0</end>
+	    </param>
+	</visual>
+</layers>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/resources/effects/controlbar_disappear.fxml	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,12 @@
+<layers>
+	<visual>
+	    <param name="translation_y" type="anim">
+	        <duration>0.4</duration>
+	        <style>outquad</style>
+	        <keyframe at="0.0">0.0</keyframe>
+	        <keyframe at="1.0">1.0</keyframe>
+	        <start ref="visual.top">-1.0</start>
+	        <end ref="visual.bottom">1.0</end>
+	    </param>
+	</visual>
+</layers>
--- a/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.docml	Thu Apr 01 23:32:44 2010 +0300
@@ -1,125 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument version="0.9">
     <widget name="content" type="HbWidget">
-        <widget name="buttonBarLayout" type="HbWidget">
-            <widget name="aspectRatioButtons" type="HbWidget">
-                <widget name="naturalButton" type="HbPushButton">
-                    <icon iconName="qtg_mono_aspect_ratio_natural.svg" name="icon"/>
-                    <sizehint height="50" type="PREFERRED" width="150"/>
-                    <sizehint height="50" type="MINIMUM" width="120"/>
-                    <bool name="visible" value="FALSE"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <widget name="stretchButton" type="HbPushButton">
-                    <icon iconName="qtg_mono_aspect_ratio_stretched.svg" name="icon"/>
-                    <real name="z" value="1"/>
-                    <sizehint height="50" type="PREFERRED" width="150"/>
-                    <sizehint height="50" type="MINIMUM" width="120"/>
-                    <bool name="visible" value="FALSE"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <widget name="zoomButton" type="HbPushButton">
-                    <icon iconName=":/hbvideoplaybackview/images/qtg_mono_aspect_ratio_zoom.png" name="icon"/>
-                    <real name="z" value="2"/>
-                    <sizehint height="50" type="PREFERRED" width="150"/>
-                    <sizehint height="50" type="MINIMUM" width="120"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <real name="z" value="0"/>
-                <sizehint height="150" type="PREFERRED" width="150"/>
-                <sizehint height="52" type="MINIMUM" width="120"/>
-                <layout type="stacked">
-                    <stackitem itemname="naturalButton"/>
-                    <stackitem itemname="stretchButton"/>
-                    <stackitem itemname="zoomButton"/>
-                </layout>
-            </widget>
-            <widget name="rwButton" type="HbPushButton">
-                <icon iconName="qtg_mono_previous.svg" name="icon"/>
-                <sizehint height="50" type="PREFERRED" width="150"/>
-                <sizehint height="50" type="MINIMUM" width="120"/>
-                <string name="state" value="normal"/>
-            </widget>
-            <widget name="playPauseButtons" type="HbWidget">
-                <widget name="playButton" type="HbPushButton">
-                    <icon iconName="qtg_mono_play.svg" name="icon"/>
-                    <real name="z" value="1"/>
-                    <sizehint height="50" type="PREFERRED" width="150"/>
-                    <sizehint height="50" type="MINIMUM" width="120"/>
-                    <bool name="visible" value="FALSE"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <widget name="pauseButton" type="HbPushButton">
-                    <icon iconName="qtg_mono_pause.svg" name="icon"/>
-                    <sizehint height="50" type="PREFERRED" width="150"/>
-                    <sizehint height="50" type="MINIMUM" width="120"/>
-                    <string name="state" value="normal"/>
-                </widget>
-                <real name="z" value="0"/>
-                <sizehint height="150" type="PREFERRED" width="150"/>
-                <sizehint height="52" type="MINIMUM" width="120"/>
-                <layout type="stacked">
-                    <stackitem itemname="playButton"/>
-                    <stackitem itemname="pauseButton"/>
-                </layout>
-            </widget>
-            <widget name="ffButton" type="HbPushButton">
-                <icon iconName="qtg_mono_next.svg" name="icon"/>
-                <real name="z" value="7"/>
-                <sizehint height="50" type="PREFERRED" width="150"/>
-                <sizehint height="50" type="MINIMUM" width="120"/>
-                <string name="state" value="normal"/>
-            </widget>
-            <widget name="detailsButton" type="HbPushButton">
-                <icon iconName=":/hbvideoplaybackview/images/qtg_mono_info.png" name="icon"/>
-                <sizehint height="50" type="PREFERRED" width="150"/>
-                <sizehint height="50" type="MINIMUM" width="120"/>
-                <string name="state" value="normal"/>
-            </widget>
-            <real name="z" value="1"/>
-            <sizehint height="60" type="PREFERRED" width="640"/>
-            <sizehint height="50" type="MINIMUM" width="178"/>
-            <bool name="visible" value="FALSE"/>
-            <layout orientation="Horizontal" spacing="0px" type="linear">
-                <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
-                <linearitem itemname="aspectRatioButtons"/>
-                <linearitem itemname="rwButton"/>
-                <linearitem itemname="playPauseButtons"/>
-                <linearitem itemname="ffButton"/>
-                <linearitem itemname="detailsButton"/>
-            </layout>
-        </widget>
-        <widget name="progressBarLayout" type="HbWidget">
-            <widget name="positionLabel" type="HbLabel">
-                <enums name="alignment" value="AlignHCenter|AlignVCenter|AlignTrailing"/>
-                <real name="z" value="1"/>
-                <sizehint height="30" type="PREFERRED" width="30"/>
-            </widget>
-            <widget name="progressSlider" type="HbProgressBar">
-                <integer name="progressValue" value="0"/>
-                <real name="z" value="1"/>
-                <sizehint height="30" type="PREFERRED" width="200"/>
-            </widget>
-            <widget name="durationLabel" type="HbLabel">
-                <enums name="alignment" value="AlignHCenter|AlignVCenter|AlignTrailing"/>
-                <real name="z" value="1"/>
-                <sizehint height="30" type="PREFERRED" width="30"/>
-            </widget>
-            <real name="z" value="3"/>
-            <sizehint height="50" type="PREFERRED" width="640"/>
-            <contentsmargins bottom="6" left="30" right="30" top="6"/>
-            <bool name="visible" value="FALSE"/>
-            <layout orientation="Horizontal" type="linear">
-                <linearitem itemname="positionLabel"/>
-                <linearitem itemname="progressSlider"/>
-                <linearitem itemname="durationLabel"/>
-            </layout>
-        </widget>
         <widget name="bufferingIcon" type="HbLabel">
             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-            <icon iconName=":/hbvideoplaybackview/images/connecting_loading.gif" name="icon"/>
+            <icon iconName="frame_anim_looping" name="icon"/>
             <real name="z" value="5"/>
-            <sizehint height="57" type="PREFERRED" width="63"/>
+            <sizehint height="70" type="PREFERRED" width="70"/>
             <bool name="visible" value="FALSE"/>
         </widget>
         <widget name="fileDetailsLayout" type="HbWidget">
@@ -146,22 +32,22 @@
         <widget name="bitmapLayout" type="HbWidget">
             <widget name="audioOnlyBitmap" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <icon iconName=":/hbvideoplaybackview/images/qtg_large_just_audio.png" name="icon"/>
+                <icon iconName="qtg_large_just_audio" name="icon"/>
                 <bool name="visible" value="FALSE"/>
             </widget>
             <widget name="partialAudioOnlyBitmap" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <icon iconName=":/hbvideoplaybackview/images/qtg_large_corrupted.png" name="icon"/>
+                <icon iconName="qtg_large_corrupted" name="icon"/>
                 <bool name="visible" value="FALSE"/>
             </widget>
             <widget name="realAudioOnlyBitmap" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <icon iconName=":/hbvideoplaybackview/images/qtg_large_realplayer.png" name="icon"/>
+                <icon iconName="qtg_large_realplayer" name="icon"/>
                 <bool name="visible" value="FALSE"/>
             </widget>
             <widget name="tvOutBitmap" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <icon iconName=":/hbvideoplaybackview/images/qtg_large_tv_out.png" name="icon"/>
+                <icon iconName="qtg_large_tv_out" name="icon"/>
                 <bool name="visible" value="FALSE"/>
             </widget>
             <real name="z" value="1"/>
@@ -180,7 +66,7 @@
         <widget name="detailsPlaybackWindow" type="HbWidget">
             <widget name="small_transparentWindow" type="HbTransparentWindow">
                 <widget name="detailsViewPlayButton" type="HbPushButton">
-                    <icon iconName="qtg_mono_play.svg" name="icon"/>
+                    <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"/>
@@ -218,17 +104,135 @@
             <bool name="visible" value="FALSE"/>
             <layout type="anchor"/>
         </widget>
+        <widget name="controlBarLayout" type="HbWidget">
+            <widget name="progressBarLayout" type="HbWidget">
+                <widget name="positionLabel" type="HbLabel">
+                    <enums name="alignment" value="AlignRight|AlignVCenter|AlignHCenter|AlignTrailing"/>
+                    <real name="z" value="1"/>
+                    <sizehint height="30" type="PREFERRED" width="30"/>
+                </widget>
+                <widget name="progressSlider" type="HbProgressBar">
+                    <integer name="progressValue" value="0"/>
+                    <real name="z" value="1"/>
+                    <sizehint height="30" type="PREFERRED" width="200"/>
+                </widget>
+                <widget name="durationLabel" type="HbLabel">
+                    <enums name="alignment" value="AlignRight|AlignVCenter|AlignHCenter|AlignTrailing"/>
+                    <real name="z" value="1"/>
+                    <sizehint height="30" type="PREFERRED" width="30"/>
+                </widget>
+                <real name="z" value="3"/>
+                <sizehint height="50" type="PREFERRED" width="640"/>
+                <contentsmargins bottom="6" left="30" right="30" top="6"/>
+                <bool name="visible" value="TRUE"/>
+                <layout orientation="Horizontal" type="linear">
+                    <linearitem itemname="positionLabel"/>
+                    <linearitem itemname="progressSlider"/>
+                    <linearitem itemname="durationLabel"/>
+                </layout>
+            </widget>
+            <widget name="buttonBarLayout" type="HbWidget">
+                <widget name="aspectRatioButtons" type="HbWidget">
+                    <widget name="naturalButton" type="HbPushButton">
+                        <icon iconName="qtg_mono_aspect_ratio_natural" name="icon"/>
+                        <sizehint height="50" type="PREFERRED" width="150"/>
+                        <sizehint height="50" type="MINIMUM" width="120"/>
+                        <bool name="visible" value="FALSE"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <widget name="stretchButton" type="HbPushButton">
+                        <icon iconName="qtg_mono_aspect_ratio_stretched" name="icon"/>
+                        <real name="z" value="1"/>
+                        <sizehint height="50" type="PREFERRED" width="150"/>
+                        <sizehint height="50" type="MINIMUM" width="120"/>
+                        <bool name="visible" value="FALSE"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <widget name="zoomButton" type="HbPushButton">
+                        <icon iconName="qtg_mono_aspect_ratio_zoom" name="icon"/>
+                        <real name="z" value="2"/>
+                        <sizehint height="50" type="PREFERRED" width="150"/>
+                        <sizehint height="50" type="MINIMUM" width="120"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <sizehint height="150" type="PREFERRED" width="150"/>
+                    <sizehint height="52" type="MINIMUM" width="120"/>
+                    <layout type="stacked">
+                        <stackitem itemname="naturalButton"/>
+                        <stackitem itemname="stretchButton"/>
+                        <stackitem itemname="zoomButton"/>
+                    </layout>
+                </widget>
+                <widget name="rwButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_previous" name="icon"/>
+                    <sizehint height="50" type="PREFERRED" width="150"/>
+                    <sizehint height="50" type="MINIMUM" width="120"/>
+                    <string name="state" value="normal"/>
+                </widget>
+                <widget name="playPauseButtons" type="HbWidget">
+                    <widget name="playButton" type="HbPushButton">
+                        <icon iconName="qtg_mono_play" name="icon"/>
+                        <real name="z" value="1"/>
+                        <sizehint height="50" type="PREFERRED" width="150"/>
+                        <sizehint height="50" type="MINIMUM" width="120"/>
+                        <bool name="visible" value="FALSE"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <widget name="pauseButton" type="HbPushButton">
+                        <icon iconName="qtg_mono_pause" name="icon"/>
+                        <sizehint height="50" type="PREFERRED" width="150"/>
+                        <sizehint height="50" type="MINIMUM" width="120"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <sizehint height="150" type="PREFERRED" width="150"/>
+                    <sizehint height="52" type="MINIMUM" width="120"/>
+                    <layout type="stacked">
+                        <stackitem itemname="playButton"/>
+                        <stackitem itemname="pauseButton"/>
+                    </layout>
+                </widget>
+                <widget name="ffButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_next" name="icon"/>
+                    <real name="z" value="7"/>
+                    <sizehint height="50" type="PREFERRED" width="150"/>
+                    <sizehint height="50" type="MINIMUM" width="120"/>
+                    <string name="state" value="normal"/>
+                </widget>
+                <widget name="detailsButton" type="HbPushButton">
+                    <icon iconName="qtg_mono_info" name="icon"/>
+                    <sizehint height="50" type="PREFERRED" width="150"/>
+                    <sizehint height="50" type="MINIMUM" width="120"/>
+                    <string name="state" value="normal"/>
+                </widget>
+                <real name="z" value="1"/>
+                <sizehint height="50" type="PREFERRED" width="640"/>
+                <sizehint height="50" type="MINIMUM" width="178"/>
+                <bool name="visible" value="TRUE"/>
+                <layout orientation="Horizontal" spacing="0px" type="linear">
+                    <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+                    <linearitem itemname="aspectRatioButtons"/>
+                    <linearitem itemname="rwButton"/>
+                    <linearitem itemname="playPauseButtons"/>
+                    <linearitem itemname="ffButton"/>
+                    <linearitem itemname="detailsButton"/>
+                </layout>
+            </widget>
+            <real name="z" value="1"/>
+            <sizehint height="160" type="PREFERRED" width="80"/>
+            <bool name="visible" value="FALSE"/>
+            <layout orientation="Vertical" spacing="0px" type="linear">
+                <contentsmargins bottom="0px" left="0px" right="0px" top="0px"/>
+                <linearitem itemname="progressBarLayout"/>
+                <linearitem itemname="buttonBarLayout"/>
+            </layout>
+        </widget>
         <size height="360" name="size" width="640"/>
         <real name="z" value="1"/>
         <rect height="360" name="geometry" width="640" x="0" y="0"/>
         <sizehint height="524287" type="MAXIMUM" width="524287"/>
         <layout type="anchor">
-            <anchoritem dst="buttonBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="buttonBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="buttonBarLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="progressBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-            <anchoritem dst="progressBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-            <anchoritem dst="progressBarLayout" dstEdge="BOTTOM" spacing="0" src="buttonBarLayout" srcEdge="TOP"/>
             <anchoritem dst="bufferingIcon" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
             <anchoritem dst="bufferingIcon" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
             <anchoritem dst="title" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
@@ -236,6 +240,8 @@
             <anchoritem dst="title" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
             <anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
             <anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
+            <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
             <anchoritem dst="bitmapLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
             <anchoritem dst="bitmapLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="CENTERH"/>
             <anchoritem dst="bitmapLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
@@ -247,15 +253,15 @@
             <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="buttonBarLayout" dstEdge="TOP" spacing="-50" src="" srcEdge="BOTTOM"/>
-            <anchoritem dst="progressBarLayout" dstEdge="TOP" spacing="-50" src="buttonBarLayout" srcEdge="TOP"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
-            <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
             <anchoritem dst="title" dstEdge="BOTTOM" spacing="100" src="" srcEdge="TOP"/>
             <anchoritem dst="volumeSlider" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
             <anchoritem dst="volumeSlider" dstEdge="TOP" spacing="0" src="title" srcEdge="BOTTOM"/>
-            <anchoritem dst="volumeSlider" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
-            <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
+            <anchoritem dst="controlBarLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
+            <anchoritem dst="controlBarLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="controlBarLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="bitmapLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="volumeSlider" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="controlBarLayout" dstEdge="TOP" spacing="-100" src="" srcEdge="BOTTOM"/>
         </layout>
     </widget>
     <section name="detailsView">
@@ -263,9 +269,6 @@
             <sizehint height="0" type="PREFERRED" width="200"/>
             <bool name="visible" value="FALSE"/>
         </widget>
-        <widget name="fileDetailsLayout" type="HbWidget">
-            <sizehint height="264" type="PREFERRED" width="320"/>
-        </widget>
         <widget name="content" type="HbWidget">
             <layout type="anchor">
                 <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="0" src="title" srcEdge="BOTTOM"/>
@@ -274,40 +277,43 @@
                 <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
+        <widget name="fileDetailsLayout" type="HbWidget">
+            <sizehint height="264" type="PREFERRED" width="320"/>
+        </widget>
     </section>
     <section name="audioOnlyViewWithLocalPlayback">
         <widget name="fileDetailsRatingSlider" type="HbRatingSlider">
             <sizehint height="30" type="PREFERRED" width="200"/>
             <bool name="visible" value="TRUE"/>
         </widget>
-        <widget name="fileDetailsLayout" type="HbWidget">
-            <sizehint height="198" type="PREFERRED" width="320"/>
-        </widget>
         <widget name="content" type="HbWidget">
             <layout type="anchor">
                 <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
                 <anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
                 <anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
+                <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
+        <widget name="fileDetailsLayout" type="HbWidget">
+            <sizehint height="198" type="PREFERRED" width="320"/>
+        </widget>
     </section>
     <section name="audioOnlyViewWithNonLocalPlayback">
         <widget name="fileDetailsRatingSlider" type="HbRatingSlider">
             <sizehint height="0" type="PREFERRED" width="200"/>
             <bool name="visible" value="FALSE"/>
         </widget>
-        <widget name="fileDetailsLayout" type="HbWidget">
-            <sizehint height="198" type="PREFERRED" width="320"/>
-        </widget>
         <widget name="content" type="HbWidget">
             <layout type="anchor">
                 <anchoritem dst="fileDetailsLayout" dstEdge="TOP" spacing="62" src="" srcEdge="TOP"/>
                 <anchoritem dst="fileDetailsLayout" dstEdge="LEFT" spacing="0" src="" srcEdge="CENTERH"/>
                 <anchoritem dst="fileDetailsLayout" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="0" src="progressBarLayout" srcEdge="TOP"/>
+                <anchoritem dst="fileDetailsLayout" dstEdge="BOTTOM" spacing="-100" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
+        <widget name="fileDetailsLayout" type="HbWidget">
+            <sizehint height="198" type="PREFERRED" width="320"/>
+        </widget>
     </section>
     <section name="nonLocalPlayback">
         <widget name="starRatingSlider" type="HbRatingSlider">
--- a/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/resources/hbvideoplaybackview.qrc	Thu Apr 01 23:32:44 2010 +0300
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <RCC>
     <qresource prefix="hbvideoplaybackview">
-        <file>images/qtg_mono_aspect_ratio_zoom.png</file>
-        <file>images/qtg_large_corrupted.png</file>
-        <file>images/connecting_loading.gif</file>
-        <file>images/qtg_large_just_audio.png</file>
-        <file>images/qtg_large_tv_out.png</file>
-        <file>images/qtg_large_realplayer.png</file>
-        <file>images/qtg_mono_info.png</file>
+        <file>animation.axml</file>
         <file>hbvideoplaybackview.docml</file>
+        <file>effects/controlbar_appear.fxml</file>
+        <file>effects/controlbar_disappear.fxml</file>
     </qresource>
 </RCC>
--- a/videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testcontrolconfiguration/src/testcontrolconfiguration.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -143,14 +143,14 @@
     
     QList<TMPXVideoPlaybackControls> controlsList = mControlConfig->controlList();
     
-    QVERIFY( controlsList.contains( EMPXButtonBar ) );
+    QVERIFY( controlsList.contains( EMPXControlBar ) );
     
     // 2. test with mVideoEnabled = true
     mControlsController->mFileDetails->mVideoEnabled = false;
     
     mControlConfig->updateControlsWithFileDetails(); 
     
-    QVERIFY( controlsList.contains( EMPXProgressBar ) );
+    QVERIFY( controlsList.contains( EMPXControlBar ) );
     
     QGraphicsWidget *widget = 
             mControlsController->layoutLoader()->findWidget( QString( "transparentWindow" ) );
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/src/testfullscreencontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 #include <hbapplication.h>
@@ -28,8 +28,7 @@
 
 #include "mpxvideoplaybackviewfiledetails.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackbuttonbar.h"
+#include "mpxvideoplaybackcontrolbar.h"
 
 
 #define private public
@@ -104,26 +103,14 @@
                                                                          0 );         
             break;    
         }
-        case EMPXProgressBar:
-        {            
-            QMPXVideoPlaybackProgressBar *progressBar = 
-                    new QMPXVideoPlaybackProgressBar( mControlsController );            
-
-            mFullScreenControl = new QMPXVideoPlaybackFullScreenControl( mControlsController,
-                                                                         control,
-                                                                         progressBar,
-                                                                         0 );            
-        
-            break; 
-        }
-        case EMPXButtonBar:
+        case EMPXControlBar:
         {
-            QMPXVideoPlaybackButtonBar *buttonBar = 
-                    new QMPXVideoPlaybackButtonBar( mControlsController );            
+            QMPXVideoPlaybackControlBar *controlBar = 
+                    new QMPXVideoPlaybackControlBar( mControlsController );            
     
             mFullScreenControl = new QMPXVideoPlaybackFullScreenControl( mControlsController,
                                                                          control,
-                                                                         buttonBar,
+                                                                         controlBar,
                                                                          0 );            
              
             break;
@@ -198,9 +185,9 @@
     // test for progress bar
     delete mFullScreenControl;
     mFullScreenControl = NULL;    
-    setup( EMPXProgressBar );
+    setup( EMPXControlBar );
     QVERIFY( mFullScreenControl->durationChanged( 100 ) );      
-    QVERIFY( static_cast<QMPXVideoPlaybackProgressBar*>(mFullScreenControl->mControl)->mDuration == 100 );       
+    QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mDuration == 100 );       
     
     // test for something other than progress bar
     delete mFullScreenControl;
@@ -221,9 +208,9 @@
     // test for progress bar
     delete mFullScreenControl;
     mFullScreenControl = NULL;    
-    setup( EMPXProgressBar );
+    setup( EMPXControlBar );
     QVERIFY( mFullScreenControl->positionChanged( 100 ) );      
-    QVERIFY( static_cast<QMPXVideoPlaybackProgressBar*>(mFullScreenControl->mControl)->mPosition == 100 );      
+    QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mPosition == 100 );      
     
     // test for something other than progress bar
     delete mFullScreenControl;
@@ -243,9 +230,9 @@
     // test for button bar
     delete mFullScreenControl;
     mFullScreenControl = NULL;    
-    setup( EMPXButtonBar );        
+    setup( EMPXControlBar );        
     QVERIFY( mFullScreenControl->aspectRatioChanged( 3 ) );  // EMMFNatural
-    QVERIFY( static_cast<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mAspectRatio == 3 ); 
+    QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mAspectRatio == 3 ); 
     
     // test for something other than button bar
     delete mFullScreenControl;
@@ -264,9 +251,9 @@
 
     delete mFullScreenControl;
     mFullScreenControl = NULL;    
-    setup( EMPXButtonBar );     
+    setup( EMPXControlBar );     
     mFullScreenControl->updateState( EPbStatePaused ); 
-    QVERIFY( static_cast<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mState == EPbStatePaused );         
+    QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mState == EPbStatePaused );         
 }
 
 // ---------------------------------------------------------------------------
@@ -279,13 +266,13 @@
 
     delete mFullScreenControl;
     mFullScreenControl = NULL;     
-    setup( EMPXButtonBar );
+    setup( EMPXControlBar );
     
     mFileDetails->mPausableStream = true;
     
     mFullScreenControl->updateControlsWithFileDetails(mFileDetails);
     
-    QVERIFY( static_cast<QMPXVideoPlaybackButtonBar*>(mFullScreenControl->mControl)->mShowPauseButton );    
+    QVERIFY( static_cast<QMPXVideoPlaybackControlBar*>(mFullScreenControl->mControl)->mFileDetails->mPausableStream );    
 }
 
 // ---------------------------------------------------------------------------
@@ -303,6 +290,6 @@
     QVERIFY( mFullScreenControl != NULL );
     
     QVERIFY( mFullScreenControl->mProperties == 1 );
-}        
+}
         
 // End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackbuttonbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +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 QMPXVideoPlaybackButtonBar
-*
-*/
-
-// Version : %version: 1 %
-
-
-
-#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_
-#define MPXVIDEOPLAYBACKBUTTONBAR_H_
-
-#include <hbwidget.h>
-#include <MMFScalingCustomCommandConstants.h>
-#include <mpxplaybackframeworkdefs.h>
-
-
-class QMPXVideoPlaybackViewFileDetails;
-class QMPXVideoPlaybackControlsController;
-
-// DATA TYPES
-enum TMPXButton
-{
-    EMPXButtonRW,
-    EMPXButtonPlay,
-    EMPXButtonPause,
-    EMPXButtonFF,
-    EMPXButtonNatural,
-    EMPXButtonStretch,
-    EMPXButtonZoom,
-    EMPXButtonDetails,
-    EMPXButtonCount    // Should always be the last value
-};
-
-
-class QMPXVideoPlaybackButtonBar : public HbWidget
-{
-    Q_OBJECT
-
-    public:
-        QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller );
-        virtual ~QMPXVideoPlaybackButtonBar();
-
-        void aspectRatioChanged( int aspectRatio );
-
-        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
-        
-        void updateState( TMPXPlaybackState state );
-
-    public:
-        QMPXVideoPlaybackControlsController *mController;
-        bool                                 mInitialized;
-        int                                  mAspectRatio;
-        TMPXPlaybackState                    mState;
-        bool                                 mShowPauseButton;
-};
-
-#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackcontrolbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version: 2 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_
+#define MPXVIDEOPLAYBACKCONTROLBAR_H_
+
+
+
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackControlBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackControlBar();
+        void updateState( TMPXPlaybackState state );
+        void aspectRatioChanged( int aspectRatio );
+        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+        void setVisibleToControlBar( bool visible );
+        void durationChanged( int duration );
+        void positionChanged( int position );
+
+    public:
+        QMPXVideoPlaybackControlsController *mController;
+        int  mPosition;
+        int  mDuration;
+        int  mAspectRatio;
+        bool mVisibility;
+        TMPXPlaybackState mState;
+        QMPXVideoPlaybackViewFileDetails *mFileDetails;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/inc/mpxvideoplaybackprogressbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +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 <hbwidget.h>
-#include <mpxplaybackframeworkdefs.h>
-
-class HbLabel;
-class QPainter;
-class HbProgressBar;
-class QMPXVideoPlaybackViewFileDetails;
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackProgressBar : public HbWidget
-{
-    Q_OBJECT
-
-    public:
-        QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller );
-        virtual ~QMPXVideoPlaybackProgressBar();
-
-        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
-
-        void durationChanged( int duration );
-        void positionChanged( int position );
-        void updateState( TMPXPlaybackState state );
-
-    public:
-        QMPXVideoPlaybackControlsController *mController;
-        int                                  mDuration;
-        bool                                 mNeedToResumeAfterSetPosition;
-        bool                                 mInitialized;
-        bool                                 mDragging;  
-        int                                  mPosition;
-
-};
-
-#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackbuttonbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +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 QMPXVideoPlaybackButtonBar
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-#include <hbslider.h>
-#include <hbaction.h>
-#include <hbiconitem.h>
-#include <hbpushbutton.h>
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxcommonvideoplaybackview.hrh"
-#include "mpxvideoplaybackcontrolscontroller.h"
-
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( 
-        QMPXVideoPlaybackControlsController* controller )
-    : mController( controller )
-    , mInitialized( false )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()"));
-}
-
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::updateState()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackButtonBar::updateState( TMPXPlaybackState state )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateState() state = %d"), state );
-    mState = state;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::aspectRatioChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackButtonBar::aspectRatioChanged( int aspectRatio )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
-    
-    mAspectRatio = aspectRatio;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::updateWithFileDetails()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackButtonBar::updateWithFileDetails(
-        QMPXVideoPlaybackViewFileDetails* details )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateWithFileDetails()"));
-    
-    mShowPauseButton = details->mPausableStream;
-}
-
-//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version:  2 %
+
+
+
+#include <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolbar.h"
+#include "mpxcommonvideoplaybackview.hrh"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( 
+        QMPXVideoPlaybackControlsController* controller )
+    : mController( controller )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state );
+
+    mState = state;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::aspectRatioChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
+
+    mAspectRatio = aspectRatio;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()"));
+
+    mFileDetails = details;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::setVisibleToControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::setVisibleToControlBar( bool visible )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibleToControlBar()"));
+
+    mVisibility = visible;
+}
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::durationChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::durationChanged( int duration )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()"));
+
+    mDuration = duration;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::positionChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::positionChanged( int position )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()"));
+
+    mPosition = position;
+}
+
+//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  2 %
+// Version : %version:  3 %
 
 
 
@@ -23,7 +23,6 @@
 #include <coecntrl.h>
 #include <bautils.h>
 #include <barsread.h>
-#include <stringloader.h>
 #include <f32file.h>
 
 #include <qtimer>
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/stub/src/mpxvideoplaybackprogressbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +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: 2 %
-
-
-
-
-#include <qtime>
-#include <qgraphicsscenemouseevent>
-
-#include <hblabel.h>
-#include <hbprogressbar.h>
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackcontrolscontroller.h"
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar( 
-        QMPXVideoPlaybackControlsController* controller )
-    : mController( controller )
-    , mDuration( -1 )
-    , mNeedToResumeAfterSetPosition( false )
-    , mInitialized( false )
-    , mDragging( false )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::durationChanged
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackProgressBar::durationChanged( int duration )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::durationChanged duration = %d"), duration );
-    mDuration = duration;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::positionChanged
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackProgressBar::positionChanged( int position )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::positionChanged position = %d"), position );
-    mPosition = position;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::updateWithFileDetails()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackProgressBar::updateWithFileDetails(
-        QMPXVideoPlaybackViewFileDetails* details )
-{
-    Q_UNUSED( details );
-    MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateControlsWithFileDetails()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::updateState()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackProgressBar::updateState( TMPXPlaybackState state )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateState() state = %d"), state );
-}
-
-//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testfullscreencontrol/testfullscreencontrol.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building testfullscreencontrol
 #
 #
-# Version : %version: 1 %
+# Version : %version: 2 %
 
 
 TEMPLATE = app
@@ -39,8 +39,7 @@
            inc/testfullscreencontrol.h \            
            mpxvideoplaybackcontrolscontroller.h \
            mpxvideoplaybackviewfiledetails.h \
-           mpxvideoplaybackprogressbar.h \
-           mpxvideoplaybackbuttonbar.h \
+           mpxvideoplaybackcontrolbar.h \
            mpxvideoplaybackfiledetailswidget.h \
            mpxvideoplaybackdetailsplaybackwindow.h     
 					 
@@ -49,8 +48,7 @@
            src/testfullscreencontrol.cpp \
            mpxvideoplaybackcontrolscontroller.cpp \
            mpxvideoplaybackviewfiledetails.cpp \
-           mpxvideoplaybackprogressbar.cpp \
-           mpxvideoplaybackbuttonbar.cpp \
+           mpxvideoplaybackcontrolbar.cpp \
            mpxvideoplaybackfiledetailswidget.cpp \
            mpxvideoplaybackdetailsplaybackwindow.cpp                    
            				 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/inc/testmpxvideoplaybackcontrolbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,74 @@
+/**
+* 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:   tester for methods in TestMPXVideoPlaybackControlBar
+* 
+*/
+
+// Version : %version:  1 %
+
+#ifndef __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__
+#define __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__
+
+
+// INCLUDES
+#include <QtTest/QtTest>
+
+class QMPXVideoPlaybackControlBar;
+class QMPXVideoPlaybackControlsController;
+
+class TestMPXVideoPlaybackControlBar : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * will be called before each testfunction is executed.
+     *
+     */
+    void init(); 
+    
+    /**
+     * will be called after every testfunction.
+     *
+     */
+    void cleanup();
+
+    // test functions for the test framework         
+private slots:
+
+    // the order in which these testXX methods are declared is important
+    // changing this order will affect the test results
+    void testupdateState();
+    void testaspectRatioChanged();
+    void testUpdateWithFileDetails();
+    void testSetVisibleToControlBar();
+    void testDurationChanged();
+    void testPositionChanged();
+
+signals:
+    void commandSignal(int);
+
+private:
+    QMPXVideoPlaybackControlBar         *mControlBar;
+    QMPXVideoPlaybackControlsController *mController;
+};
+
+
+#endif  // __TESTMPXVIDEOPLAYBACKCONTROLBAR_H__
+
+// End of file
+    
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/src/testmpxvideoplaybackcontrolbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,215 @@
+/**
+* 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:   tester for methods in TestMPXVideoPlaybackControlBar
+* 
+*/
+
+// Version : %version:  1 %
+
+
+#include <qdebug>
+#include <hbmainwindow.h>
+#include <hbapplication.h>
+
+#include "mpxvideoplaybackbuttonbar.h"
+#include "mpxvideoplaybackprogressbar.h"
+#include "testmpxvideoplaybackcontrolbar.h"
+#include "mpxvideoplaybackviewfiledetails.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+#define private public
+#include "mpxvideoplaybackcontrolbar.h"
+#undef private
+
+// ---------------------------------------------------------------------------
+// main
+// ---------------------------------------------------------------------------
+//
+int main(int argc, char *argv[])
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::Main()"));
+
+    HbApplication app(argc, argv);
+    HbMainWindow window;
+
+    TestMPXVideoPlaybackControlBar tv;
+
+    char *pass[3];
+    pass[0] = argv[0];
+    pass[1] = "-o";
+    pass[2] = "c:\\data\\testmpxvideoplaybackcontrolbar.txt";
+    
+    int res = QTest::qExec(&tv, 3, pass);
+    
+    return res;
+}
+
+
+// ---------------------------------------------------------------------------
+// init
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::init()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::init()"));
+
+    mController = new QMPXVideoPlaybackControlsController();   
+    mControlBar = new QMPXVideoPlaybackControlBar( mController );
+
+    mControlBar->initialize();
+}
+
+// ---------------------------------------------------------------------------
+// cleanup
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::cleanup()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::cleanup()"));
+
+    if ( mController )
+    {
+        delete mController;
+        mController = NULL;
+    }
+
+    if ( mControlBar )
+    {
+        delete mControlBar;
+        mControlBar = NULL;
+    }
+}
+
+// ---------------------------------------------------------------------------
+// testupdateState
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testupdateState()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testupdateState()"));
+
+    init();
+
+    TMPXPlaybackState state = EPbStatePlaying;
+    mControlBar->updateState( state );
+    QVERIFY( mControlBar->mButtonBar->mState == EPbStatePlaying );
+
+    state = EPbStatePaused;
+    mControlBar->updateState( state );
+    QVERIFY( mControlBar->mButtonBar->mState == EPbStatePaused );
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testaspectRatioChanged
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testaspectRatioChanged()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testaspectRatioChanged()"));
+
+    init();
+
+    int aspectRatio = 1;
+    mControlBar->aspectRatioChanged( aspectRatio );
+    QVERIFY( mControlBar->mButtonBar->mAspectRatio == aspectRatio );
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testUpdateWithFileDetails
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testUpdateWithFileDetails()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testUpdateWithFileDetails()"));
+
+    init();
+
+    QMPXVideoPlaybackViewFileDetails *details = mController->fileDetails();
+    details->mSeekable = false;
+    details->mVideoEnabled = true;
+
+    mControlBar->updateWithFileDetails( details );
+
+    QVERIFY( mControlBar->mButtonBar->mFileDetails->mSeekable == details->mSeekable );
+    QVERIFY( mControlBar->mProgressBar->mFileDetails->mVideoEnabled == details->mVideoEnabled );
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testSetVisibleToControlBar
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testSetVisibleToControlBar()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testSetVisibleToControlBar()"));
+
+    init();
+
+    //
+    // Make visible
+    //
+    mControlBar->setVisible( false );
+    mControlBar->setVisibleToControlBar( true );
+    QVERIFY( mControlBar->isVisible() == true );
+
+    //
+    // Make invisible
+    //
+    mControlBar->setVisible( true );
+    mControlBar->setVisibleToControlBar( false );
+    QVERIFY( mControlBar->isVisible() == false );
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testDurationChanged
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testDurationChanged()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testDurationChanged()"));
+
+    init();
+
+    int duration = 12345;
+    mControlBar->durationChanged( duration );
+    QVERIFY( mControlBar->mProgressBar->mDuration == duration );
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testPositionChanged
+// ---------------------------------------------------------------------------
+//
+void TestMPXVideoPlaybackControlBar::testPositionChanged()
+{
+    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackControlBar::testPositionChanged()"));
+
+    init();
+
+    int position = 54321;
+    mControlBar->positionChanged( position );
+    QVERIFY( mControlBar->mProgressBar->mPosition == position );
+
+    cleanup();
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackbuttonbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* 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 QMPXVideoPlaybackButtonBar
+*
+*/
+
+// Version : %version:  1 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_
+#define MPXVIDEOPLAYBACKBUTTONBAR_H_
+
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+
+class QMPXVideoPlaybackButtonBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackButtonBar();
+        void updateState( TMPXPlaybackState state );
+        void aspectRatioChanged( int aspectRatio );
+        void initialize();
+        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+
+    public:
+        QMPXVideoPlaybackControlsController *mController;
+        QMPXVideoPlaybackViewFileDetails *mFileDetails;
+        int mAspectRatio;
+        TMPXPlaybackState mState;
+};
+
+#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* 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 MPXVideoPlaybackControlsController
+*
+*/
+
+// Version : %version:   1 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+
+// INCLUDES
+#include <qobject>
+#include <mpxplaybackframeworkdefs.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxcommonvideoplaybackview.hrh"
+#include "mpxvideoplaybackviewfiledetails.h"
+
+// FORWARD DECLARATIONS
+class QMPXVideoPlaybackDocumentLoader;
+class QMPXVideoPlaybackControlsController ;
+
+// DATA TYPES
+
+enum TMPXTimerAction
+{
+    EMPXTimerCancel,
+    EMPXTimerReset
+};
+
+enum TPlaybackViewMode
+{
+    EFullScreenView,
+    EDetailsView,
+    EAudioOnlyView
+};
+
+// CLASS DECLARATION
+
+class QMPXVideoPlaybackControlsController : public QObject
+{
+    Q_OBJECT
+
+    public:
+
+        /**
+        * constructor.
+        */
+        QMPXVideoPlaybackControlsController();
+
+        /**
+        * Destructor.
+        */
+        virtual ~QMPXVideoPlaybackControlsController();
+
+    public:
+
+        /**
+        * Command handling function.
+        * Call HandleCommandL() of container
+        */
+        void handleCommand( TMPXVideoPlaybackViewCommandIds command, int value = 0 );
+
+        /**
+        * Reset or cancel timers for the controls
+        */
+        void resetDisappearingTimers( TMPXTimerAction timerAction );
+
+        /**
+        * Return state
+        */
+        inline TMPXPlaybackState state();
+
+        /**
+        * Return file details
+        */
+        inline QMPXVideoPlaybackViewFileDetails* fileDetails();
+
+        inline QMPXVideoPlaybackDocumentLoader* layoutLoader();
+
+        TPlaybackViewMode viewMode();
+
+        void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true );
+
+    public:
+        QMPXVideoPlaybackViewFileDetails          *mFileDetails;
+        QMPXVideoPlaybackDocumentLoader           *mLoader;
+
+        TMPXPlaybackState                          mState;
+        TPlaybackViewMode                          mViewMode;
+        TMPXTimerAction                            mTimerAction;
+        TMPXVideoPlaybackViewCommandIds            mCommand;
+        int                                        mCommandValue;
+};
+
+// INLINE METHODS
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::state
+// -------------------------------------------------------------------------------------------------
+//
+inline
+TMPXPlaybackState QMPXVideoPlaybackControlsController::state()
+{
+    return mState;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::fileDetails
+// -------------------------------------------------------------------------------------------------
+//
+inline
+QMPXVideoPlaybackViewFileDetails* QMPXVideoPlaybackControlsController::fileDetails()
+{
+    return mFileDetails;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::layoutLoader
+// -------------------------------------------------------------------------------------------------
+//
+inline
+QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader()
+{
+    return mLoader;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::viewMode
+// -------------------------------------------------------------------------------------------------
+//
+inline
+TPlaybackViewMode QMPXVideoPlaybackControlsController::viewMode()
+{
+    return mViewMode;
+}
+
+#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackdocumentloader.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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_*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackprogressbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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 <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackProgressBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackProgressBar();
+        void initialize();
+        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+        void updateState( TMPXPlaybackState state );
+
+    public:
+        void durationChanged( int duration );
+        void positionChanged( int position );
+
+    public:
+        QMPXVideoPlaybackControlsController *mController;
+        QMPXVideoPlaybackViewFileDetails *mFileDetails;
+        TMPXPlaybackState mState;
+        int mDuration;
+        int mPosition;
+};
+
+#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/inc/mpxvideoplaybackviewfiledetails.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* 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:  MPX Video File Details (QT)
+*
+*/
+
+// Version : %version:   1 %
+
+
+
+
+#ifndef __MPXVIDEOPLAYBACKVIEWFILEDETAILS__
+#define __MPXVIDEOPLAYBACKVIEWFILEDETAILS__
+
+#include <qobject.h>
+#include "mpxhelixplaybackplugindefs.h"
+
+
+// 
+//  CLASS DECLARATION
+//
+class QMPXVideoPlaybackViewFileDetails : public QObject
+{
+    public:  
+        //
+        //  Constructor
+        //
+        QMPXVideoPlaybackViewFileDetails();
+        
+        //
+        //  Destructor.
+        //
+        virtual ~QMPXVideoPlaybackViewFileDetails();
+        
+        //
+        //  Clear all file details
+        //
+        void clearFileDetails();
+
+    public:    
+        //
+        // Data
+        //
+        QString   mClipName;
+        QString   mTitle;
+        QString   mArtist;
+        QString   mMimeType;
+        QString   mDescription;
+        QString   mLocation;
+        QString   mCopyright;
+        QString   mLanguage;
+        QString   mKeywords;        
+
+        TMPXVideoMode mPlaybackMode;
+        bool          mSeekable;
+        bool          mPausableStream;
+        bool          mAudioEnabled;
+        bool          mVideoEnabled;
+        bool          mPartialPlayback;
+        bool          mRNFormat;
+        bool          mTvOutConnected;
+        bool          mTvOutPlayAllowed;
+        bool          mDrmProtected;
+        bool          mMultiItemPlaylist;
+
+        int           mVideoHeight;
+        int           mVideoWidth;
+        int           mBitRate;
+        int           mDuration;
+};
+
+#endif      // __MPXVIDEOPLAYBACKVIEWFILEDETAILS__  
+            
+// EOF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackbuttonbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* 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 QMPXVideoPlaybackButtonBar
+*
+*/
+
+// Version : %version: 1 %
+
+
+
+#include <hbpushbutton.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackbuttonbar.h"
+#include "mpxvideoplaybackviewfiledetails.h"
+#include "mpxcommonvideoplaybackview.hrh"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( 
+        QMPXVideoPlaybackControlsController* controller )
+    : mController( controller )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::initialize()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::initialize()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::initialize()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::updateState( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateState() state = %d"), state );
+
+    mState = state;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::aspectRatioChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::aspectRatioChanged( int aspectRatio )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
+
+    mAspectRatio = aspectRatio;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::updateWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::updateWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateWithFileDetails()"));
+
+    mFileDetails = details;
+}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* 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 MPXVideoPlaybackControlsController
+*
+*/
+
+// Version : %version:  1 %
+
+
+
+// INCLUDE FILES
+
+
+#include "mpxvideoplaybackdocumentloader.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+// ================= MEMBER FUNCTIONS ==============================================================
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController()
+    : mViewMode( EFullScreenView )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController()"));
+
+    mLoader = new QMPXVideoPlaybackDocumentLoader( this );
+    mFileDetails = new QMPXVideoPlaybackViewFileDetails();
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController"));
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::handleCommand()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlsController::handleCommand( 
+        TMPXVideoPlaybackViewCommandIds command, int value )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::handleCommand(%d)"), command);
+
+    mCommand = command;
+    mCommandValue = value;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMPXVideoPlaybackControlsController::changeViewMode
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlsController::changeViewMode( 
+        TPlaybackViewMode viewMode, bool transitionEffect )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::changeViewMode()"));
+
+    Q_UNUSED( transitionEffect );
+    mViewMode = viewMode;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlsController::resetDisappearingTimers()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlsController::resetDisappearingTimers( TMPXTimerAction timerAction )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::resetDisappearingTimers()"));
+
+    mTimerAction = timerAction;
+}
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* 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 %
+
+
+
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackbuttonbar.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 == "buttonBarLayout" )
+    {
+        object = new QMPXVideoPlaybackButtonBar( mController );
+        object->setObjectName( name );
+        mWidgets.append( object );
+    }
+    else 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackprogressbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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 )
+    , mDuration( -1 )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::QMPXVideoPlaybackProgressBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::~QMPXVideoPlaybackProgressBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::initialize
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackProgressBar::initialize()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::initialize()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::durationChanged
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackProgressBar::durationChanged( int duration )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::durationChanged duration = %d"), duration );
+
+    mDuration = duration;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::positionChanged
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackProgressBar::positionChanged( int position )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::positionChanged position = %d"), position );
+
+    mPosition = position;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::updateWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackProgressBar::updateWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateControlsWithFileDetails()"));
+
+    mFileDetails = details;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackProgressBar::updateState( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackProgressBar::updateState() state = %d"), state );
+
+    mState = state;
+}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/stub/src/mpxvideoplaybackviewfiledetails.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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:  class for MPX Video File Details (Qt)
+*
+*/
+
+// Version : %version:   1 %
+
+
+
+//
+//  INCLUDE FILES
+//
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackviewfiledetails.h"
+
+
+// ============================ MEMBER FUNCTIONS ===================================================
+
+QMPXVideoPlaybackViewFileDetails::QMPXVideoPlaybackViewFileDetails()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::QMPXVideoPlaybackViewFileDetails()"));
+
+    clearFileDetails();
+}
+
+QMPXVideoPlaybackViewFileDetails::~QMPXVideoPlaybackViewFileDetails()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::~QMPXVideoPlaybackViewFileDetails()"));
+
+    clearFileDetails();
+}
+
+void
+QMPXVideoPlaybackViewFileDetails::clearFileDetails()
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackViewFileDetails::ClearFileDetails()"));
+
+    mMimeType = tr("");  
+    mTitle = tr("");
+    mArtist = tr("");
+    mClipName = tr("");
+    mDescription = tr("");  
+    mLocation = tr("");
+    mCopyright = tr("");
+    mLanguage = tr("");
+    mKeywords = tr("");
+    
+    mPlaybackMode = EMPXVideoLocal;
+    mSeekable = false;
+    mPausableStream = false;
+    mAudioEnabled = false;
+    mVideoEnabled = false;
+    mPartialPlayback = false;
+    mRNFormat = false;
+
+    mDuration = 0;
+    mTvOutConnected   = false;
+    mTvOutPlayAllowed = true;
+    mDrmProtected = false;
+
+    mVideoHeight = 0;
+    mVideoWidth  = 0;
+    mBitRate = 0;
+}
+
+//  EOF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolbar/testmpxvideoplaybackcontrolbar.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,45 @@
+#
+# 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: Project file for building testmpxvideoplaybackcontrolbar
+#
+#
+# Version : %version:   1 %
+
+TEMPLATE = app
+TARGET = testmpxvideoplaybackcontrolbar
+CONFIG += qtestlib qt hb
+
+INCLUDEPATH += stub/inc \
+               ../../../../inc \
+               ../../../inc
+
+
+DEPENDPATH += inc src stub/inc stub/src
+                
+# Input
+HEADERS += testmpxvideoplaybackcontrolbar.h \
+           mpxvideoplaybackcontrolscontroller.h \
+           mpxvideoplaybackdocumentloader.h \
+           mpxvideoplaybackviewfiledetails.h \
+           mpxvideoplaybackprogressbar.h \
+           mpxvideoplaybackbuttonbar.h \
+           ../../controlinc/mpxvideoplaybackcontrolbar.h
+  
+SOURCES += testmpxvideoplaybackcontrolbar.cpp \
+           mpxvideoplaybackcontrolscontroller.cpp \
+           mpxvideoplaybackdocumentloader.cpp \
+           mpxvideoplaybackviewfiledetails.cpp \
+           mpxvideoplaybackprogressbar.cpp \
+           mpxvideoplaybackbuttonbar.cpp \
+           ../../controlsrc/mpxvideoplaybackcontrolbar.cpp
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackcontrolpolicy/src/testmpxvideoplaybackcontrolpolicy.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 #include <qdebug>
@@ -142,13 +142,13 @@
 
     TUint properties = 0;
 
-    mPolicy->setControlProperties( EMPXButtonBar, properties, mDetails, EDetailsView );
+    mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EDetailsView );
     QVERIFY( properties == 0 );
 
-    mPolicy->setControlProperties( EMPXProgressBar, properties, mDetails, EAudioOnlyView );
+    mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EAudioOnlyView );
     QVERIFY( properties == EMPXAllProperties );
 
-    mPolicy->setControlProperties( EMPXButtonBar, properties, mDetails, EFullScreenView );
+    mPolicy->setControlProperties( EMPXControlBar, properties, mDetails, EFullScreenView );
     QVERIFY( properties == ( EMPXShownWhenPlaying | EMPXShownWhenPaused | EMPXShownWhenSeeking ) );
 
     cleanup();
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/src/testmpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 #include <qdebug>
@@ -99,7 +99,10 @@
 
     init();
 
-    QObject *object = mLoader->createObject( "", "buttonBarLayout" );
+    QObject *object = mLoader->createObject( "", "controlBarLayout" );
+    QVERIFY( object->objectName() == "controlBarLayout" );
+
+    object = mLoader->createObject( "", "buttonBarLayout" );
     QVERIFY( object->objectName() == "buttonBarLayout" );
 
     object = mLoader->createObject( "", "progressBarLayout" );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/inc/mpxvideoplaybackcontrolbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version: 1 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_
+#define MPXVIDEOPLAYBACKCONTROLBAR_H_
+
+
+
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackControlBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackControlBar();
+        void updateState( TMPXPlaybackState state );
+        void aspectRatioChanged( int aspectRatio );
+        void updateWithFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+        void setVisibility( bool visible );
+        void durationChanged( int duration );
+        void positionChanged( int position );
+
+    public:
+        QMPXVideoPlaybackControlsController *mController;
+        int  mPosition;
+        int  mDuration;
+        int  mAspectRatio;
+        bool mVisibility;
+        TMPXPlaybackState mState;
+        QMPXVideoPlaybackViewFileDetails *mFileDetails;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/stub/src/mpxvideoplaybackcontrolbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version:  1 %
+
+
+
+#include <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolbar.h"
+#include "mpxcommonvideoplaybackview.hrh"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( 
+        QMPXVideoPlaybackControlsController* controller )
+    : mController( controller )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateState()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateState( TMPXPlaybackState state )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateState() state = %d"), state );
+
+    mState = state;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::aspectRatioChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::aspectRatioChanged( int aspectRatio )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
+
+    mAspectRatio = aspectRatio;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::updateWithFileDetails()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::updateWithFileDetails(
+        QMPXVideoPlaybackViewFileDetails* details )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::updateWithFileDetails()"));
+
+    mFileDetails = details;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::setVisibility()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::setVisibility( bool visible )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::setVisibility()"));
+
+    mVisibility = visible;
+}
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::durationChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::durationChanged( int duration )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::durationChanged()"));
+
+    mDuration = duration;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::positionChanged()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::positionChanged( int position )
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::positionChanged()"));
+
+    mPosition = position;
+}
+
+//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackdocumentloader/testmpxvideoplaybackdocumentloader.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building testmpxvideoplaybackdocumentloader
 #
 #
-# Version : %version:  1 %
+# Version : %version:  2 %
 
 TEMPLATE = app
 TARGET = testmpxvideoplaybackdocumentloader
@@ -34,6 +34,7 @@
            mpxvideoplaybackdetailsplaybackwindow.h \
            mpxvideoplaybackprogressbar.h \
            mpxvideoplaybackbuttonbar.h \
+           mpxvideoplaybackcontrolbar.h \
            mpxvideoplaybacknontouchvolumebar.h \
            ../../controlinc/mpxvideoplaybackdocumentloader.h
   
@@ -43,5 +44,6 @@
            mpxvideoplaybackdetailsplaybackwindow.cpp \
            mpxvideoplaybackprogressbar.cpp \
            mpxvideoplaybackbuttonbar.cpp \
+           mpxvideoplaybackcontrolbar.cpp \
            mpxvideoplaybacknontouchvolumebar.cpp \
            ../../controlsrc/mpxvideoplaybackdocumentloader.cpp
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackfiledetailswidget/src/testmpxvideoplaybackfiledetailswidget.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 #include <qdebug>
@@ -32,7 +32,7 @@
 #include "mpxvideoplaybackfiledetailswidget.h"
 #undef private
 
-const QString KFILEPATH = "C:\\data\\qvptestconf.txt";
+const QString KFILEPATH = "C:\\sample1.wav";
 
 
 // ---------------------------------------------------------------------------
@@ -122,7 +122,7 @@
     details->mClipName = KFILEPATH;
 
     mWidget->updateWithFileDetails( details );
-    verifyResult( "Title", true, "qvptestconf" );
+    verifyResult( "Title", true, "sample1" );
 
     mWidget->mListWidget->clear();
     mWidget->mFileDetailsUpdated = false;
@@ -485,7 +485,7 @@
 
     mWidget->updateWithFileDetails( details );
 
-    verifyResult( "Collection", true, "", false );
+    verifyResult( "Collection", false );
 
     cleanup();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/hbvideobaseplaybackview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* 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:  HB Video playback view
+*
+*/
+
+// Version : %version:  3 %
+
+
+
+// This file defines the API for .dll
+
+#ifndef __HBVIDEOBASEPLAYBACKVIEW_H__
+#define __HBVIDEOBASEPLAYBACKVIEW_H__
+
+//  Include Files
+#include <hbview.h>
+
+class CMPXVideoViewWrapper;
+class RWindow;
+
+//  Constants
+
+//  Forward Declarations
+
+//  Class Definitions
+
+class HbVideoBasePlaybackView : public HbView
+{
+    Q_OBJECT
+
+    public:
+        HbVideoBasePlaybackView();
+        virtual ~HbVideoBasePlaybackView();
+
+        void handleActivateView(); 
+        
+        void handleDeactivateView();
+        
+        void mousePressEvent( QGraphicsSceneMouseEvent *event );
+        
+        QVariant itemChange( GraphicsItemChange change, const QVariant &value );
+        
+        void paint( QPainter *painter, 
+                    const QStyleOptionGraphicsItem *option,
+                    QWidget *widget );
+        
+        bool event( QEvent *event );
+        
+        virtual void handleClosePlaybackView();
+        
+        virtual void handleBufferingState();
+
+        virtual void issuePlayCommand();                
+
+        virtual void handlePluginError( int aError );                
+        
+        virtual void retrievePdlInformation();
+        
+        virtual void closePlaybackView();
+        
+        void startClosingPlaybackView();
+        
+        RWindow *getWindow();
+        
+        virtual void doClosePlayer();
+
+    signals:
+        void tappedOnScreen();
+
+    public slots:
+        void handleClosePopupDialog();
+
+    public:
+        int mCurrentError;   // default = KErrNone 
+        bool mViewActive;
+        
+        
+    public:
+        friend class CMPXVideoViewWrapper;
+                				
+};
+
+#endif  // __HBVIDEOBASEPLAYBACKVIEW_H__
+
+// EOF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* 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:  Implementation of MPXVideoPlaybackControlsController
+*
+*/
+
+// Version : %version: 4 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+
+// INCLUDES
+#include <qobject>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrol.hrh"
+
+// FORWARD DECLARATIONS
+class CMPXVideoViewWrapper;
+class HbVideoBasePlaybackView;
+class QMPXVideoPlaybackControlsController;
+class QMPXVideoPlaybackViewFileDetails;
+
+// CLASS DECLARATION
+
+class QMPXVideoPlaybackControlsController : public QObject
+{
+    Q_OBJECT
+
+    public:
+
+        /**
+        * constructor.
+        */
+        QMPXVideoPlaybackControlsController(
+                HbVideoBasePlaybackView *view,
+                CMPXVideoViewWrapper *viewWrapper,
+                QMPXVideoPlaybackViewFileDetails *details );
+
+        /**
+        * Destructor.
+        */
+        virtual ~QMPXVideoPlaybackControlsController();
+
+    public:
+
+        //
+        //  Handle event from container
+        //
+        void handleEvent( TMPXVideoPlaybackControlCommandIds event, int value = 0 );
+
+        //
+        //  Add the file details to the controls controller when available
+        //
+        void addFileDetails( QMPXVideoPlaybackViewFileDetails* details );
+
+        //
+        //  updateVideoRectDone
+        //
+        void updateVideoRectDone();
+
+    public:
+    	
+        /**
+        * Initialize controller
+        */
+        void initializeController();
+
+        /**
+        * Handle tvout connected/disconnected event
+        */
+        void handleTvOutEvent( bool connected, 
+		                           TMPXVideoPlaybackControlCommandIds event,
+		                           int value );
+
+    private slots:
+        void hideAllControls();
+        void skipToNextVideoItem();
+        void skipToPreviousVideoItem();
+        void handleTappedOnScreen();
+
+    public:
+        HbVideoBasePlaybackView                   *mView;
+        CMPXVideoViewWrapper                      *mViewWrapper;
+        QMPXVideoPlaybackViewFileDetails          *mFileDetails;
+
+        bool                                       mViewTransitionIsGoingOn;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/
+
+// End of File
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/hbvideobaseplaybackview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  4 %
+// Version : %version:  5 %
 
 
 
@@ -190,5 +190,12 @@
     return static_cast<RWindow*>( hbInstance->allMainWindows()[0]->effectiveWinId()->DrawableWindow() );
 }
 
+// -------------------------------------------------------------------------------------------------
+//   HbVideoBasePlaybackView::handleClosePopupDialog()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoBasePlaybackView::handleClosePopupDialog()
+{
+}
 
 // EOF
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,36 +15,16 @@
 *
 */
 
-// Version : %version: 4 %
+// Version : %version: 5 %
 
 
 
 // INCLUDE FILES
-#include <coecntrl.h>
-#include <bautils.h>
-#include <barsread.h>
-#include <stringloader.h>
-#include <f32file.h>
-
-#include <qtimer>
-
-#include <hblabel.h>
-#include <hbaction.h>
-#include <hbiconanimator.h>
 
 #include "mpxvideoviewwrapper.h"
 #include "hbvideobaseplaybackview.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackcontrolpolicy.h"
-#include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackviewfiledetails.h"
-#include "mpxvideoplaybackstatuspanecontrol.h"
-#include "mpxvideoplaybackfiledetailswidget.h"
-#include "mpxvideoplaybacknontouchvolumebar.h"
-#include "mpxvideoplaybackfullscreencontrol.h"
 #include "../inc/mpxvideoplaybackcontrolscontroller.h"
-#include "mpxvideoplaybackcontrolconfiguration.h"
 
 
 // ================= MEMBER FUNCTIONS ==============================================================
@@ -70,9 +50,6 @@
 //
 void QMPXVideoPlaybackControlsController::initializeController()
 {
-
-    //createControls();
-
     connect( mView, SIGNAL( tappedOnScreen() ), this, SLOT( handleTappedOnScreen() ) );
 }
 
@@ -141,42 +118,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::handleStateChange
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleStateChange( TMPXPlaybackState newState )
-{
-    Q_UNUSED( newState );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::controlsListUpdated()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::controlsListUpdated()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::appendControl()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::appendControl( TMPXVideoPlaybackControls controlIndex )
-{
-    Q_UNUSED( controlIndex );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::resetDisappearingTimers()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::resetDisappearingTimers( TMPXTimerAction timerAction )
-{
-    Q_UNUSED( timerAction );
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::hideAllControls()
 // -------------------------------------------------------------------------------------------------
 //
@@ -186,147 +127,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::showControls()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::showControls()
-{
-        
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isVisible()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::isVisible()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::handleCommand()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleCommand( 
-        TMPXVideoPlaybackViewCommandIds command, int value )
-{
-    Q_UNUSED( command );
-    Q_UNUSED( value );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::volumeChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::volumeChanged( int volume )
-{
-    Q_UNUSED( volume );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::showVolumeControls()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::showVolumeControls()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::durationChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::durationChanged( int duration )
-{
-    Q_UNUSED( duration );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::positionChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::positionChanged( int position )
-{
-    Q_UNUSED( position );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::aspectRatioChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::aspectRatioChanged( int aspectRatio )
-{
-    Q_UNUSED( aspectRatio );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormat()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormat( QString filename )
-{
-    Q_UNUSED( filename );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormatForStreaming()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormatForStreaming( const TDesC& des )
-{
-    Q_UNUSED( des );
-    bool realFormat = false;
-    return realFormat;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormatForLocal()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormatForLocal()
-{
-    bool realFormat = false;
-    
-    return realFormat;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::setDownloadSize()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::setDownloadSize( int size )
-{
-    Q_UNUSED( size );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::updateDownloadPosition()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::updateDownloadPosition( int size )
-{
-    Q_UNUSED( size );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::handleErrors
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleErrors()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isSoftKeyVisible()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::isSoftKeyVisible( int /*value*/ )
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::handleTvOutEvent
 // -------------------------------------------------------------------------------------------------
 //
@@ -367,21 +167,13 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::updateVideoRect()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::updateVideoRect( bool transitionEffect )
-{
-    Q_UNUSED( transitionEffect );
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::handleTappedOnScreen()
 // -------------------------------------------------------------------------------------------------
 //
+
 void QMPXVideoPlaybackControlsController::handleTappedOnScreen()
 {
-
 }
 
+
 // End of File
--- a/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testmpxvideoviewwrapper/stub/src/mpxvideoplaybackuserinputhandler.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 4 %
+// Version : %version: 5 %
 
 
 // INCLUDE FILES
@@ -23,7 +23,6 @@
 #include <e32std.h>
 #include <w32std.h> // RWindowBase
 #include <e32base.h>
-#include <aknutils.h>
 #include <eikclbd.h>
 #include <aknconsts.h>
 #include <remconcoreapi.h>
@@ -35,7 +34,7 @@
 #include <hwrmlightdomaincrkeys.h>
 #include <mpxvideoplaybackdefs.h>
 
-#include <HAL.h>
+#include <hal.h>
 #include <hal_data.h>
 
 #include "mpxvideo_debug.h"
--- a/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/inc/mpxvideoplaybackfullscreencontrol.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +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 QMPXVideoPlaybackFullScreenControl
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-#ifndef MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_
-#define MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_
-
-#include <qobject>
-
-#include <mpxvideoplaybackcontrol.hrh>
-#include <mpxplaybackframeworkdefs.h>
-
-class HbWidget;
-class QMPXVideoPlaybackViewFileDetails;
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackFullScreenControl : public QObject
-{
-    Q_OBJECT
-
-    public:
-        QMPXVideoPlaybackFullScreenControl( QMPXVideoPlaybackControlsController* controller, 
-                                            TMPXVideoPlaybackControls index,
-                                            HbWidget* widget, 
-                                            TUint controlproperties );
-
-        virtual ~QMPXVideoPlaybackFullScreenControl();
-
-    public:
-
-        /**
-        * Set visibility of each control
-        */
-        virtual void setVisibility( TMPXPlaybackState aState );
-        
-        /**
-        * return control index
-        */
-        TMPXVideoPlaybackControls controlIndex();
-
-        /**
-        * set changed volume
-        */
-        bool volumeChanged( int aVolume );
-
-        /**
-        * set changed duration
-        */
-        bool durationChanged( int duration );
-
-        /**
-        * set changed volume
-        */
-        bool positionChanged( int position );
-
-        /**
-        * Set changed position
-        */
-        bool aspectRatioChanged( int aspectRatio );
-
-        /**
-        * set changed state
-        */
-        void updateState( TMPXPlaybackState state );
-        
-        /*
-         *  Update the controls with the file details
-         */
-        virtual void updateControlsWithFileDetails( QMPXVideoPlaybackViewFileDetails *details );
-
-        virtual void setVisible( bool visible );
-
-        virtual bool isVisible();
-
-        virtual void updateControlProperties( TUint properties );
-
-    protected:
-        QMPXVideoPlaybackControlsController* mController;
-        HbWidget                 *mControl;
-        TMPXVideoPlaybackControls mControlIndex;
-        TUint                     mProperties;
-        bool                      mVisible;
-};
-
-#endif /*MPXVIDEOPLAYBACKFULLSCREENCONTROL_H_*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testprogressbar/stub/src/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +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 QMPXVideoPlaybackFullScreenControl
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-#include <w32std.h>
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
-#include "mpxvideoplaybackfullscreencontrol.h"
-#include "mpxvideoplaybackfiledetailswidget.h"
-#include "mpxvideoplaybackcontrolscontroller.h"
-#include "mpxvideoplaybackdetailsplaybackwindow.h"
-
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl( 
-        QMPXVideoPlaybackControlsController* controller, 
-        TMPXVideoPlaybackControls index, 
-        HbWidget* widget, 
-        TUint controlproperties )
-    : mController( controller )
-    , mControl( widget )
-    , mControlIndex( index )
-    , mProperties( controlproperties )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFullScreenControl::QMPXVideoPlaybackFullScreenControl()"));
-
-    setParent( mController );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackFullScreenControl::~QMPXVideoPlaybackFullScreenControl()
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackFullScreenControl"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::setVisible()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackFullScreenControl::setVisible( bool visible )
-{
-    mControl->setVisible( visible );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::isVisible()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::isVisible()
-{
-    return mVisible;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::setVisibility()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackFullScreenControl::setVisibility( TMPXPlaybackState /*state*/ )
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::setVisibility()"));
-   
-    mVisible = true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::controlIndex()
-// -------------------------------------------------------------------------------------------------
-//
-TMPXVideoPlaybackControls QMPXVideoPlaybackFullScreenControl::controlIndex()
-{
-    return mControlIndex;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::volumeChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int /*volume*/ )
-{
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::durationChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXProgressBar )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration);
-
-        static_cast<QMPXVideoPlaybackProgressBar*>(mControl)->durationChanged( duration );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::positionChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXProgressBar )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position);
-
-        static_cast<QMPXVideoPlaybackProgressBar*>(mControl)->positionChanged( position );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXButtonBar )
-    {
-        MPX_DEBUG(
-            _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio);
-
-        static_cast<QMPXVideoPlaybackButtonBar*>(mControl)->aspectRatioChanged( aspectRatio );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::updateState()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackFullScreenControl::updateState( TMPXPlaybackState state )
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackFullScreenControl::updateControlsWithFileDetails(
-        QMPXVideoPlaybackViewFileDetails* details )
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::updateControlProperties()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackFullScreenControl::updateControlProperties( TUint properties )
-{
-    mProperties = properties;
-}
-
-// End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/inc/teststatuspanecontrol.h	Thu Apr 01 23:32:44 2010 +0300
@@ -26,7 +26,6 @@
 #include <QtTest/QtTest>
 
 class HbVideoBasePlaybackView;
-class CMPXVideoViewWrapper;
 class QMPXVideoPlaybackViewFileDetails;
 class QMPXVideoPlaybackControlsController;
 class QMPXVideoPlaybackStatusPaneControl;
@@ -57,29 +56,23 @@
     void setup();
          
 private slots:
+    void testSetVisible();
+    void testSetMenu();
+    void testUpdateControlsWithFileDetails();
+    void testSetVisibility();
+    void testControlListUpdated();
+    void testSlot_handleAboutToShow();
+    void testSlot_handleAboutToHide();
+    void testSlot_openFullScreenView();
 
-      void testSetVisible();
-	  void testSetMenu();
-	  void testUpdateControlsWithFileDetails();
-	  void testSetVisibility();
-	  void testControlListUpdated();
-	  void testSlot_handleAboutToShow();
-	  void testSlot_handleAboutToHide();
-	  void testSlot_openFullScreenView();
-	  	
-	  
-    
 signals:
-
     void commandSignal();
     
 private:
-	  HbVideoBasePlaybackView*                 mBaseVideoView;
-	  CMPXVideoViewWrapper*                    mVideoViewWrapper;
-	  QMPXVideoPlaybackViewFileDetails*        mFileDetails;
-	  QMPXVideoPlaybackControlsController*     mControlsController;
-	  QMPXVideoPlaybackStatusPaneControl*      mStatusPane;
- 
+    HbVideoBasePlaybackView*                 mBaseVideoView;
+    QMPXVideoPlaybackViewFileDetails*        mFileDetails;
+    QMPXVideoPlaybackControlsController*     mControlsController;
+    QMPXVideoPlaybackStatusPaneControl*      mStatusPane;
 };
 
 
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/src/teststatuspanecontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version:  3 %
+// Version : %version:  4 %
 
 
 #include <hbapplication.h>
@@ -32,7 +32,6 @@
 #include "mpxvideoplaybackviewfiledetails.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
 #include "hbvideobaseplaybackview.h"
-#include "mpxvideoviewwrapper.h"
 #include "mpxvideoplaybackdocumentloader.h"
 #include "hblabel.h"
 
@@ -84,12 +83,10 @@
     MPX_ENTER_EXIT(_L("TestStatusPaneControl::setup()"));
 
     mBaseVideoView    = new HbVideoBasePlaybackView();
-    TRAPD( err, mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView ) ); 
         
     mFileDetails = new QMPXVideoPlaybackViewFileDetails();  
     
     mControlsController = new QMPXVideoPlaybackControlsController( mBaseVideoView, 
-                                                                   mVideoViewWrapper, 
                                                                    mFileDetails );
                                                                             
     mStatusPane = new QMPXVideoPlaybackStatusPaneControl( mControlsController, 
@@ -112,12 +109,6 @@
         delete mBaseVideoView;
         mBaseVideoView = NULL;    
     }
-        
-    if ( mVideoViewWrapper )
-    {
-        delete mVideoViewWrapper;
-        mVideoViewWrapper = NULL;    
-    }
     
     if ( mFileDetails )
     {
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/hbvideobaseplaybackview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:   2 %
+// Version : %version:   3 %
 
 
 
@@ -27,8 +27,6 @@
 //  Include Files
 #include <hbview.h>
 
-class CMPXVideoViewWrapper;
-class RWindow;
 
 //  Constants
 
@@ -48,25 +46,7 @@
         
         void handleDeactivateView();
         
-        void mousePressEvent( QGraphicsSceneMouseEvent *event );
-        
-        QVariant itemChange( GraphicsItemChange change, const QVariant &value );
-        
-        void paint( QPainter *painter, 
-                    const QStyleOptionGraphicsItem *option,
-                    QWidget *widget );
-        
-        bool event( QEvent *event );
-        
-        virtual void handleClosePlaybackView();
-        
-        virtual void handleBufferingState();
-
-        virtual void issuePlayCommand();                
-
-        virtual void handlePluginError( int aError );                
-        
-        virtual void retrievePdlInformation();
+        virtual void handleClosePlaybackView();   
         
         virtual void closePlaybackView();
         
@@ -77,13 +57,9 @@
         void setTitleBarFlags( HbTitleBarFlags flags );
 
     public:
-        int mCurrentError;   // default = KErrNone 
         bool mViewActive;
         HbTitleBarFlags mTitleFlag;
-        
-    public:
-        friend class CMPXVideoViewWrapper;
-                				
+        				
 };
 
 #endif  // __HBVIDEOBASEPLAYBACKVIEW_H__
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackcontrolscontroller.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
@@ -33,19 +33,10 @@
 #include "mpxvideoplaybackviewfiledetails.h"
 
 // FORWARD DECLARATIONS
-class QTimer;
-class QString;
-class HbAction;
-class QActionGroup;
-class CMPXVideoViewWrapper;
 class HbVideoBasePlaybackView;
-class QMPXVideoPlaybackControlPolicy;
-class QMPXVideoPlaybackControlsLayout;
 class QMPXVideoPlaybackDocumentLoader;
 class QMPXVideoPlaybackFullScreenControl;
-class QMPXVideoPlaybackNonTouchVolumeBar;
 class QMPXVideoPlaybackControlsController;
-class QMPXVideoPlaybackControlConfiguration;
 
 
 // DATA TYPES
@@ -63,8 +54,6 @@
     EAudioOnlyView
 };
 
-const int KMPXControlsTimeOut = 4000;
-
 
 // CLASS DECLARATION
 
@@ -79,7 +68,6 @@
         */
         QMPXVideoPlaybackControlsController(
                 HbVideoBasePlaybackView *view,
-                CMPXVideoViewWrapper *viewWrapper,
                 QMPXVideoPlaybackViewFileDetails *details );
 
         /**
@@ -88,34 +76,12 @@
         virtual ~QMPXVideoPlaybackControlsController();
 
     public:
-
-        /**
-        * Handle event from container
-        */
-        void handleEvent( TMPXVideoPlaybackControlCommandIds event, int value = 0 );
-
-        /**
-        * Command handling function.
-        * Call HandleCommandL() of container
-        */
-        void handleCommand( TMPXVideoPlaybackViewCommandIds command, int value = 0 );
-
-        /*
-        * Return ETrue if TV-out cable gets connected
-        */
-        inline bool isTvOutConnected();
-
-        /*
-         * Return ETrue if TV-out cable is connected and content can be played
-         */
-        inline bool isTvOutPlaybackAllowed();
-
         /**
         * Reset or cancel timers for the controls
         */
         void resetDisappearingTimers( TMPXTimerAction timerAction );
 
-        /**
+        /*
         * Return state
         */
         inline TMPXPlaybackState state();
@@ -125,18 +91,9 @@
         */
         inline QMPXVideoPlaybackViewFileDetails* fileDetails();
 
-        //
-        //  Add the file details to the controls controller when available
-        //
-        void addFileDetails( QMPXVideoPlaybackViewFileDetails* details );
-
         QMPXVideoPlaybackDocumentLoader* layoutLoader();
 
         inline HbVideoBasePlaybackView* view();
-
-        inline bool isFlipView();
-
-        void updateVideoRectDone();
         
         void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true );
         
@@ -163,130 +120,14 @@
         */
         void updateControlsVisibility();
 
-        /**
-        * Toggle visibility
-        */
-        void toggleVisibility();
-
-        /**
-        * Create/delete controls based on updated control list
-        */
-        void controlsListUpdated();
-
-        /**
-        * Show Controls and reset the timers
-        */
-        void showControls();
-
-        /**
-        * Return ETrue if any control is visible
-        */
-        bool isVisible();
-
-        /**
-        * Append a control based on control index
-        */
-        void appendControl( TMPXVideoPlaybackControls controlIndex );
-
-        /**
-        * Set changed volume
-        */
-        void volumeChanged( int volume );
-
-        /**
-        * Set changed duration
-        */
-        void durationChanged( int duration);
-
-        /**
-        * Set changed position
-        */
-        void positionChanged( int position );
-
-        /**
-        * Set changed position
-        */
-        void aspectRatioChanged( int aspectRatio );
-
-        /*
-         *  Sets the download size on the progress bar
-         */
-        void setDownloadSize( int size );
-
-        /*
-         *  Updates the download ratio on the progress bar
-         */
-        void updateDownloadPosition( int newSize );
-
-        /**
-        * Set changed state on button bar
-        */
-        void updateStateOnButtonBar();
-
-        /**
-        * Check whether this clip is real format or not
-        */
-        bool realFormat( QString filename );
-
-        /**
-        * Check whether this clip is real format or not for streaming/live streaming
-        */
-        bool realFormatForStreaming( const TDesC& des );
-
-        /**
-        * Check whether this clip is real format or not for local/progressive donwload
-        */
-        bool realFormatForLocal();
-        
-        /**
-        * Handle errors
-        */
-        void handleErrors(); 
-        
-        /**
-		* Return ETrue if control is visible
-		*/
-		bool isSoftKeyVisible( int value );
-
-        /**
-        * Handle tvout connected/disconnected event
-        */
-    void handleTvOutEvent( bool connected, 
-		                        TMPXVideoPlaybackControlCommandIds event,
-		                        int value );
-
-		HbAction* createAction( QActionGroup *actionsGroup,
-		                        int index,
-		                        const char *slot,
-		                        const QString& toolTip );
-
-		void updateVideoRect(  bool transitionEffect = true ); 
-
-		void showVolumeControls();
-
-    private slots:
-        void hideAllControls();
-        void skipToNextVideoItem();
-        void skipToPreviousVideoItem();
-        void handleTappedOnScreen();
-
     public:
         HbVideoBasePlaybackView                   *mView;
-        CMPXVideoViewWrapper                      *mViewWrapper;
         QMPXVideoPlaybackViewFileDetails          *mFileDetails;
 
         QList<QMPXVideoPlaybackFullScreenControl*> mControls;
 
-        QMPXVideoPlaybackControlPolicy            *mControlsPolicy;
-        QMPXVideoPlaybackControlConfiguration     *mControlsConfig;
-
-        QTimer                                    *mControlsTimer;
+        QMPXVideoPlaybackDocumentLoader           *mLoader;
 
-        QMPXVideoPlaybackDocumentLoader           *mLoader;
-        QMPXVideoPlaybackNonTouchVolumeBar        *mVolumeControl;
-
-        bool                                       mFlipViewOpened;
-        bool                                       mViewTransitionIsGoingOn;
         TMPXPlaybackState                          mState;
         TPlaybackViewMode                          mViewMode;
         TMPXTimerAction                            mTimerAction;
@@ -315,34 +156,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isTvOutConnected
-// -------------------------------------------------------------------------------------------------
-//
-inline
-bool QMPXVideoPlaybackControlsController::isTvOutConnected()
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutConnected(%d)"),
-            mFileDetails->mTvOutConnected);
-
-    return mFileDetails->mTvOutConnected;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed
-// -------------------------------------------------------------------------------------------------
-//
-inline
-bool QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed()
-{
-    bool playable = ( ! mFileDetails->mTvOutConnected || mFileDetails->mTvOutPlayAllowed );
-
-    MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed() [%d]"),
-            playable);
-
-    return playable;
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::view
 // -------------------------------------------------------------------------------------------------
 //
@@ -352,17 +165,6 @@
     return mView;
 }
 
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isFlipView
-// -------------------------------------------------------------------------------------------------
-//
-inline
-bool QMPXVideoPlaybackControlsController::isFlipView()
-{
-    return mFlipViewOpened;
-}
-
-
 #endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/
 
 // End of File
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoplaybackfullscreencontrol.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
@@ -56,26 +56,6 @@
         TMPXVideoPlaybackControls controlIndex();
 
         /**
-        * set changed volume
-        */
-        bool volumeChanged( int aVolume );
-
-        /**
-        * set changed duration
-        */
-        bool durationChanged( int duration );
-
-        /**
-        * set changed volume
-        */
-        bool positionChanged( int position );
-
-        /**
-        * Set changed position
-        */
-        bool aspectRatioChanged( int aspectRatio );
-
-        /**
         * set changed state
         */
         void updateState( TMPXPlaybackState state );
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/inc/mpxvideoviewwrapper.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2008 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:  MPX Video base playback view
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-// This file defines the API for .dll
-
-#ifndef __MPXVIDEOVIEWWRAPPER_H__
-#define __MPXVIDEOVIEWWRAPPER_H__
-
-//  Include Files
-
-#include <e32base.h>	// CBase
-#include <e32std.h>	 // TBuf
-
-
-#include "mpxvideoplaybackcontrol.hrh"
-
-//  Constants
-
-//  Forward Declarations
-class HbVideoBasePlaybackView;
-class QMPXVideoPlaybackViewFileDetails;
-
-
-//  Class Definitions
-
-class CMPXVideoViewWrapper : public CBase
-{
-    public:
-        static CMPXVideoViewWrapper* NewL( HbVideoBasePlaybackView* aView );
-        virtual ~CMPXVideoViewWrapper();
-
-        CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView );        
-        void ConstructL();
-        
-        void SetFileDetails(TBool aDefault);
-
-    public:
-        void HandleCommandL( TInt aCommand );
-                             
-        TBool IsLive();
-        
-        TBool IsPlaylist();
-        
-        TBool IsMultiItemPlaylist();
-               
-        void RequestMediaL();  
-                        
-        void ActivateClosePlayerActiveObject();
-        
-        void IssueVideoAppForegroundCmdL( TBool aForeground );
-
-
-    public: // data
-
-        HbVideoBasePlaybackView*             iView;
-        TBool                                iMediaRequested;
-        QMPXVideoPlaybackViewFileDetails*    iFileDetails;
-        TBool                                iClosePlayerAO;
-        TBool                                iForeground;
-        
-};
-
-#endif  // __MPXVIDEOVIEWWRAPPER_H__
-
-// EOF
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/hbvideobaseplaybackview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,14 +15,12 @@
 *
 */
 
-// Version : %version:   2 %
+// Version : %version:   3 %
 
 
 
 //  Include Files
-#include <qgraphicssceneevent>
 #include <hbinstance.h>
-#include <mmf/common/mmferrors.h>
 
 #include "../inc/hbvideobaseplaybackview.h"
 
@@ -35,7 +33,6 @@
 //
 HbVideoBasePlaybackView::HbVideoBasePlaybackView()
 {
-    mCurrentError = KErrNone;
     mViewActive = false;
 }
 
@@ -66,46 +63,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-// HbVideoBasePlaybackView::mousePress
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::mousePressEvent( QGraphicsSceneMouseEvent *event ) 
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-// HbVideoBasePlaybackView::itemChange
-// -------------------------------------------------------------------------------------------------
-//
-QVariant HbVideoBasePlaybackView::itemChange( GraphicsItemChange change, const QVariant &value )
-{
-    return QGraphicsWidget::itemChange( change, value );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::closePlaybackView()
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::paint( QPainter *painter, 
-                                     const QStyleOptionGraphicsItem *option, 
-                                     QWidget *widget )
-{
-    Q_UNUSED( widget );    
-}
-
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::event()
-// -------------------------------------------------------------------------------------------------
-//
-bool HbVideoBasePlaybackView::event( QEvent *event )
-{
-    bool consumed = false;
-
-    return consumed;
-}
-
-// -------------------------------------------------------------------------------------------------
 //   HbVideoBasePlaybackView::handleClosePlaybackView()
 // -------------------------------------------------------------------------------------------------
 //
@@ -115,31 +72,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::issuePlayCommand
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::issuePlayCommand()
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::handleBufferingState
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::handleBufferingState()
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::handlePluginError()
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::handlePluginError( int aError )
-{
-    mCurrentError = aError;
-}
-
-// -------------------------------------------------------------------------------------------------
 //   HbVideoBasePlaybackView::doClosePlayer
 // -------------------------------------------------------------------------------------------------
 //
@@ -148,16 +80,6 @@
     mViewActive = false;
 }
 
-
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::retrievePdlInformation
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::retrievePdlInformation()
-{
-}
-
 // -------------------------------------------------------------------------------------------------
 //   HbVideoBasePlaybackView::closePlaybackView()
 // -------------------------------------------------------------------------------------------------
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  2 %
+// Version : %version:  3 %
 
 
 
@@ -23,22 +23,13 @@
 #include <coecntrl.h>
 #include <bautils.h>
 #include <barsread.h>
-#include <stringloader.h>
 #include <f32file.h>
 
-#include <qtimer>
-
-#include <hblabel.h>
-#include <hbaction.h>
-#include <hbiconanimator.h>
-
-#include "../inc/mpxvideoviewwrapper.h"
 #include "../inc/hbvideobaseplaybackview.h"
-#include "../inc/mpxvideoplaybackdocumentloader.h"
 #include "../inc/mpxvideoplaybackviewfiledetails.h"
 #include "../inc/mpxvideoplaybackcontrolscontroller.h"
+#include "../inc/mpxvideoplaybackdocumentloader.h"
 
-#include "mpxvideoplaybackcontrolconfiguration.h"
 
 
 // ================= MEMBER FUNCTIONS ==============================================================
@@ -49,10 +40,8 @@
 //
 QMPXVideoPlaybackControlsController::QMPXVideoPlaybackControlsController(
         HbVideoBasePlaybackView *view,
-        CMPXVideoViewWrapper *viewWrapper,
         QMPXVideoPlaybackViewFileDetails *details )
     : mView( view )
-    , mViewWrapper( viewWrapper )
     , mFileDetails( details )   
 {
     initializeController();
@@ -68,94 +57,21 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::addFileDetails()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::addFileDetails(
-    QMPXVideoPlaybackViewFileDetails* details )
-{
-    Q_UNUSED( details );
-}
-
-// -------------------------------------------------------------------------------------------------
 // QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController
 // -------------------------------------------------------------------------------------------------
 //
 QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController()
 {
     MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::~QMPXVideoPlaybackControlsController"));
-}
 
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::handleEvent
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleEvent(
-    TMPXVideoPlaybackControlCommandIds event, int value )
-{
-    switch ( event )
+    if ( mLoader )
     {
-        case EMPXControlCmdTvOutConnected:
-        {
-            handleTvOutEvent( true, event, value );
-            break;
-        }
-        case EMPXControlCmdTvOutDisconnected:
-        {
-            handleTvOutEvent( false, event, value );
-            break;
-        }
-        case EMPXControlCmdSetVolume:
-        {
-            mFileDetails->mAudioEnabled = false;
-            break;
-        }
-        case EMPXControlCmdSetDuration:
-        {
-            mFileDetails->mDuration = value;
-            break;
-        }
-        case EMPXControlCmdShowVolumeControls:
-        {
-            mFileDetails->mAudioEnabled = true;   
-            break;
-        }
-        case EMPXControlCmdSetPosition:
-        {
-            mFileDetails->mSeekable = true;
-            break;    
-        }
+        delete mLoader;
+        mLoader = NULL;
     }
 }
 
 // -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::handleStateChange
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleStateChange( TMPXPlaybackState newState )
-{
-    Q_UNUSED( newState );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::controlsListUpdated()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::controlsListUpdated()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::appendControl()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::appendControl( TMPXVideoPlaybackControls controlIndex )
-{
-    Q_UNUSED( controlIndex );
-}
-
-// -------------------------------------------------------------------------------------------------
 // QMPXVideoPlaybackControlsController::resetDisappearingTimers()
 // -------------------------------------------------------------------------------------------------
 //
@@ -165,214 +81,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::hideAllControls()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::hideAllControls()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::showControls()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::showControls()
-{
-        
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isVisible()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::isVisible()
-{
-    return false;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::handleCommand()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleCommand( 
-        TMPXVideoPlaybackViewCommandIds command, int value )
-{
-    Q_UNUSED( command );
-    Q_UNUSED( value );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::volumeChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::volumeChanged( int volume )
-{
-    Q_UNUSED( volume );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::showVolumeControls()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::showVolumeControls()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::durationChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::durationChanged( int duration )
-{
-    Q_UNUSED( duration );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::positionChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::positionChanged( int position )
-{
-    Q_UNUSED( position );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::aspectRatioChanged()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::aspectRatioChanged( int aspectRatio )
-{
-    Q_UNUSED( aspectRatio );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormat()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormat( QString filename )
-{
-    Q_UNUSED( filename );
-    return false;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormatForStreaming()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormatForStreaming( const TDesC& des )
-{
-	bool realFormat = false;
-    return realFormat;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::realFormatForLocal()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::realFormatForLocal()
-{
-    bool realFormat = false;
-    
-    return realFormat;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::setDownloadSize()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::setDownloadSize( int size )
-{
-    Q_UNUSED( size );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::updateDownloadPosition()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::updateDownloadPosition( int size )
-{
-    Q_UNUSED( size );
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackControlsController::handleErrors
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleErrors()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::isSoftKeyVisible()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackControlsController::isSoftKeyVisible( int /*value*/ )
-{
-    return false;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::handleTvOutEvent
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleTvOutEvent(
-        bool connected, TMPXVideoPlaybackControlCommandIds event, int value )
-{
-    Q_UNUSED( event );
-    Q_UNUSED( value );
-    mFileDetails->mTvOutConnected = connected;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::updateVideoRectDone
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::updateVideoRectDone()
-{
-    mViewTransitionIsGoingOn = false;
-    
-}
-
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::skipToPreviousVideoItem
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::skipToPreviousVideoItem()
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::skipToNextVideoItem
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::skipToNextVideoItem()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::updateVideoRect()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::updateVideoRect( bool transitionEffect )
-{
-    Q_UNUSED( transitionEffect );
-}
-
-// -------------------------------------------------------------------------------------------------
-//   QMPXVideoPlaybackControlsController::handleTappedOnScreen()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackControlsController::handleTappedOnScreen()
-{
-
-}
-
-// -------------------------------------------------------------------------------------------------
 //   QMPXVideoPlaybackControlsController::changeViewMode
 // -------------------------------------------------------------------------------------------------
 //
@@ -390,7 +98,7 @@
 // -------------------------------------------------------------------------------------------------
 //
 QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader()
-{    
+{
     return mLoader;
 }
 
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,19 +15,16 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
 #include <w32std.h>
+#include <hbwidget.h>
 
 #include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
 #include "mpxvideoplaybackfullscreencontrol.h"
-#include "mpxvideoplaybackfiledetailswidget.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
-#include "mpxvideoplaybackdetailsplaybackwindow.h"
 
 
 // -------------------------------------------------------------------------------------------------
@@ -97,76 +94,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::volumeChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::volumeChanged( int /*volume*/ )
-{
-    return true;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::durationChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::durationChanged( int duration )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXProgressBar )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::DurationChanged() [%d]"), duration);
-
-        static_cast<QMPXVideoPlaybackProgressBar*>(mControl)->durationChanged( duration );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::positionChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::positionChanged( int position )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXProgressBar )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackFullScreenControl::positionChanged() [%d]"), position);
-
-        static_cast<QMPXVideoPlaybackProgressBar*>(mControl)->positionChanged( position );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackFullScreenControl::aspectRatioChanged()
-// -------------------------------------------------------------------------------------------------
-//
-bool QMPXVideoPlaybackFullScreenControl::aspectRatioChanged( int aspectRatio )
-{
-    bool changed = EFalse;
-
-    if ( mControlIndex == EMPXButtonBar )
-    {
-        MPX_DEBUG(
-            _L("QMPXVideoPlaybackFullScreenControl::aspectRatioChanged() [%d]"), aspectRatio);
-
-        static_cast<QMPXVideoPlaybackButtonBar*>(mControl)->aspectRatioChanged( aspectRatio );
-
-        changed = ETrue;
-    }
-
-    return changed;
-}
-
-// -------------------------------------------------------------------------------------------------
 // QMPXVideoPlaybackFullScreenControl::updateState()
 // -------------------------------------------------------------------------------------------------
 //
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/stub/src/mpxvideoviewwrapper.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +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 Video base playback view
-*
-*/
-
-// Version : %version:  1 %
-
-
-
-//  Include Files
-
-#include "../inc/mpxvideoviewwrapper.h"
-#include "../inc/hbvideobaseplaybackview.h"
-#include "../inc/mpxvideoplaybackviewfiledetails.h"
-#include "mpxcommonvideoplaybackview.hrh"
-
-//  Member Functions
-
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoViewWrapper::CMPXVideoViewWrapper()
-// -------------------------------------------------------------------------------------------------
-//
-CMPXVideoViewWrapper::CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView )
-    : iView( aView )    
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoViewWrapper::NewL()
-// -------------------------------------------------------------------------------------------------
-//
-CMPXVideoViewWrapper* CMPXVideoViewWrapper::NewL( HbVideoBasePlaybackView* aView )
-{
-    CMPXVideoViewWrapper* self = new (ELeave) CMPXVideoViewWrapper( aView );
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::ConstructL()
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::ConstructL()
-{
-    iMediaRequested = EFalse;        
-}
-
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoViewWrapper::~CMPXVideoViewWrapper()
-// -------------------------------------------------------------------------------------------------
-//
-CMPXVideoViewWrapper::~CMPXVideoViewWrapper()
-{
-}
-
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoViewWrapper::IsLive()
-// -------------------------------------------------------------------------------------------------
-//
-TBool CMPXVideoViewWrapper::IsLive()
-{
-    return EFalse;
-}
-
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoViewWrapper::IsPlaylist()
-// -------------------------------------------------------------------------------------------------
-//
-TBool CMPXVideoViewWrapper::IsPlaylist()
-{
-    return EFalse;    
-}
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::HandleCommandL()
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::HandleCommandL( TInt aCommand )
-{
-    switch ( aCommand )
-    {
-        case EMPXPbvCmdNextListItem:
-        {
-            SetFileDetails( EFalse );            
-            break;    
-        }
-        
-        case EMPXPbvCmdPreviousListItem:
-        {
-            SetFileDetails( ETrue );  
-            break;    
-        }
-    }
-
-}
-
-// -------------------------------------------------------------------------------------------------
-// Request for the media object
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::RequestMediaL()
-{
-    iMediaRequested = ETrue;
-    
-    SetFileDetails( ETrue );
-    
-}
-
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::ActivateClosePlayerActiveObject
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::ActivateClosePlayerActiveObject()
-{
-    iClosePlayerAO = ETrue;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::IsMultiItemPlaylist()
-// -------------------------------------------------------------------------------------------------
-//
-TBool CMPXVideoViewWrapper::IsMultiItemPlaylist()
-{
-    return iFileDetails->mMultiItemPlaylist;
-}
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::SetFileDetails()
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::SetFileDetails(TBool aDefault)
-{
-    if ( iFileDetails )
-    {
-        delete iFileDetails;
-        iFileDetails = NULL;
-    }
-    
-    iFileDetails = new QMPXVideoPlaybackViewFileDetails(); 
-    
-    
-    _LIT(KTestMimeType, "video/3gp");        
-    const QString qMimeType( (QChar*)KTestMimeType().Ptr(), KTestMimeType().Length() );
-    iFileDetails->mMimeType = qMimeType;   
-    
-    
-    _LIT(KTestTitle, "Test Video Title");
-    const QString qTitle( (QChar*)KTestTitle().Ptr(), KTestTitle().Length() );
-    iFileDetails->mTitle = qTitle;    
-    
-    
-    _LIT(KTestArtist, "TestArtist");
-    const QString qArtist( (QChar*)KTestArtist().Ptr(), KTestArtist().Length() );
-    iFileDetails->mArtist = qArtist;
-    
-    
-    _LIT(KTestDescription, "Test Description");
-    const QString qDescription( (QChar*)KTestDescription().Ptr(), KTestDescription().Length() );
-    iFileDetails->mDescription = qDescription;
-
-
-    _LIT(KTestLocation, "Test Location");
-    const QString qLocation( (QChar*)KTestLocation().Ptr(), KTestLocation().Length() );
-    iFileDetails->mLocation = qLocation;
-
-
-    _LIT(KTestCopyright, "Test Copyright");
-    const QString qCopyright( (QChar*)KTestCopyright().Ptr(), KTestCopyright().Length() );
-    iFileDetails->mCopyright = qCopyright;
-
-
-    _LIT(KTestLanguage, "Test Language");
-    const QString qLanguage( (QChar*)KTestLanguage().Ptr(), KTestLanguage().Length() );
-    iFileDetails->mLanguage = qLanguage;
-
-
-    _LIT(KTestKeywords, "Test Keywords");
-    const QString qKeywords( (QChar*)KTestKeywords().Ptr(), KTestKeywords().Length() );
-    iFileDetails->mKeywords = qKeywords;
-
-
-    if ( aDefault )
-    {
-        _LIT(KTestClipName, "testClip.3gp");
-        const QString qClipname( (QChar*)KTestClipName().Ptr(), KTestClipName().Length() );
-        iFileDetails->mClipName = qClipname;        
-    }
-    else
-    {
-        _LIT(KTestClipName, "nextClip.3gp");
-        const QString qClipname( (QChar*)KTestClipName().Ptr(), KTestClipName().Length() );
-        iFileDetails->mClipName = qClipname;        
-    }
-    
-    
-    iFileDetails->mPlaybackMode = EMPXVideoLocal;
-    iFileDetails->mSeekable = true;
-    iFileDetails->mPausableStream = true;
-    iFileDetails->mAudioEnabled = true;
-    iFileDetails->mVideoEnabled = true;
-    iFileDetails->mPartialPlayback = false;
-    iFileDetails->mRNFormat = false;
-    iFileDetails->mDuration = 100;
-    iFileDetails->mTvOutConnected  = false;
-    iFileDetails->mTvOutPlayAllowed = true;
-    iFileDetails->mDrmProtected = false;
-    iFileDetails->mMultiItemPlaylist = false;
-    iFileDetails->mVideoHeight = 320;
-    iFileDetails->mVideoWidth  = 240;
-    iFileDetails->mBitRate = 16000;         
-}
-
-// -------------------------------------------------------------------------------------------------
-//   CMPXVideoViewWrapper::IssueVideoAppForegroundCmd()
-// -------------------------------------------------------------------------------------------------
-//
-void CMPXVideoViewWrapper::IssueVideoAppForegroundCmdL( TBool aForeground )
-{
-    iForeground = aForeground;
-}
-
-// EOF
--- a/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/teststatuspanecontrol/teststatuspanecontrol.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building teststatuspanecontrol
 #
 #
-# Version : %version: 1 %
+# Version : %version: 2 %
 
 
 TEMPLATE = app
@@ -39,7 +39,6 @@
            mpxvideoplaybackcontrolscontroller.h \
            mpxvideoplaybackviewfiledetails.h \
            hbvideobaseplaybackview.h \
-           mpxvideoviewwrapper.h \      
            mpxvideoplaybackdocumentloader.h \
            mpxvideoplaybackfullscreencontrol.h \
            hblabel.h
@@ -49,7 +48,6 @@
            mpxvideoplaybackcontrolscontroller.cpp \
            mpxvideoplaybackviewfiledetails.cpp \
            hbvideobaseplaybackview.cpp \
-           mpxvideoviewwrapper.cpp \  
            mpxvideoplaybackdocumentloader.cpp \
            mpxvideoplaybackfullscreencontrol.cpp \
            hblabel.cpp
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackbuttonbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +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 QMPXVideoPlaybackButtonBar
-*
-*/
-
-// Version : %version: 1 %
-
-
-
-#ifndef MPXVIDEOPLAYBACKBUTTONBAR_H_
-#define MPXVIDEOPLAYBACKBUTTONBAR_H_
-
-#include <hbwidget.h>
-
-class QMPXVideoPlaybackControlsController;
-
-// DATA TYPES
-
-class QMPXVideoPlaybackButtonBar : public HbWidget
-{
-    Q_OBJECT
-
-    public:
-    
-        QMPXVideoPlaybackButtonBar( QMPXVideoPlaybackControlsController* controller );
-        virtual ~QMPXVideoPlaybackButtonBar();
-        void initialize();
-        
-};
-
-#endif /*MPXVIDEOPLAYBACKBUTTONBAR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrol.hrh	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* 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:  header file of CMPXVideoPlaybackControl
+*
+*/
+
+// Version : %version:  %
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROL_HRH_
+#define MPXVIDEOPLAYBACKCONTROL_HRH_
+
+// DATA TYPES
+const TInt KMPXVideoPlaybackVolumeMax = 10;
+
+enum TMPFXVideoPlaybackControlProperties
+{
+    EMPXShownWhenInitializing = 0x1,
+    EMPXShownWhenBuffering = 0x2,
+    EMPXShownWhenPlaying =  0x4,
+    EMPXShownWhenPaused = 0x8,
+    EMPXShownWhenSeeking = 0x10,
+    EMPXAllProperties = 0xffffffff
+};
+
+enum TMPXVideoPlaybackControls
+{
+    EMPXStatusPane,
+    EMPXControlBar,
+
+    // Only for streaming case
+    // Can handle from NotInitilized state
+    //
+    EMPXBufferingAnimation,
+
+    //
+    // For details view and audio only view
+    //
+    EMPXFileDetailsWidget,
+
+    //
+    // For details view
+    //
+    EMPXDetailsViewPlaybackWindow,
+
+    //
+    //  Bitmaps
+    //
+    EMPXBlackBitmap,
+    EMPXIndicatorBitmap,
+    EMPXRealLogoBitmap,
+
+    EMPXDownloadPausedIcon,
+
+    EMPXControlsCount  // has to be last
+};
+
+/** Command ID's. */
+enum TMPXVideoPlaybackControlCommandIds
+{
+    EMPXControlCmdPluginInitialized,
+    EMPXControlCmdTvOutConnected,
+    EMPXControlCmdTvOutDisconnected,
+    EMPXControlCmdSetAspectRatio,
+    EMPXControlCmdSetVolume,
+    EMPXControlCmdSetDuration,
+    EMPXControlCmdSetPosition,
+    EMPXControlCmdStateChanged,
+    EMPXControlCmdDownloadUpdated,
+    EMPXControlCmdSetDownloadSize,
+    EMPXControlCmdDownloadComplete,
+    EMPXControlCmdSetDownloadPaused,
+    EMPXControlCmdClearDownloadPaused,
+    EMPXControlCmdHandleBackgroundEvent,
+    EMPXControlCmdHandleForegroundEvent,
+    EMPXControlCmdHandleErrors,
+    EMPXControlCmdShowVolumeControls,
+    EMPXControlCmdSoftKeyPressed,
+    EMPXControlCmdFullScreenViewOpened,
+    EMPXControlCmdDetailsViewOpened,
+    EMPXControlCmdAudionOnlyViewOpened
+};
+
+enum TMPXVideoSeekingType
+{
+    EMpxVideoSeekingForward,
+    EMpxVideoSeekingBackward,
+    EMpxVideoSeekingStop
+};
+
+enum TMPXVideoControlType
+{
+    EMpxVideoPlaybackContainer,
+    EMpxVideoPlaybackControl
+};
+
+enum TMPXVideoUserInputType
+{
+    EMpxVideoKeyboard,
+    EMpxVideoTouch,
+    EMpxVideoMediaKeys,
+    EMpxVideoSpecialHWKeys,
+    EMpxVideoNone
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROL_HRH_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackcontrolbar.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version: 1 %
+
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLBAR_H_
+#define MPXVIDEOPLAYBACKCONTROLBAR_H_
+
+
+
+#include <hbwidget.h>
+#include <mpxplaybackframeworkdefs.h>
+
+class QMPXVideoPlaybackViewFileDetails;
+class QMPXVideoPlaybackControlsController;
+
+class QMPXVideoPlaybackControlBar : public HbWidget
+{
+    Q_OBJECT
+
+    public:
+        QMPXVideoPlaybackControlBar( QMPXVideoPlaybackControlsController* controller );
+        virtual ~QMPXVideoPlaybackControlBar();
+        void initialize();
+
+    public:
+        QMPXVideoPlaybackControlsController *mController;
+};
+
+#endif /*MPXVIDEOPLAYBACKCONTROLBAR_H_*/
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/inc/mpxvideoplaybackprogressbar.h	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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 <hbwidget.h>
-#include <mpxplaybackframeworkdefs.h>
-
-class QMPXVideoPlaybackControlsController;
-
-class QMPXVideoPlaybackProgressBar : public HbWidget
-{
-    Q_OBJECT
-
-    public:
-        QMPXVideoPlaybackProgressBar( QMPXVideoPlaybackControlsController* controller );
-        virtual ~QMPXVideoPlaybackProgressBar();
-        void initialize();
-
-    private:
-        QMPXVideoPlaybackControlsController *mController;
-};
-
-#endif /*MPXVIDEOPLAYBACKPROGRESSBAR_H_*/
-
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackbuttonbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +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 QMPXVideoPlaybackButtonBar
-*
-*/
-
-// Version : %version: 1 %
-
-
-#include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackcontrolscontroller.h"
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar( 
-        QMPXVideoPlaybackControlsController* controller )
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar"));
-    Q_UNUSED( controller );    
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
-// -------------------------------------------------------------------------------------------------
-//
-QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()
-{
-    MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::~QMPXVideoPlaybackButtonBar()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::initialize()
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackButtonBar::initialize()
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::initialize()"));
-}
-
-
-//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolbar.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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 QMPXVideoPlaybackControlBar
+*
+*/
+
+// Version : %version:  1 %
+
+
+
+#include <hbframeitem.h>
+#include <hbframedrawer.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolbar.h"
+#include "mpxcommonvideoplaybackview.hrh"
+#include "mpxvideoplaybackcontrolscontroller.h"
+
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar( 
+        QMPXVideoPlaybackControlsController* controller )
+    : mController( controller )
+{
+    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackControlBar::QMPXVideoPlaybackControlBar"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+// -------------------------------------------------------------------------------------------------
+//
+QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()
+{
+    MPX_DEBUG(_L("QMPXVideoPlaybackControlBar::~QMPXVideoPlaybackControlBar()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackControlBar::initialize()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackControlBar::initialize()
+{
+}
+
+
+
+//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackcontrolpolicy.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 1 %
+// Version : %version: 2 %
 
 
 
@@ -85,8 +85,7 @@
             }
             break;
         }
-        case EMPXButtonBar:
-        case EMPXProgressBar:
+        case EMPXControlBar:
         {
             //
             // We don't delete ButtonBar and Progress Bar from the controlsList 
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackdocumentloader.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
@@ -28,8 +28,7 @@
 #include "mpxvideoplaybackdocumentloader.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
 
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
+#include "mpxvideoplaybackcontrolbar.h"
 #include "mpxvideoplaybackfiledetailswidget.h"
 #include "mpxvideoplaybacknontouchvolumebar.h"
 #include "mpxvideoplaybackcontrolconfiguration.h"
@@ -130,24 +129,14 @@
         MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[HbLabel] to object list") );                
         mWidgets.append( object );
     }
-    else if ( name == "buttonBarLayout" )
+    else if ( name == "controlBarLayout" )
     {
-        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating buttonBarLayout") );
+        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating controlBarLayout") );
     
-        object = new QMPXVideoPlaybackButtonBar( mController );
+        object = new QMPXVideoPlaybackControlBar( mController );
         object->setObjectName( name );
         
-        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[buttonBarLayout] to object list") );                        
-        mWidgets.append( object );
-    }
-    else if ( name == "progressBarLayout" )
-    {
-        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::creating progressBarLayout") );
-    
-        object = new QMPXVideoPlaybackProgressBar( mController );
-        object->setObjectName( name );
-        
-        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[progressBarLayout] to object list") );                        
+        MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[controlBarLayout] to object list") );                        
         mWidgets.append( object );
     }
     else if ( name == "fileDetailsLayout" )
@@ -200,7 +189,7 @@
         MPX_DEBUG(_L("QMPXVideoPlaybackDocumentLoader::appending[HbRatingSlider] to object list") );                        
         mWidgets.append( object );
     }
-            
+
     return object;
 }
 
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackfullscreencontrol.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,15 +15,13 @@
 *
 */
 
-// Version : %version:  1 %
+// Version : %version:  2 %
 
 
 
 #include <w32std.h>
 
 #include "mpxvideo_debug.h"
-#include "mpxvideoplaybackbuttonbar.h"
-#include "mpxvideoplaybackprogressbar.h"
 #include "mpxvideoplaybackfullscreencontrol.h"
 #include "mpxvideoplaybackfiledetailswidget.h"
 #include "mpxvideoplaybackcontrolscontroller.h"
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/stub/src/mpxvideoplaybackprogressbar.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +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()"));
-}
-
-// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackProgressBar::initialize
-// -------------------------------------------------------------------------------------------------
-//
-void QMPXVideoPlaybackProgressBar::initialize()
-{
-    MPX_ENTER_EXIT(_L("QMPXVideoPlaybackProgressBar::initialize()"));
-}
-
-//End of file
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackcontrolscontroller/testmpxvideoplaybackcontrolscontroller.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building testmpxvideoplaybackcontrolscontroller
 #
 #
-# Version : %version: 1 %
+# Version : %version: 2 %
 
 
 TEMPLATE = app
@@ -27,8 +27,7 @@
 
 INCLUDEPATH += stub/inc \
                ../inc \
-               ../../inc \   
-               ../../controlinc \
+               ../../inc \
                ../../../inc \            
                ../../../../inc \                                          
 
@@ -36,7 +35,7 @@
         
 # Input
 HEADERS += hbvideobaseplaybackview.h  \
-           mpxvideoplaybackbuttonbar.h \
+           mpxvideoplaybackcontrolbar.h \
            mpxvideoplaybackcontrolpolicy.h \
            mpxvideoplaybackcontrolconfiguration.h \
            mpxvideoplaybackdetailsplaybackwindow.h \
@@ -44,7 +43,6 @@
            mpxvideoplaybackfiledetailswidget.h \
            mpxvideoplaybackfullscreencontrol.h \
            mpxvideoplaybacknontouchvolumebar.h \
-           mpxvideoplaybackprogressbar.h \
            mpxvideoplaybackstatuspanecontrol.h \
            mpxvideoplaybackviewfiledetails.h \
            mpxvideoviewwrapper.h \
@@ -54,7 +52,7 @@
 					 
                
 SOURCES += hbvideobaseplaybackview.cpp \ 
-           mpxvideoplaybackbuttonbar.cpp \
+           mpxvideoplaybackcontrolbar.cpp \
            mpxvideoplaybackcontrolpolicy.cpp \
            mpxvideoplaybackcontrolconfiguration.cpp \
            mpxvideoplaybackdetailsplaybackwindow.cpp \
@@ -62,7 +60,6 @@
            mpxvideoplaybackfiledetailswidget.cpp \
            mpxvideoplaybackfullscreencontrol.cpp \
            mpxvideoplaybacknontouchvolumebar.cpp \
-           mpxvideoplaybackprogressbar.cpp \
            mpxvideoplaybackstatuspanecontrol.cpp \
            mpxvideoplaybackviewfiledetails.cpp \
            mpxvideoviewwrapper.cpp \
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/inc/testvideoplaybackview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,6 +15,8 @@
 * 
 */
 
+// Version : %version: %
+
 #ifndef __TESTVIDEOPLAYBACKVIEW_H__
 #define __TESTVIDEOPLAYBACKVIEW_H__
 
@@ -45,14 +47,17 @@
         
     void setup();
     
+private:
+    
+    void verifyHandlePluginError( TInt error, bool closeView = true );
+    
     // test functions for the test framework         
 private slots:
 
     // the order in which these testXX methods are declared is important
     // changing this order will affect the test results
     void testHandleActivateView();
-    void testDisplayErrorMessage();
-    void testDisplayInfoMessage();
+    void testShowDialog();
     void testGetWindow();
     void testIssuePlayCommand();
     void testEvent();
@@ -70,7 +75,7 @@
     void testDoClosePlayer();
 
 signals:
-    void commandSignal(int);
+    void commandSignal();
 
 private:
     HbVideoPlaybackView*  mVideoView;
--- a/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/tsrc/testvideoplaybackview/src/testvideoplaybackview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,6 +15,8 @@
 * 
 */
 
+// Version : %version: %
+
 #include <e32err.h>
 #include <w32std.h>
 
@@ -108,66 +110,81 @@
 }
 
 void TestVideoPlaybackView::testHandlePluginError()
-{   /*
+{   
+    //
+    // playback view is closed after displaying these error notes
+    //
+    verifyHandlePluginError( KErrNotSupported );
+    verifyHandlePluginError( KErrUnknown );
+    verifyHandlePluginError( KErrMMDecoder );
+    verifyHandlePluginError( KErrCorrupt );
+    verifyHandlePluginError( KErrTooBig );
+    verifyHandlePluginError( KErrMMInvalidProtocol );
+    verifyHandlePluginError( KErrMMInvalidURL );
+    verifyHandlePluginError( KErrArgument );
+    verifyHandlePluginError( KErrSessionClosed ); 
+    verifyHandlePluginError( KErrTimedOut );
+    verifyHandlePluginError( KErrNotFound );
+    verifyHandlePluginError( KErrMMNotEnoughBandwidth );   
+    verifyHandlePluginError( KErrDisconnected );
+    verifyHandlePluginError( KErrMMProxyServer ); 
+    verifyHandlePluginError( KErrCouldNotConnect );
+    verifyHandlePluginError( KErrAbort );
+    verifyHandlePluginError( KErrCancel ); 
+    verifyHandlePluginError( KErrMMDRMNotAuthorized );
+    verifyHandlePluginError( KErrCANoRights );
+    verifyHandlePluginError( KErrCANoPermission );
+    verifyHandlePluginError( KMPXVideoTvOutPlaybackNotAllowedClose );
+    
+    //
+    // playback view remains open after displaying these error notes
+    //
+    verifyHandlePluginError( KMPXVideoCallOngoingError, false );
+    verifyHandlePluginError( KMPXVideoTvOutPlaybackNotAllowed, false );
+    verifyHandlePluginError( KMPXVideoPlayOver2GDuringVoiceCallError, false );
+            
+    //
+    // default error case, playback view is closed after displaying error note
+    //
+    verifyHandlePluginError( KErrGeneral );    
+}
+
+void TestVideoPlaybackView::testShowDialog()
+{   
+    //
+    // construct and activate playback view
+    //
     setup();
     
-    mVideoView->handlePluginError( KErrGeneral );	        
-    QVERIFY( mVideoView->isEnabled() );
-    QVERIFY( ! mVideoView->isObscured() );
-    
-    mVideoView->handlePluginError( KErrNotSupported );   
-    
-    mVideoView->handlePluginError( KErrArgument );
-    
-    mVideoView->handlePluginError( KErrSessionClosed );
-    
-    mVideoView->handlePluginError( KErrTimedOut );
-    
-    mVideoView->handlePluginError( KErrNotFound );
+    //
+    // ensure that playback view is currently activated
+    //
+    QVERIFY( ! mVideoView->mTimerForClosingView->isActive() );
     
-    mVideoView->handlePluginError( KErrMMNotEnoughBandwidth );
-    
-    mVideoView->handlePluginError( KErrDisconnected );
-    
-    mVideoView->handlePluginError( KMPXVideoPlayOver2GDuringVoiceCallError );
-    
-    mVideoView->handlePluginError( KErrTimedOut );
-    
-    mVideoView->handlePluginError( KErrCancel );
-    
-    mVideoView->handlePluginError( KErrCANoPermission );
-    
-    mVideoView->handlePluginError( KMPXVideoCallOngoingError );
+    //
+    // test showDialog() method
+    //
+    mVideoView->showDialog( "test error msg" );
     
-    mVideoView->handlePluginError( KMPXVideoTvOutPlaybackNotAllowed );
-    
-    mVideoView->handlePluginError( KMPXVideoTvOutPlaybackNotAllowedClose );
-	          
-    cleanup();*/
-}
+    //
+    // connect and emit signal for handleClosePopupDialog() slot
+    //
+    connect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) );
+    emit commandSignal();     
 
-void TestVideoPlaybackView::testDisplayErrorMessage()
-{   
-    setup();
-    
-    mVideoView->displayErrorMessage( "test error msg" );
+    //
+    // verify that playback view is properly closed
+    //
+    QVERIFY( mVideoView->mTimerForClosingView->isActive() );
+
+    //
+    // disconnect signal for handleClosePopupDialog() slot
+    //
+    disconnect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) );
     
-    QVERIFY( mVideoView->isEnabled() );
-    QVERIFY( ! mVideoView->isObscured() );
-    
-    cleanup();    
-}
-
-
-void TestVideoPlaybackView::testDisplayInfoMessage()
-{   
-    setup();
-
-    mVideoView->displayInfoMessage( "test info msg" );
-    
-    QVERIFY( mVideoView->isEnabled() );
-    QVERIFY( ! mVideoView->isObscured() );  
-    
+    //
+    // destruct playback view
+    //
     cleanup();    
 }
 
@@ -425,6 +442,57 @@
     cleanup();        
 }
 
+void TestVideoPlaybackView::verifyHandlePluginError( TInt error, bool closeView )
+{       
+    //
+    // construct and activate playback view
+    //
+    setup();
+    
+    //
+    // ensure that playback view is currently open
+    //
+    QVERIFY( ! mVideoView->mTimerForClosingView->isActive() );
+    
+    //
+    // test handlePluginError() method
+    //
+    mVideoView->handlePluginError( error );   
+    
+    //
+    // close playback view after error note has been launched
+    //
+    if ( closeView )
+    {
+        //
+        // connect and emit signal for handleClosePopupDialog() slot
+        //
+        connect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) );
+        emit commandSignal();  
+
+        //
+        // verify that playback view is properly closed
+        //
+        QVERIFY( mVideoView->mTimerForClosingView->isActive() );
+    
+        //
+        // disconnect signal for handleClosePopupDialog() slot
+        //
+        disconnect( this, SIGNAL( commandSignal() ), mVideoView, SLOT( handleClosePopupDialog() ) );
+    }
+    else
+    {    
+        //
+        // verify that playback view is still open after error note has been launched
+        //
+        QVERIFY( ! mVideoView->mTimerForClosingView->isActive() );
+    }        
+    
+    //
+    // destruct playback view
+    //
+    cleanup();
+}
 
 // End of file
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/viewinc/mpxvideoviewwrapper.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,274 @@
+/*
+* Copyright (c) 2008 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:  MPX Video base playback view
+*
+*/
+
+// Version : %version:  da1mmcf#12 %
+
+
+
+// This file defines the API for .dll
+
+#ifndef __MPXVIDEOVIEWWRAPPER_H__
+#define __MPXVIDEOVIEWWRAPPER_H__
+
+//  Include Files
+
+#include <e32base.h>	// CBase
+#include <e32std.h>	 // TBuf
+#include <mpxplaybackobserver.h>
+#include <mpxvideoplaybackdefs.h>
+#include <mpxviewactivationobserver.h>
+#include <mpxcollectionobserver.h>
+
+#include "mpxvideoplaybackcontrol.hrh"
+
+//  Constants
+
+//  Forward Declarations
+class MMPXPlaybackUtility;
+class MMPXCollectionUtility;
+class HbVideoBasePlaybackView;
+class CMPXVideoPlaybackDisplayHandler;
+class QMPXVideoPlaybackViewFileDetails;
+class CMPXVideoPlaybackUserInputHandler;
+class QMPXVideoPlaybackControlsController;
+
+//  Class Definitions
+
+class CMPXVideoViewWrapper : public CBase,
+                             public MMPXPlaybackObserver,
+                             public MMPXViewActivationObserver,
+                             public MMPXPlaybackCallback,
+                             public MMPXCollectionObserver
+{
+    public:
+        static CMPXVideoViewWrapper* NewL( HbVideoBasePlaybackView* aView );
+        virtual ~CMPXVideoViewWrapper();
+
+    private:
+        CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView );        
+        void ConstructL();
+
+    public:
+        virtual void HandleCommandL( TInt aCommand );
+
+        void RetrieveFileNameAndModeL( CMPXCommand* aCmd );
+        
+        /*
+         *  From MMPXViewActivationObserver
+         *  Handle view activation.
+         *
+         *  @param aCurrentViewType Current view type Uid.
+         *  @param aPreviousViewType Previous view type Uid.
+         */
+        inline void HandleViewActivation( const TUid& /*aCurrentViewType*/,
+                                          const TUid& /*aPreviousViewType*/ ) {}        
+
+        /**
+        * From MMPXPlaybackObserver
+        * Handle playback message
+        *
+        * @param aMessage Playback Message
+        * @param aErr system error code.
+        */
+        virtual void HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError );
+
+        /**
+        *  From MMPXPlaybackCallback
+        *  Handle playback property
+        *
+        *  @param aProperty the property
+        *  @param aValue the value of the property
+        *  @param aError error code
+        */
+    	void HandlePropertyL( TMPXPlaybackProperty aProperty,
+                              TInt aValue,
+                              TInt aError );
+
+        /**
+        *  Method is called continously until aComplete=ETrue, signifying that
+        *  it is done and there will be no more callbacks
+        *  Only new items are passed each time
+        *
+        *  @param aPlayer UID of the subplayer
+        *  @param aSubPlayers a list of sub players
+        *  @param aComplete ETrue no more sub players. EFalse more subplayer
+        *                   expected
+        *  @param aError error code
+        */
+        inline void HandleSubPlayerNamesL( TUid /*aPlayer*/,
+                                           const MDesCArray* /*aSubPlayers*/,
+                                           TBool /*aComplete*/,
+                                           TInt /*aError*/ )
+        {}
+
+        /**
+        *  Call back of media request
+        *
+        *  @param aMedia media
+        *  @param aError error code
+        */
+        void HandleMediaL( const CMPXMedia& aProperties, TInt aError );
+
+
+        /**
+        *  Handle completion of a asynchronous command
+        *  @param aCommandResult result of the command, NULL if error
+        *  @param aError error code
+        */
+        void HandlePlaybackCommandComplete( CMPXCommand* /*aCommandResult*/,
+                                            TInt /*aError*/);
+        /*
+         *  From base class MMPXCollectionMediaObserver
+         *  (via MMPXCollectionObserver)
+         *  Handle extended media properties
+         *
+         *  @param aMedia media
+         *  @param aError error code
+         */
+        inline void HandleCollectionMediaL( const CMPXMedia& /*aMedia*/, TInt /*aError*/ ) {}
+
+        /*
+         *  From base class MMPXCollectionObserver
+         */
+        inline void HandleCollectionMessage( CMPXMessage* /*aMsg*/, TInt /*aErr*/ ) {}
+
+        inline void HandleOpenL( const CMPXMedia& /*aEntries*/,
+                                 TInt /*aIndex*/,
+                                 TBool /*aComplete*/,
+                                 TInt /*aError*/ ) {}
+
+        inline void HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt /*aError*/ ) {}
+
+        /**
+        * Set property
+        */
+        void SetPropertyL( TMPXPlaybackProperty aProperty, TInt aValue );
+        virtual void RetrievePdlInformationL();
+                     
+        TBool IsLive();
+        
+        TBool IsPlaylist();
+       
+        void IssueVideoAppForegroundCmdL(TBool aForeground);        
+        
+        void RequestMediaL();  
+        
+        void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd );
+        
+        TBool IsAppInFrontL();
+        
+        /*
+         *  Activates an active object to close the player
+         *  @since 5.0
+         */
+        void ActivateClosePlayerActiveObject();
+
+        void CreateControlsL();
+
+        TBool IsMultiItemPlaylist();
+
+        void UpdateVideoRect( TInt aX, TInt aY, TInt aWidth, TInt aHeight, TBool transitionEffect );
+
+        void UpdateVideoRectDone();
+
+        void HandlePluginError( TInt aError );
+
+        void ClosePlaybackViewL();
+
+        void HandleBufferingStateL();
+
+        void IssuePlayCommandL();
+
+
+        /*
+         *  Provides the static function for the callback to close the player
+         *  Called by CIdle iIdle
+         *  @since 3.2
+         *  @param aPtr Pointer to callback class
+         *  @return KErrNone
+         */
+        static TInt ClosePlayerL( TAny* aPtr );
+
+        /*
+         *  Called to stop and exit the player
+         *  @since 3.2
+         *  @return void
+         */
+        void DoClosePlayerL();
+
+        void HandleVideoPlaybackMessage( CMPXMessage* aMessage );
+
+    private:
+
+        /**
+        *  Handle playback message
+        *
+        *  @param aMsg playback message
+        */
+        virtual void DoHandlePlaybackMessageL( CMPXMessage* aMessage );
+
+        /**
+        *  Handle playback error message
+        *
+        *  @param aErr system error code.
+        */
+        void DoHandleErrorPlaybackMessageL( TInt aError );
+
+        void DisplayFileDetailsDialogL();
+
+        /**
+        *  Handle media properties.
+        *
+        *  @param aMedia media properties
+        *  @param aError error code
+        */
+        virtual void DoHandleMediaL( const CMPXMedia& aMedia, TInt aError );
+
+        void CreateVideoSpecificCmdL( TMPXVideoPlaybackCommand aCmd );
+
+        void ParseMetaDataL( const CMPXMedia& aMedia );
+
+        void DoHandleStateChangeL( TInt aNewState );
+
+        void HandleGeneralPlaybackMessageL( CMPXMessage* aMessage );
+
+        void SetAspectRatioL( TMPXVideoPlaybackCommand aCmd );        
+
+        void HandleVolumeCmdL( TMPXPlaybackCommand aCmd );
+
+        void HandleShortPressBackwardL();
+
+    protected: // data
+        MMPXPlaybackUtility*                 iPlaybackUtility;
+        MMPXCollectionUtility*               iCollectionUtility;
+        TMPXPlaybackState                    iPlaybackState;
+
+        QMPXVideoPlaybackViewFileDetails*    iFileDetails;
+        CIdle*                               iCloseAO;
+
+        HbVideoBasePlaybackView*             iView;
+        CMPXVideoPlaybackDisplayHandler*     iDisplayHandler;
+        CMPXVideoPlaybackUserInputHandler*   iUserInputHandler;
+        QMPXVideoPlaybackControlsController* iControlsController;
+        
+        TBool                                iMediaRequested;
+        TBool                                iPlaylistView;        
+};
+
+#endif  // __MPXVIDEOVIEWWRAPPER_H__
+
+// EOF
--- a/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#30 %
+// Version : %version: da1mmcf#32 %
 
 
 
@@ -31,6 +31,7 @@
 #include <hbgesture.h>
 #include <hbinstance.h>
 #include <hbnotificationdialog.h>
+#include <hblabel.h>
 
 #include <textresolver.h>
 #include <mmf/common/mmferrors.h>
@@ -66,8 +67,8 @@
 //
 void HbVideoBasePlaybackView::initializeVideoPlaybackView()
 {
-    MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::initializeVideoPlaybackView()"));
-
+    MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::initializeVideoPlaybackView()"));  
+      
     //
     // Need to set to control full screen including status pane area
     //
@@ -100,11 +101,6 @@
         mTimerForClosingView = NULL;
     }
 
-    if ( mVideoMpxWrapper )
-    {
-        delete mVideoMpxWrapper;
-        mVideoMpxWrapper = NULL;
-    }
 
     setParentItem( 0 );
 }
@@ -116,7 +112,14 @@
 void HbVideoBasePlaybackView::handleActivateView()
 {
     MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleActivateView()"));
-
+    
+    TRAP_IGNORE( mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) ); 
+    
+    //
+    //  Request the needed Media from the Playback Plugin
+    //
+    TRAP_IGNORE( mVideoMpxWrapper->RequestMediaL() ); 
+    
     menu()->close();
 
     hideItems( Hb::AllItems );
@@ -124,21 +127,10 @@
     //
     // Landscape orientation
     //
-    hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal );
-
-    TRAP_IGNORE( mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) );
-
-    mActivated = true;
+    hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal );  
 
-    //
-    //  Retrieve PDL information for container
-    //
-    retrievePdlInformation();
-
-    //
-    //  Request the needed Media from the Playback Plugin
-    //
-    TRAP_IGNORE( mVideoMpxWrapper->RequestMediaL() );
+    mActivated = true;   
+       
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -210,27 +202,25 @@
         case KErrCANoPermission:
         {
             const QString qString = "License has expired or it is missing";
-            displayErrorMessage( qString );
-            handleClosePlaybackView();
+            showDialog( qString );
             break;
         }
         case KMPXVideoCallOngoingError:
         {
-            const QString qString = "FMP cannot be used during video call";
-            displayInfoMessage( qString );
+            const QString qString = "Video playback is not allowed during video call";
+            showDialog( qString, false );
             break;
         }
         case KMPXVideoTvOutPlaybackNotAllowed:
         {
             const QString qString = "Protected clip, can not be played through TV-Out";
-            displayInfoMessage( qString );
+            showDialog( qString, false );
             break;
         }
         case KMPXVideoTvOutPlaybackNotAllowedClose:
         {
             const QString qString = "Protected clip, can not be played through TV-Out";
-            displayInfoMessage( qString );
-            handleClosePlaybackView();
+            showDialog( qString );
             break;
         }
         default:
@@ -252,37 +242,62 @@
                 // convert to QString
                 //
                 const QString qString( (QChar*)text.Ptr(), text.Length() );
-                displayErrorMessage( qString );
-    
+                
+                //
+                // clean up textresolver
+                //
                 CleanupStack::PopAndDestroy( textresolver );
+
+                //
+                // display error and close playback view
+                //
+                showDialog( qString );
     
-                handleClosePlaybackView();
-            
             );
         }
     }
 }
 
 // -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::displayInfoMessage
+//   HbVideoBasePlaybackView::showDialog
 // -------------------------------------------------------------------------------------------------
 //
-void HbVideoBasePlaybackView::displayInfoMessage(  const QString& qString )
+void HbVideoBasePlaybackView::showDialog( const QString& qString, bool closeView )
 {
-    MPX_DEBUG(_L("HbVideoBasePlaybackView::displayInfoMessage()"));
-
-    HbNotificationDialog::launchDialog( qString );             
-}
-
-// -------------------------------------------------------------------------------------------------
-//   HbVideoBasePlaybackView::displayErrorMessage
-// -------------------------------------------------------------------------------------------------
-//
-void HbVideoBasePlaybackView::displayErrorMessage( const QString& qString )
-{
-    MPX_DEBUG(_L("HbVideoBasePlaybackView::displayErrorMessage()"));
-
-    HbNotificationDialog::launchDialog( qString );
+    MPX_DEBUG(_L("HbVideoBasePlaybackView::showDialog( %s, %d )"), qString.data(), closeView );
+        
+    //
+    // create pop-up dialog for error notes, 
+    //     set its position to the middle of the screen
+    //     and make sure pop-up dialog gets deleted on close.
+    //
+    QRectF screenRect = hbInstance->allMainWindows()[0]->rect();
+    HbNotificationDialog* dlg = new HbNotificationDialog();    
+    dlg->setAttribute( Qt::WA_DeleteOnClose );
+    dlg->setMinimumSize( QSizeF(200, 100) );    
+    dlg->setPreferredPos( QPointF( screenRect.height()/2, screenRect.width()/2 ), 
+                          HbPopup::Center );
+    
+	if ( closeView )
+	{
+        //
+        // connect aboutToClose() signal to handleClosePopupDialog() slot so that
+        // when pop-up dialog is closed, playback view is closed also
+        //
+        connect( dlg, SIGNAL( aboutToClose() ), this, SLOT( handleClosePopupDialog() ) );        
+    }
+	
+    //
+    // convert string to label so text alignment can be set
+    //
+    HbLabel *label = new HbLabel( qString );
+    label->setAlignment( Qt::AlignCenter );
+    
+    //
+    // set label as content widget and show pop-up dialog
+    //
+    dlg->setContentWidget( label );
+    dlg->show();    
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -397,4 +412,16 @@
     emit tappedOnScreen();
 }
 
+// -------------------------------------------------------------------------------------------------
+//   HbVideoBasePlaybackView::handleClosePopupDialog()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoBasePlaybackView::handleClosePopupDialog()
+{
+    MPX_DEBUG(_L("HbVideoBasePlaybackView::handleClosePopupDialog()") );
+
+    handleClosePlaybackView();
+}
+
+
 // EOF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/viewsrc/hbvideoplaybackview.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,210 @@
+/*
+* 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:  Implementation of Video playback view
+*
+*/
+
+// Version : %version:  da1mmcf#9 %
+
+
+
+//  Include Files
+#include <hbinstance.h>
+
+#include <mmf/common/mmferrors.h>
+#include <mpxvideoplaybackdefs.h>
+
+#include "mpxvideo_debug.h"
+#include "hbvideoplaybackview.h"
+#include "mpxvideoviewwrapper.h"
+#include "mpxvideoplaybackuids.hrh"
+#include "mpxvideoplaybackviewfiledetails.h"
+#include "mpxcommonvideoplaybackview.hrh"
+
+
+//  Member Functions
+
+// -------------------------------------------------------------------------------------------------
+// HbVideoPlaybackView::HbVideoPlaybackView()
+// -------------------------------------------------------------------------------------------------
+//
+HbVideoPlaybackView::HbVideoPlaybackView()
+{
+    MPX_ENTER_EXIT(_L("HbVideoPlaybackView::HbVideoPlaybackView()"));
+
+    initializeVideoPlaybackView();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::~HbVideoPlaybackView()
+// -------------------------------------------------------------------------------------------------
+//
+HbVideoPlaybackView::~HbVideoPlaybackView()
+{
+    MPX_DEBUG(_L("HbVideoPlaybackView::~HbVideoPlaybackView()"));
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::handleActivateView()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handleActivateView()
+{
+    MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleActivateView()"));
+
+    HbVideoBasePlaybackView::handleActivateView();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::handleDeactivateView()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handleDeactivateView()
+{
+    MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleDeactivateView()"));
+
+    HbVideoBasePlaybackView::handleDeactivateView();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::handleBack()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handleBack()
+{   
+    MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleBack()"));
+
+    closePlaybackView();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::handleSoftkeyBack()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handleSoftkeyBack()
+{
+    MPX_ENTER_EXIT(_L("HbVideoPlaybackView::handleSoftkeyBack()"));
+
+    closePlaybackView();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   HbVideoPlaybackView::handlePluginError()
+// -------------------------------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handlePluginError( int aError )
+{
+    MPX_DEBUG(_L("HbVideoPlaybackView::handlePluginError() aError = %d"), aError );
+   
+    switch( aError )
+    {
+        case KErrNotSupported:
+        case KErrUnknown:
+        case KErrMMDecoder:
+        case KErrCorrupt:
+        case KErrTooBig:
+        {
+            const QString qString = "Invalid Clip. Operation canceled";
+            showDialog( qString );
+            break;
+        }
+
+        case KErrMMInvalidProtocol:
+        case KErrMMInvalidURL:
+        case KErrArgument:
+        {
+            const QString qString = "Unable to connect: Invalid URL";
+            showDialog( qString );
+            break;
+        }
+
+        case KErrSessionClosed:
+        {
+            if ( ! mVideoMpxWrapper->IsLive() )
+            {
+                const QString qString = "Resource Lost";
+                showDialog( qString );
+            }
+            else
+            {
+                handleClosePlaybackView();            
+            } 
+            break;
+        }
+        case KErrTimedOut:
+        {
+            const QString qString = "Unable to connect: Connection timeout";
+            showDialog( qString );
+            break;
+        }
+        case KErrNotFound:
+        {
+            const QString qString = "Unable to connect: File not found";
+            showDialog( qString );
+            break;
+        }
+        case KErrMMNotEnoughBandwidth:
+        {
+            const QString qString = "Unable to connect: Not enough bandwidth";
+            showDialog( qString );
+            break;
+        }
+        case KErrDisconnected:
+        case KErrMMProxyServer:
+        case KErrCouldNotConnect:
+        case KErrAbort:
+        {
+            const QString qString = "Unable to connect";
+            showDialog( qString );
+            break;
+        }
+        case KMPXVideoPlayOver2GDuringVoiceCallError:
+        {
+            const QString qString = "Video play not allowed during voice call over 2G network";
+            showDialog( qString, false );
+            break;
+        }
+        default:
+        {
+            HbVideoBasePlaybackView::handlePluginError( aError );
+
+            break;
+        }
+    }
+}
+
+// -----------------------------------------------------------------------------
+//   HbVideoPlaybackView::handlePdlStateChange
+// -----------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handlePdlStateChange( int /*aState*/ )
+{
+    MPX_DEBUG(_L("HbVideoPlaybackView::handlePdlStateChange()"));
+}
+
+// -----------------------------------------------------------------------------
+//   HbVideoPlaybackView::handleStoppedState
+// -----------------------------------------------------------------------------
+//
+void HbVideoPlaybackView::handleStoppedState()
+{
+    MPX_DEBUG(_L("HbVideoPlaybackView::HandleStoppedState()"));
+
+    if ( ! mVideoMpxWrapper->IsPlaylist() )
+    {        
+        handleBack();
+    }
+}
+
+// EOF
--- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoplaybackuserinputhandler.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,14 +15,13 @@
 *
 */
 
-// Version : %version: 6 %
+// Version : %version: 7 %
 
 
 // INCLUDE FILES
 #include <e32std.h>
 #include <w32std.h> // RWindowBase
 #include <e32base.h>
-#include <AknUtils.h>
 #include <eikclbd.h>
 #include <aknconsts.h>
 #include <remconcoreapi.h>
--- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#22 %
+// Version : %version: da1mmcf#24 %
 
 
 
@@ -60,6 +60,8 @@
 CMPXVideoViewWrapper::CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView )
     : iView( aView )
     , iControlsController( NULL )
+    , iMediaRequested( false )
+    , iPlaylistView( false )
 {
 }
 
@@ -97,19 +99,7 @@
     //  Create Active Object for closing player
     //
     iCloseAO = CIdle::NewL( CActive::EPriorityStandard );   
-        
-    iPlaylistView = EFalse;
-    
-    // Get playlist information
-    MMPXSource* s = iPlaybackUtility->Source();
-
-    if ( s )
-    {
-        CMPXCollectionPlaylist* playlist = s->PlaylistL();
-        iPlaylistView = (playlist) ? ETrue : EFalse;
-        delete playlist;
-    }
-
+                
     //
     //  Create Video Playback Display Handler
     //
@@ -351,7 +341,7 @@
         }
         case EMPXPbvCmdNextListItem:
         {
-            if ( iPlaylistView && IsMultiItemPlaylist() )
+            if ( iPlaylistView && iFileDetails->mMultiItemPlaylist )
             {
                 iPlaybackUtility->CommandL( EPbCmdNext );
             }
@@ -359,7 +349,7 @@
         }
         case EMPXPbvCmdPreviousListItem:  
         {
-            if ( iPlaylistView && IsMultiItemPlaylist() )
+            if ( iPlaylistView && iFileDetails->mMultiItemPlaylist )
             {
 			    //
 			    // the command is being sent twice on purpose
@@ -1383,8 +1373,28 @@
     const QString qMimeType( (QChar*)mimeType.Ptr(), mimeType.Length() );
     iFileDetails->mMimeType = qMimeType;
 
-    iFileDetails->mMultiItemPlaylist = IsMultiItemPlaylist();
+    //
+    // get playlist information and set mMultiItemPlaylist flag
+    //
+    TInt numItems = 1;    
+    MMPXSource* s = iPlaybackUtility->Source();
+
+    if ( s )
+    {
+        CMPXCollectionPlaylist* playlist = NULL;
 
+        MPX_TRAPD( err, playlist = s->PlaylistL() );
+        
+        if ( err == KErrNone && playlist )
+        {
+            iPlaylistView = ETrue;
+            numItems = playlist->Count();
+            delete playlist;
+        }
+    }
+
+    iFileDetails->mMultiItemPlaylist = ( numItems > 1 );
+    
     CleanupStack::PopAndDestroy( cmd );
 
     if ( iControlsController )
@@ -1402,27 +1412,17 @@
 //
 TBool CMPXVideoViewWrapper::IsMultiItemPlaylist()
 {
-    TInt numItems = 1;
-    MMPXSource* s = iPlaybackUtility->Source();
-
-    if ( s )
+    
+    bool multiLinks( false );
+    
+    if ( iFileDetails )
     {
-        CMPXCollectionPlaylist* playlist = NULL;
-
-        MPX_TRAPD( err, playlist = s->PlaylistL() );
-
-        if ( err == KErrNone && playlist )
-        {
-            numItems = playlist->Count();
-            delete playlist;
-        }
+        MPX_DEBUG(_L("CMPXVideoViewWrapper::IsMultiItemPlaylist(%d)"), 
+            iFileDetails->mMultiItemPlaylist );
+        multiLinks = iFileDetails->mMultiItemPlaylist;
     }
-
-    TBool retVal = ( numItems > 1 );
-
-    MPX_DEBUG(_L("CMPXVideoViewWrapper::IsMultiItemPlaylist(%d)"), retVal);
-
-    return retVal;
+    
+    return multiLinks;
 }
 
 // -------------------------------------------------------------------------------------------------
--- a/videoplayback/inc/hbvideobaseplaybackview.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/inc/hbvideobaseplaybackview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  da1mmcf#12 %
+// Version : %version:  da1mmcf#13 %
 
 
 
@@ -51,6 +51,7 @@
 
     protected slots:
         virtual void closePlaybackView();
+        void handleClosePopupDialog();
 
     public:
 
@@ -85,8 +86,8 @@
         virtual void issuePlayCommand();
 
         void initializeVideoPlaybackView();
-        void displayInfoMessage( const QString& qString );
-        void displayErrorMessage( const QString& qString );
+		
+        void showDialog( const QString& qString, bool closeView = true );
 
         virtual void handleClosePlaybackView();
         
--- a/videoplayback/videohelix/src/mpxvideohelixplayback.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideohelixplayback.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: 14 %
+// Version : %version: 15 %
 
 
 //
@@ -115,7 +115,14 @@
 
     TInt err = aFile.Open( iFs, aUri, EFileRead | EFileShareReadersOrWriters );
 
-    if ( err != KErrNone )
+    //
+    //  Check if RFile64 is needed
+    //
+    if ( err == KErrTooBig )
+    {
+        User::Leave( KErrTooBig );
+    }
+    else if ( err != KErrNone )
     {
         CheckForStreamingUrlL( aUri );
     }
@@ -129,7 +136,7 @@
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseL()"),
                   _L("aSong %S"), &aSong );
-    
+
     InitialiseWithPositionL( aSong );
 }
 
@@ -151,8 +158,8 @@
 
     if ( err == KErrNone )
     {
-        iVideoPlaybackCtlr->OpenFileL( aSong, fileHandle, aPosition ); 
-    }   
+        iVideoPlaybackCtlr->OpenFileL( aSong, fileHandle, aPosition );
+    }
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
     else if ( err == KErrTooBig )
     {
@@ -171,7 +178,7 @@
         }
         else
         {
-                iVideoPlaybackCtlr->OpenFile64L( aSong, fileHandle64, aPosition ); 
+                iVideoPlaybackCtlr->OpenFile64L( aSong, fileHandle64, aPosition );
         }
 
         CleanupStack::PopAndDestroy(); // fileHandle64
@@ -193,7 +200,7 @@
 void CMPXVideoHelixPlayback::InitialiseL( RFile& aSong )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseL( RFile )"));
-        
+
     InitialiseWithPositionL( aSong );
 }
 
@@ -205,11 +212,11 @@
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitialiseWithPositionL( RFile )"),
                    _L("aPosition %d"), aPosition );
-    
+
     TFileName filename;
     aSong.FullName( filename );
 
-    iVideoPlaybackCtlr->OpenFileL( filename, aSong, aPosition ); 
+    iVideoPlaybackCtlr->OpenFileL( filename, aSong, aPosition );
 }
 
 
@@ -219,8 +226,8 @@
 //
 void CMPXVideoHelixPlayback::InitStreamingL( const TDesC& aUri,
                                              const TDesC8& /*aType*/,
-                                             TInt aAccessPoint, 
-                                             TInt aPosition ) 
+                                             TInt aAccessPoint,
+                                             TInt aPosition )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreamingL()"),
                    _L("aUri %S, aAccessPoint %d, aPosition %d"), &aUri, aAccessPoint, aPosition );
@@ -238,7 +245,7 @@
     }
     else
     {
-        iVideoPlaybackCtlr->OpenFileL( aUri, fileHandle, aPosition, aAccessPoint );  
+        iVideoPlaybackCtlr->OpenFileL( aUri, fileHandle, aPosition, aAccessPoint );
     }
 
     CleanupStack::PopAndDestroy();
@@ -248,7 +255,7 @@
 //    Initializes a clip for playback from a file handle
 //  ----------------------------------------------------------------------------
 //
-void CMPXVideoHelixPlayback::InitStreamingL( RFile& aFile, TInt aAccessPoint, TInt aPosition  ) 
+void CMPXVideoHelixPlayback::InitStreamingL( RFile& aFile, TInt aAccessPoint, TInt aPosition  )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreamingL( RFile )"),
                    _L("aAccessPoint = %d, aPosition = %d"), aAccessPoint, aPosition );
@@ -394,21 +401,21 @@
 //    Initializes a clip for playback from a 64-bit file handle
 //  ----------------------------------------------------------------------------
 //
-void CMPXVideoHelixPlayback::Initialise64L( RFile64& aSong, TInt aPosition ) 
+void CMPXVideoHelixPlayback::Initialise64L( RFile64& aSong, TInt aPosition )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::Initialise64L( RFile64 )"),
                    _L("aPosition %d"), aPosition );
     TFileName filename;
     aSong.FullName( filename );
 
-    iVideoPlaybackCtlr->OpenFile64L( filename, aSong, aPosition );   
+    iVideoPlaybackCtlr->OpenFile64L( filename, aSong, aPosition );
 }
 
 //  ----------------------------------------------------------------------------
 //    Initializes a clip for playback from a 64-bit file handle
 //  ----------------------------------------------------------------------------
 //
-void CMPXVideoHelixPlayback::InitStreaming64L( RFile64& aFile, TInt aAccessPoint, TInt aPosition ) 
+void CMPXVideoHelixPlayback::InitStreaming64L( RFile64& aFile, TInt aAccessPoint, TInt aPosition )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoHelixPlayback::InitStreaming64L( RFile64 )"),
                    _L("aAccessPoint = %d, aPosition %d"), aAccessPoint, aPosition );
@@ -416,7 +423,7 @@
     TFileName filename;
     aFile.FullName( filename );
 
-    iVideoPlaybackCtlr->OpenFile64L( filename, aFile, aPosition, aAccessPoint ); 
+    iVideoPlaybackCtlr->OpenFile64L( filename, aFile, aPosition, aAccessPoint );
 }
 
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
--- a/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: ou1cpsw#49 %
+// Version : %version: 50 %
 
 
 //
@@ -1807,8 +1807,12 @@
     {
         // TV out disconnected
         CancelDisplayTimer();
+        
         // Ensure that lights are on after this 
         ReleaseLights();
+        
+        // Pause playback since TV-Out accessory has been disconnected.
+        DoHandleCommandL( EPbCmdPause );
     }
 
     //
--- a/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: 20 %
+// Version : %version: e003sa33#21 %
 
 
 
@@ -361,21 +361,23 @@
         HBufC8* tempBuf = NULL;
         TInt apMaxLen = 3;
 
-        HBufC8* accessPoint = HBufC8::NewLC( KMMFAccessPoint().Length() + apMaxLen );
-        accessPoint->Des().Format( KMMFAccessPoint, iVideoPlaybackCtlr->iAccessPointId );
+        MPX_TRAPD( err,
+                   HBufC8* accessPoint = HBufC8::NewLC( KMMFAccessPoint().Length() + apMaxLen );
+                   accessPoint->Des().Format( KMMFAccessPoint, iVideoPlaybackCtlr->iAccessPointId );
 
-        tempBuf = HBufC8::NewLC( accessPoint->Length() );
-        tempBuf->Des().Copy( accessPoint->Des() );
+                   tempBuf = HBufC8::NewLC( accessPoint->Length() );
+                   tempBuf->Des().Copy( accessPoint->Des() );
 
-        if ( tempBuf )
-        {
-            iVideoPlaybackCtlr->iPlayer->CustomCommandSync( destinationPckg,
+                   if ( tempBuf )
+                   {
+                       iVideoPlaybackCtlr->iPlayer->CustomCommandSync( destinationPckg,
                                                             EMMFROPControllerSetApplicationConfig,
                                                             tempBuf->Des(),
                                                             savePckg );
-        }
+                   }
 
-        CleanupStack::PopAndDestroy(2);   // accessPoint, tempBuf
+                   CleanupStack::PopAndDestroy(2);   // accessPoint, tempBuf 
+                );
     }
 }
 
@@ -400,7 +402,8 @@
         }
         else
         {
-            playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() );
+            MPX_TRAPD( err,
+            		   playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() ) );
 
             if ( !playAllowed )
             {
--- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 35 %
+// Version : %version: e003sa33#36 %
 
 
 //
@@ -990,7 +990,7 @@
             TInt64 pos( iVideoPlaybackCtlr->iSavedPosition );
             pos *= KPbMilliMultiplier;
             
-            iVideoPlaybackCtlr->iPlayer->SetPositionL( pos );
+            MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->SetPositionL( pos ) );
         }
                
         MPX_DEBUG(_L("CMPXInitialisingState::HandleOpenComplete()  Sending Prepare()"));
@@ -1576,7 +1576,7 @@
     }
     else
     {
-        iVideoPlaybackCtlr->iPlayer->RefreshFrameL();
+        MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->RefreshFrameL() );
     }
 }
 
--- a/videoplayback/videohelix/src/mpxvideoplayerutility.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplayerutility.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 18 %
+// Version : %version: e003sa33#19 %
 
 
 #include <AudioPreference.h>
@@ -94,7 +94,7 @@
     MPX_ENTER_EXIT(_L("CMpxVideoPlayerUtility::Reset()"));
 
     Close();
-    OpenControllerL();
+    MPX_TRAPD( err, OpenControllerL() );
 }
 
 void CMpxVideoPlayerUtility::OpenControllerL()
--- a/videoplayerapp/bwins/videoplayerengineu.def	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/bwins/videoplayerengineu.def	Thu Apr 01 23:32:44 2010 +0300
@@ -43,4 +43,5 @@
 	?connectView@QVideoPlayerEngine@@AAEXXZ @ 42 NONAME ; void QVideoPlayerEngine::connectView(void)
 	?instance@VideoServices@@SAPAV1@PAVQVideoPlayerEngine@@@Z @ 43 NONAME ; class VideoServices * VideoServices::instance(class QVideoPlayerEngine *)
 	??_EQVideoPlayerEngine@@UAE@I@Z @ 44 NONAME ; QVideoPlayerEngine::~QVideoPlayerEngine(unsigned int)
+	?doDelayedLoad@QVideoPlayerEngine@@AAEXXZ @ 45 NONAME ; void QVideoPlayerEngine::doDelayedLoad(void)
 
--- a/videoplayerapp/eabi/videoplayerengineu.def	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/eabi/videoplayerengineu.def	Thu Apr 01 23:32:44 2010 +0300
@@ -43,4 +43,5 @@
 	_ZTI18QVideoPlayerEngine @ 42 NONAME
 	_ZTV13VideoServices @ 43 NONAME
 	_ZTV18QVideoPlayerEngine @ 44 NONAME
+	_ZN18QVideoPlayerEngine13doDelayedLoadEv @ 45 NONAME
 
--- a/videoplayerapp/inc/videoplayerengine.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/inc/videoplayerengine.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: ou1cpsw#9 %
+// Version : %version: ou1cpsw#10 %
 
 #ifndef VIDEOPLAYERENGINE_H
 #define VIDEOPLAYERENGINE_H
@@ -71,10 +71,13 @@
         void switchView();    
     
         void loadPlugin( MpxHbVideoCommon::MpxHbVideoViewType viewType );
+        
+        void doDelayedLoad();
 
     private:
         bool                      mIsService;
-        bool                      mEmbedded;   
+        bool                      mEmbedded;
+        bool					  mDelayedLoadDone;
 
         MpxViewPlugin*            mCurrentViewPlugin;
         MpxViewPlugin*            mPlaybackViewPlugin; 
--- a/videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/inc/mpxvideoplaybackwrapper.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 3 %
+// Version : %version: 4 %
 
 
 
@@ -40,6 +40,7 @@
 
         int playMedia( QString aFileName );
         void openPlaybackView() ;
+        void lateInit();
 
     private:
         void initializePlugins();
--- a/videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version:  3 %
+// Version : %version:  4 %
 
 
 
@@ -245,6 +245,13 @@
          *  @return KErrNone
          */
         static TInt ExitApplicationL( TAny* aPtr );
+        
+        /*
+         *  Late initializatoin of members that can be delayed 
+         *  to help improve startup time
+         *  @since 10.1
+         */        
+        void LateInitL();
 
     private:
         /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayerapp/videoplayerengine/src/mpxvideoplaybackwrapper.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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:  Implimentation of QMpxVideoPlaybackWrapper
+*
+*/
+
+// Version : %version:  3 %
+
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackwrapper.h"
+#include "mpxvideoplayerappuiengine.h"
+
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper()
+// -------------------------------------------------------------------------------------------------
+//
+QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper()
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::QMpxVideoPlaybackWrapper()"));
+
+    initializePlugins();
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper()
+// -------------------------------------------------------------------------------------------------
+//
+QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper()
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::~QMpxVideoPlaybackWrapper()"));
+
+    if ( mUiEngine ) 
+    {
+        delete mUiEngine;
+        mUiEngine = NULL;
+    }        
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::initializePlugins()
+// -------------------------------------------------------------------------------------------------
+//
+void QMpxVideoPlaybackWrapper::initializePlugins()
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::initializePlugins()"));
+
+    TRAPD( err, mUiEngine = CMpxVideoPlayerAppUiEngine::NewL( this ) );
+    MPX_DEBUG(_L("QMpxVideoPlaybackWrapper::initializePlugins err = %d"), err);
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::playMedia()
+// -------------------------------------------------------------------------------------------------
+//
+int QMpxVideoPlaybackWrapper::playMedia( QString aFileName )
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::playMedia"));
+
+    TBuf<KMaxFileName> filename( aFileName.utf16() );
+    TRAPD( error, mUiEngine->OpenFileL( filename ) );
+
+    MPX_DEBUG(_L("QMpxVideoPlaybackWrapper::playMedia err = %d"), error);
+
+    return error;
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::openPlaybackView()
+// -------------------------------------------------------------------------------------------------
+//
+void QMpxVideoPlaybackWrapper::openPlaybackView()
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::openPlaybackView()"));
+
+    emit handlePlaybackView( MpxHbVideoCommon::ActivatePlaybackView );
+}
+
+// -------------------------------------------------------------------------------------------------
+//   QMpxVideoPlaybackWrapper::postInit()
+// -------------------------------------------------------------------------------------------------
+//
+void QMpxVideoPlaybackWrapper::lateInit()
+{
+    MPX_ENTER_EXIT(_L("QMpxVideoPlaybackWrapper::postInit()"));
+    
+    TRAP_IGNORE( mUiEngine->LateInitL() );
+}
+
+// End of File
--- a/videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/src/mpxvideoplayerappuiengine.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version:  4 %
+// Version : %version:  5 %
 
 
 
@@ -88,28 +88,23 @@
 // -------------------------------------------------------------------------------------------------
 //
 void CMpxVideoPlayerAppUiEngine::ConstructL()
-{
-    iRecognizer = CMediaRecognizer::NewL();
+{    
+    TUid collectionMode( KUidMpxVideoPlayerApplication );
 
-    //
-    //  Create the Collection Utility
-    //
+    iCollectionUtility = MMPXCollectionUtility::NewL( this, collectionMode ); 
+}
 
-    //
-    // Workaround. Embedded is not supported yet.
-    //
-    //if ( ! iAppUi->IsEmbedded() )
-    if ( ETrue )
-    {
-        TUid collectionMode( KUidMpxVideoPlayerApplication );
-
-        iCollectionUtility = MMPXCollectionUtility::NewL( this, collectionMode );
-    }
-
-    //
-    //  Create Active Object for exiting the application
-    //
-    iExitAo = CIdle::NewL( CActive::EPriorityStandard );           
+// -------------------------------------------------------------------------------------------------
+//   CMpxVideoPlayerAppUiEngine::PostInitL
+// -------------------------------------------------------------------------------------------------
+//
+void CMpxVideoPlayerAppUiEngine::LateInitL()
+{	       
+    CreatePlaybackUtilityMemberVariablesL();
+        
+    iRecognizer = CMediaRecognizer::NewL();
+               
+    iExitAo = CIdle::NewL( CActive::EPriorityStandard );     
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -161,14 +156,7 @@
 {
     MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::CreateEmbeddedPdlPlaybackUtilityMemberVariablesL()"));
 
-    if ( ! iPlaybackUtility )
-    {
-        iPlaybackUtility = MMPXPlaybackUtility::UtilityL( EMPXCategoryVideo, KPbModeNewPlayer );
-        MMPXPlayerManager& manager = iPlaybackUtility->PlayerManager();
-        manager.SelectPlayerL( KVideoHelixPlaybackPluginUid );
-        iPlaybackUtility->AddObserverL( *this );
-        iPlaybackUtility->CommandL( EPbCmdSetAutoResume, EFalse );
-    }
+	  CreatePlaybackUtilityMemberVariablesL();
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -354,11 +342,6 @@
 
     if ( KErrNone == err && ! iPdlHandler )
     {
-        //
-        //  Create member variables for embedded use cases that are not PDL
-        //
-        CreatePlaybackUtilityMemberVariablesL();
-
         TFileName filename;
         aFile.FullName(filename);
 
@@ -393,11 +376,6 @@
     MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::OpenFileL()"),
                    _L("aFileName = %S"), &aFileName);
 
-    //
-    //  Create member variables for embedded use cases that are not PDL
-    //
-    CreatePlaybackUtilityMemberVariablesL();
-
     CMediaRecognizer::TMediaType mediaType = iRecognizer->IdentifyMediaTypeL(aFileName);
 
     if ( mediaType == CMediaRecognizer::ELocalVideoFile )
@@ -457,8 +435,6 @@
     playList->SetSingleItemPlaylist();
     playList->SetToFirst();
 
-    CreatePlaybackUtilityMemberVariablesL();
-
     iPlaybackUtility->InitL( *playList, ETrue );
 
     CleanupStack::PopAndDestroy( playList );
@@ -512,29 +488,7 @@
 {
     MPX_ENTER_EXIT(_L("CMpxVideoPlayerAppUiEngine::HandlePlaybackPlayerChangedL()"));
 
-    MMPXPlayer* player = iPlaybackUtility->PlayerManager().CurrentPlayer();
-
-    TUid pluginUid( KNullUid );
-    RArray<TUid> array;
-
-    CleanupClosePushL( array );
-
-    if ( iPdlHandler )
-    {
-        array.AppendL( KVideoPdlPlaybackViewUid );
-    }
-    else
-    {
-        if ( player )
-        {
-            pluginUid = player->UidL();
-            array.AppendL( pluginUid );
-        }
-    }
-
     ActivateVideoPlaybackView();
-
-    CleanupStack::PopAndDestroy( &array );
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -712,9 +666,7 @@
         
         if ( mediaType == CMediaRecognizer::ELocalRamFile ||
              mediaType == CMediaRecognizer::ELocalAsxFile )
-        {
-            CreatePlaybackUtilityMemberVariablesL();
-        
+        {        
             HandleMultiLinksFileL( mediaFile, mediaType );
         }    
         else
@@ -905,21 +857,7 @@
     TPckg<TVideoPlayerActivationMessage> paramsPckg( msgHandler );
     paramsPckg.Copy( aMsg );
 
-    /*if ( msgHandler.iMsgSender == TVideoPlayerActivationMessage::EMatrixMenu )
-    {
-        // Clear the view history, so app exits back to matrix.
-        iViewUtility->PushDefaultHistoryL();
-    }
-
-    if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::EOpenInternetVideos )
-    {
-        iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) );
-    }
-    else if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::EOpenVideoStorage )
-    {
-        iViewUtility->ActivateViewL( TUid::Uid( KUidMyVideosViewTypeId ) );
-    }
-    else*/ if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchVideoToPlayer )
+    if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchVideoToPlayer )
     {
         // Launch video to player, it can be either local video or stream.
 
@@ -946,47 +884,6 @@
             }
         }
     }
-		/*else
-        {
-            TBool vodUiRunning = ( iViewUtility->ActiveViewType() ==
-                                   TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) );
-
-            if ( vodUiRunning )
-            {
-                // VOD is active, must use the utility to pass the message.
-                // Workaround for a test stopper, to be refactored.
-                CVcxViewMessageUtility::InstanceL()->SendCustomViewMessageL( TUid::Uid(0), aMsg );
-            }
-            else
-            {
-                // VOD is not running, activate with custom message.
-                HBufC* customMsg = HBufC::NewLC( paramsPckg.Length() );
-                customMsg->Des().Copy( paramsPckg );
-                iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ), customMsg );
-                CleanupStack::PopAndDestroy( customMsg );
-    
-                // Clear the view history, so playback returns where it was started
-                iViewUtility->PushDefaultHistoryL();
-            }
-        }
-    }
-    else if ( msgHandler.iMsgType == TVideoPlayerActivationMessage::ELaunchServiceById )
-    {
-        if ( iViewUtility->ActiveViewType() == TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ) )
-        {
-            // VOD is active, must use the utility to pass the message.
-            // Workaround for a test stopper, to be refactored.
-            CVcxViewMessageUtility::InstanceL()->SendCustomViewMessageL( TUid::Uid(0), aMsg );
-        }
-        else
-        {
-            // VOD is not running, activate with custom message.
-            HBufC* customMsg = HBufC::NewLC( paramsPckg.Length() );
-            customMsg->Des().Copy( paramsPckg );
-            iViewUtility->ActivateViewL( TUid::Uid( KMpxVideoPlayerVodViewPluginTypeId ), customMsg );
-            CleanupStack::PopAndDestroy( customMsg );
-        }
-    }*/
 }
 
 // -------------------------------------------------------------------------------------------------
--- a/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#21 %
+// Version : %version: 23 %
 
 
 #include <QApplication>
@@ -24,10 +24,12 @@
 #include <xqpluginloader.h>
 #include <xqplugininfo.h>
 #include <xqserviceutil.h>
+#include <hbview.h>
 
 #include "videoplayerengine.h"
 #include "mpxvideoplaybackwrapper.h"
 #include "videoservices.h"
+#include "mpxvideo_debug.h"
 
 // -------------------------------------------------------------------------------------------------
 // QVideoPlayerEngine()
@@ -36,6 +38,7 @@
 QVideoPlayerEngine::QVideoPlayerEngine(bool isService)
     : mIsService( isService )
     , mEmbedded(false)
+    , mDelayedLoadDone(false)
     , mCurrentViewPlugin( 0 )
     , mPlaybackViewPlugin( 0 )
     , mCollectionViewPlugin( 0 )
@@ -51,6 +54,8 @@
 //
 QVideoPlayerEngine::~QVideoPlayerEngine()
 {
+    MPX_ENTER_EXIT(_L("QVideoPlayerEngine::~QVideoPlayerEngine()"));
+    	
     if ( mVideoServices )
     {
     	mVideoServices->decreaseReferenceCount();
@@ -84,6 +89,7 @@
 //
 void QVideoPlayerEngine::initialize()
 {
+    MPX_ENTER_EXIT(_L("QVideoPlayerEngine::initialize()"));	
     //
     // Clean up QVideoPlayerEngine when qApp try to quit
     //
@@ -121,29 +127,22 @@
     if ( mCollectionViewPlugin ) 
     {
         mCollectionViewPlugin->createView();
+        hbInstance->allMainWindows().value(0)->addView( mCollectionViewPlugin->getView() );
     }
     
-    loadPlugin( MpxHbVideoCommon::PlaybackView );
-
-    if ( mPlaybackViewPlugin ) 
-    {
-        mPlaybackViewPlugin->createView();
-    }
-
-	loadPlugin( MpxHbVideoCommon::VideoDetailsView );
-
-	if ( mFileDetailsViewPlugin )
-	{
-		mFileDetailsViewPlugin->createView();
-	}
-
     //
     // default view in the app is the collection view.
     //
     if(!mIsService)
     {
         activateView( MpxHbVideoCommon::CollectionView );
-    }            
+    } 
+    
+    // delayed initialization of some uiengine member variables
+    // to help application startup time & improve playback start time
+    //
+    mPlaybackWrapper->lateInit();        
+    
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -152,6 +151,8 @@
 //
 void QVideoPlayerEngine::handleCommand( int commandCode )
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::handleCommand()"));	
+	  
     switch ( commandCode )
     {
         case MpxHbVideoCommon::ActivateCollectionView:
@@ -178,14 +179,14 @@
             }
             break;
         }
-        case MpxHbVideoCommon::LoadVideoDetailsView:
+        case MpxHbVideoCommon::DoDelayedLoad:
         {
-			if ( mFileDetailsViewPlugin )
+			if ( !mDelayedLoadDone )
 			{
-				mFileDetailsViewPlugin->createView();
+				doDelayedLoad();
 			}
-			break;
-		}
+            break;
+        }
         
         default:
         {
@@ -195,18 +196,50 @@
 }
 
 // -------------------------------------------------------------------------------------------------
+// doDelayedLoad()
+// -------------------------------------------------------------------------------------------------
+//
+void QVideoPlayerEngine::doDelayedLoad()
+{
+    if ( !mPlaybackViewPlugin )
+	{
+	    loadPlugin( MpxHbVideoCommon::PlaybackView );
+
+	    if ( mPlaybackViewPlugin ) 
+	    {
+	        mPlaybackViewPlugin->createView();
+	        hbInstance->allMainWindows().value(0)->addView( mPlaybackViewPlugin->getView() );
+	    }
+	}
+
+    if ( !mFileDetailsViewPlugin )
+	{
+	    loadPlugin( MpxHbVideoCommon::VideoDetailsView );
+
+		if ( mFileDetailsViewPlugin )
+		{
+			mFileDetailsViewPlugin->createView();
+			hbInstance->allMainWindows().value(0)->addView( mFileDetailsViewPlugin->getView() );
+		}
+	}
+	
+	mDelayedLoadDone = true;
+}
+
+// -------------------------------------------------------------------------------------------------
 // activateView()
 // activate view based on view type.
 // -------------------------------------------------------------------------------------------------
 //
 void QVideoPlayerEngine::activateView( MpxHbVideoCommon::MpxHbVideoViewType viewType )
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::activateView()"));
+	  
     disconnectView();
     
     if ( mCurrentViewPlugin )
     {
         mCurrentViewPlugin->deactivateView();
-        hbInstance->allMainWindows().value(0)->removeView( mCurrentViewPlugin->getView() );
         mCurrentViewPlugin = NULL;
     }
 
@@ -223,12 +256,38 @@
                 mCurrentViewPlugin = mCollectionViewPlugin;
             }
     }
-    else if ( viewType == MpxHbVideoCommon::PlaybackView && mPlaybackViewPlugin ) 
+    else if ( viewType == MpxHbVideoCommon::PlaybackView ) 
     {
+		if(!mPlaybackViewPlugin)
+    	{
+    		loadPlugin( MpxHbVideoCommon::PlaybackView );
+    	    if ( mPlaybackViewPlugin ) 
+    	    {
+    	        mPlaybackViewPlugin->createView();
+    	        hbInstance->allMainWindows().value(0)->addView( mPlaybackViewPlugin->getView() );
+    	    }
+    		else
+    		{
+    			return;
+    		}
+    	}
         mCurrentViewPlugin = mPlaybackViewPlugin;
     }
-    else if ( viewType == MpxHbVideoCommon::VideoDetailsView && mFileDetailsViewPlugin ) 
+    else if ( viewType == MpxHbVideoCommon::VideoDetailsView ) 
     {
+		if(!mFileDetailsViewPlugin)
+    	{
+    		loadPlugin( MpxHbVideoCommon::VideoDetailsView );	
+    		if ( mFileDetailsViewPlugin )
+    		{
+    			mFileDetailsViewPlugin->createView();
+    			hbInstance->allMainWindows().value(0)->addView( mFileDetailsViewPlugin->getView() );
+    		}
+    		else
+    		{
+    			return;
+    		}
+    	}
         mCurrentViewPlugin = mFileDetailsViewPlugin;
     }
     else
@@ -236,8 +295,8 @@
         // invalid plugin activation request, do nothing
         return;
     }
-
-    hbInstance->allMainWindows().value(0)->addView( mCurrentViewPlugin->getView() );
+    
+    hbInstance->allMainWindows().value(0)->setCurrentView( static_cast<HbView*>( mCurrentViewPlugin->getView() ), false );
     connectView();
     mCurrentViewPlugin->activateView();
 }
@@ -248,6 +307,8 @@
 //
 void QVideoPlayerEngine::loadPlugin( MpxHbVideoCommon::MpxHbVideoViewType viewType )
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::loadPlugin()"));
+	  
     int viewTypeUid( 0 );
 
     if ( viewType == MpxHbVideoCommon::CollectionView ) 
@@ -294,6 +355,8 @@
 //
 void QVideoPlayerEngine::connectView()
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::connectView()"));
+	  
     connect( mCurrentViewPlugin,
              SIGNAL( command( int ) ),
              this,
@@ -307,6 +370,8 @@
 //
 void QVideoPlayerEngine::disconnectView()
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::disconnectView()"));
+	  
     if ( mCurrentViewPlugin )
     {
         disconnect( mCurrentViewPlugin,
@@ -322,6 +387,8 @@
 //
 void QVideoPlayerEngine::handleQuit()
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::handleQuit()"));
+	  
     delete this;
 }
 
@@ -332,6 +399,8 @@
 //
 void QVideoPlayerEngine::playMedia( QString filePath )
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::playMedia()")); 
+	  	
     mPlaybackWrapper->playMedia( filePath );
 }
 
@@ -341,6 +410,8 @@
 //
 void QVideoPlayerEngine::setEmbedded()
 {
+	  MPX_ENTER_EXIT(_L("QVideoPlayerEngine::setEmbedded()")); 
+	  
     mEmbedded = true;
 }
 
--- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/src/testvideoplayerengine.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -160,9 +160,9 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
-    QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
     QVERIFY(mTestObject->mPlaybackWrapper != 0);
     QVERIFY(mTestObject->mVideoServices == 0);
     QVERIFY(mTestObject->mIsService == false);
@@ -170,7 +170,6 @@
 
     QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mPlaybackViewPlugin);
     QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mFileDetailsViewPlugin);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != mTestObject->mFileDetailsViewPlugin);
 
     cleanup();
 
@@ -194,9 +193,9 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin == 0);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
-    QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
     QVERIFY(mTestObject->mPlaybackWrapper != 0);
     QVERIFY(mTestObject->mVideoServices != 0);
     QVERIFY(mTestObject->mIsService == true);
@@ -204,7 +203,6 @@
 
     QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mPlaybackViewPlugin);
     QVERIFY(mTestObject->mCollectionViewPlugin != mTestObject->mFileDetailsViewPlugin);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != mTestObject->mFileDetailsViewPlugin);
 
     cleanup();
 
@@ -227,9 +225,9 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
-    QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
     QVERIFY(mTestObject->mVideoServices == 0);
     QVERIFY(mTestObject->mIsService == false);
     QVERIFY(VideoServices::mReferenceCount == 0);
@@ -268,9 +266,9 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin == 0);
-    QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
-    QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
     QVERIFY(mTestObject->mVideoServices != 0);
     QVERIFY(mTestObject->mIsService == true);
     QVERIFY(VideoServices::mReferenceCount == 1);
@@ -313,8 +311,6 @@
     mTestObject->handleCommand(MpxHbVideoCommon::ActivatePlaybackView);
     mTestObject->handleCommand(MpxHbVideoCommon::ActivateVideoDetailsView);
     
-    mTestObject->handleCommand(MpxHbVideoCommon::LoadVideoDetailsView);
-
     QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mFileDetailsViewPlugin);
     QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin == 0);
@@ -343,6 +339,16 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
+    QVERIFY(mTestObject->mCollectionViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
+    QVERIFY(mTestObject->mIsService == false);
+    QVERIFY(VideoServices::mReferenceCount == 0);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin);
+    mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin != 0);
     QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
     QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
@@ -414,8 +420,6 @@
     mTestObject->handleCommand(MpxHbVideoCommon::ActivatePlaybackView);
     mTestObject->handleCommand(MpxHbVideoCommon::ActivateVideoDetailsView);
     
-    mTestObject->handleCommand(MpxHbVideoCommon::LoadVideoDetailsView);
-
     QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mFileDetailsViewPlugin);
     QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin == 0);
@@ -425,6 +429,17 @@
 
     mTestObject->initialize();
 
+
+    QVERIFY(mTestObject->mCurrentViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
+    QVERIFY(mTestObject->mCollectionViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
+    QVERIFY(mTestObject->mIsService == false);
+    QVERIFY(VideoServices::mReferenceCount == 0);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin);
+    mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad);
+
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
     QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
@@ -496,6 +511,16 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
+    QVERIFY(mTestObject->mCollectionViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
+    QVERIFY(mTestObject->mIsService == false);
+    QVERIFY(VideoServices::mReferenceCount == 0);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin);
+    mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin != 0);
     QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
     QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
@@ -575,6 +600,16 @@
     mTestObject->initialize();
 
     QVERIFY(mTestObject->mCurrentViewPlugin == 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
+    QVERIFY(mTestObject->mCollectionViewPlugin == 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
+    QVERIFY(mTestObject->mIsService == false);
+    QVERIFY(VideoServices::mReferenceCount == 0);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin);
+    mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == 0);
     QVERIFY(mTestObject->mPlaybackViewPlugin != 0);
     QVERIFY(mTestObject->mCollectionViewPlugin == 0);
     QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
@@ -663,6 +698,16 @@
     QVERIFY(mTestObject->mCurrentViewPlugin != 0);
     QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
     QVERIFY(mTestObject->mCollectionViewPlugin != 0);
+    QVERIFY(mTestObject->mFileDetailsViewPlugin == 0);
+    QVERIFY(mTestObject->mIsService == false);
+    QVERIFY(VideoServices::mReferenceCount == 0);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin == mTestObject->mCollectionViewPlugin);
+    mTestObject->handleCommand(MpxHbVideoCommon::DoDelayedLoad);
+
+    QVERIFY(mTestObject->mCurrentViewPlugin != 0);
+    QVERIFY(mTestObject->mPlaybackViewPlugin == 0);
+    QVERIFY(mTestObject->mCollectionViewPlugin != 0);
     QVERIFY(mTestObject->mFileDetailsViewPlugin != 0);
     QVERIFY(mTestObject->mIsService == false);
     QVERIFY(VideoServices::mReferenceCount == 0);
@@ -746,8 +791,4 @@
     // all common cleanup here
 }
 
-
 // End of file
-
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbinstance.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* 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:   hbInstance stub class definition
+*
+*/
+
+#ifndef _HBINSTANCE_H
+#define _HBINSTANCE_H
+
+#include <QList>
+
+// Get stubs included before they are searched from /epoc32/include/mw
+#include "stub/inc/mpxviewpluginqt.h"
+#include "stub/inc/xqpluginloader.h"
+#include "stub/inc/xqplugininfo.h"
+#include "stub/inc/hbview.h"
+
+#define hbInstance (HbInstance::instance())
+
+class QGraphicsWidget;
+
+class HbInstance
+{
+public:
+    static HbInstance *instance();
+
+    HbInstance* primaryWindow() const;
+
+    QList<HbInstance *> allMainWindows() const;
+    
+    void removeView( QGraphicsWidget* y );
+
+    void addView( QGraphicsWidget* x );
+    
+    void setCurrentView( HbView* x , bool animation );
+    
+private:
+    HbInstance();
+    ~HbInstance();
+};
+
+#endif // STUBHBINSTANCE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/hbview.h	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  stub hbview
+*
+*/
+
+
+#ifndef HBVIEW_H
+#define HBVIEW_H
+
+#include <QGraphicsWidget>
+
+class HbView : public QGraphicsWidget
+{
+    Q_OBJECT
+
+
+public:
+
+    HbView(QGraphicsItem *parent = 0)
+    {
+        Q_UNUSED(parent);
+    }
+    virtual ~HbView(){}
+
+    
+};
+
+#endif // HBVIEW_H
--- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/inc/mpxvideoplaybackwrapper.h	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#3 %
+// Version : %version: da1mmcf#4 %
 
 
 
@@ -40,6 +40,7 @@
     public:
         void openPlaybackView() ;
         static int GetInstanceCount();
+        void lateInit();
 
     signals:
         void handlePlaybackView( int viewId );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/hbinstance.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Stub-implementation of HbInstance
+*
+*/
+
+#include "stub/inc/hbinstance.h"
+#include <hbmainwindow.h>
+
+bool initialised = false;
+HbInstance* mInstance = 0;
+QList<HbInstance *> mInstances;
+
+HbInstance::HbInstance()
+{
+}
+
+HbInstance::~HbInstance()
+{
+}
+
+HbInstance* HbInstance::instance()
+{
+    if (!initialised)
+    {
+    	mInstance = new HbInstance();  
+    	initialised = true;
+    	mInstances.append(mInstance);
+    }
+    return mInstance;
+}
+
+HbInstance* HbInstance::primaryWindow() const
+{
+	return mInstance;
+}
+
+QList<HbInstance *> HbInstance::allMainWindows() const
+{
+	return mInstances;
+}
+
+void HbInstance::removeView( QGraphicsWidget* )
+{
+}
+
+void HbInstance::addView( QGraphicsWidget* )
+{
+}
+
+void HbInstance::setCurrentView( HbView*, bool animation )
+{
+}
+		
\ No newline at end of file
--- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/stub/src/mpxvideoplaybackwrapper.cpp	Thu Apr 01 23:32:44 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  da1mmcf#3 %
+// Version : %version:  da1mmcf#4 %
 
 
 #include "mpxvideoplaybackwrapper.h"
@@ -60,4 +60,8 @@
     return 0;
 }
 
+void QMpxVideoPlaybackWrapper::lateInit()
+{
+}
+
 // End of File
--- a/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro	Thu Apr 01 23:22:15 2010 +0300
+++ b/videoplayerapp/videoplayerengine/tsrc/testvideoplayerengine/testvideoplayerengine.pro	Thu Apr 01 23:32:44 2010 +0300
@@ -14,7 +14,7 @@
 # Description: Project file for building Videoplayer components
 #
 #
-# Version : %version: 8 %
+# Version : %version: da1mmcf#9 %
 
 
 TEMPLATE = app
@@ -53,6 +53,7 @@
            stub/inc/videoservices.h \
            stub/inc/videoserviceurifetch.h \
            stub/inc/videoserviceplay.h \
+           stub/inc/hbview.h \
            ../../../../inc/videoplayerengine.h
 
 SOURCES += stub/src/mpxvideoplaybackwrapper.cpp \