videocollection/videocollectionview/src/videolistview.cpp
changeset 17 69946d1824c4
parent 15 cf5481c2bc0b
child 20 b9e04db066d4
--- a/videocollection/videocollectionview/src/videolistview.cpp	Fri Apr 16 14:59:52 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistview.cpp	Mon May 03 12:32:50 2010 +0300
@@ -15,8 +15,11 @@
 *
 */
 
+// Version : %version: 97 %
+
+// INCLUDE FILES
 #include <xqserviceutil.h>
-#include <QActionGroup>
+#include <qactiongroup.h>
 #include <hbinstance.h>
 #include <hbmainwindow.h>
 #include <hbmessagebox.h>
@@ -42,32 +45,27 @@
 #include "videosortfilterproxymodel.h"
 #include "videocollectionuiloader.h"
 #include "mpxhbvideocommondefs.h"
-
-// remove these
-#include <QDebug>
+#include "videocollectiontrace.h"
 
 // ---------------------------------------------------------------------------
 // Constructor
 // ---------------------------------------------------------------------------
 //
-VideoListView::VideoListView(VideoCollectionUiLoader *uiLoader, QGraphicsItem *parent) :
-HbView(parent),
-mUiUtils(VideoCollectionViewUtils::instance()),
-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),
-mToolbarCollectionActionGroup(0)
+VideoListView::VideoListView( VideoCollectionUiLoader *uiLoader, QGraphicsItem *parent ) 
+    : HbView( parent )
+    , mUiUtils( VideoCollectionViewUtils::instance() )
+    , mWrapper( VideoCollectionWrapper::instance() )
+    , mUiLoader( uiLoader )
+    , mIsService( false )
+    , mModelReady( false )
+    , mTransitionOngoing( false )
+    , mHintLevel( VideoHintWidget::AllVideos )
+    , mVideoServices( 0 )
+    , mCurrentList( 0 )
+    , mToolbarViewsActionGroup( 0 )
+    , mToolbarCollectionActionGroup( 0 )
 {
-    // NOP
+	FUNC_LOG;
 }
 
 // ---------------------------------------------------------------------------
@@ -76,7 +74,7 @@
 //
 VideoListView::~VideoListView()
 {
-    qDebug() << "VideoListView::~VideoListView()";
+	FUNC_LOG;
     
     toolBar()->clearActions();
     
@@ -96,6 +94,7 @@
 //
 int VideoListView::initializeView()
 {
+	FUNC_LOG;
 	if(!mUiLoader)
 	{
         cleanup();
@@ -104,12 +103,14 @@
 
     if (XQServiceUtil::isService() && !mVideoServices)
     {
-    	mIsService = true;
+        INFO("VideoListView::initializeView() service flag set to true.");
+        mIsService = true;
 
     	mVideoServices = VideoServices::instance();
 
     	if (!mVideoServices)
         {
+    	    ERROR(-1, "VideoListView::initializeView() getting services instance failed.");
             cleanup();
         	return -1;
 		}
@@ -119,49 +120,104 @@
         }
 	}
     
-    // start open all videos model
-    VideoSortFilterProxyModel *model =
-        mWrapper.getModel(VideoCollectionWrapper::EAllVideos);
-    if (model)
-    {
-        model->open(VideoCollectionCommon::ELevelVideos);
-    }
-    else
-    {
-        cleanup();
-        return -1;
-    }
+    // start loading objects and widgets
+    QList<VideoCollectionUiLoaderParam> params;
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_VIDEOLISTWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhasePrimary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_OPTIONS_MENU,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhasePrimary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_ADD_TO_COLLECTION,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_CREATE_COLLECTION,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_DELETE_MULTIPLE,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_HEADINGBANNER,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_SORT_MENU,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_SORT_BY_DATE,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_SORT_BY_NAME,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_SORT_BY_SIZE,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        false,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_COLLECTIONWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_COLLECTIONCONTENTWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary)); // widget
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_DIALOG,
+        DOCML_VIDEOSELECTIONDIALOG_FILE,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_VC_VIDEOHINTWIDGET,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_HINT_BUTTON,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    params.append(VideoCollectionUiLoaderParam(
+        DOCML_NAME_NO_VIDEOS_LABEL,
+        DOCML_VIDEOCOLLECTIONVIEW_FILE,
+        DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT,
+        true,
+        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
+    mUiLoader->addData(params,
+        this,
+        SLOT(objectReadySlot(QObject*, const QString&)));
+    mUiLoader->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary);
+    params.clear();
     
-    // start loading widgets
-    QSet<QString> uiItems;
-    uiItems.insert(DOCML_NAME_VC_VIDEOLISTWIDGET);
-    uiItems.insert(DOCML_NAME_VC_HEADINGBANNER);
-    uiItems.insert(DOCML_NAME_OPTIONS_MENU);
-    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_RATING);
-    uiItems.insert(DOCML_NAME_SORT_BY_SIZE);
-    mUiLoader->startLoading(uiItems,
-        this,
-        SLOT(widgetReadySlot(QGraphicsWidget*, const QString&)),
-        SLOT(objectReadySlot(QObject*, const QString&)));
-    uiItems.clear();
-    
-    // TODO: create toolbar temporarily here until it has been moved to docml
-    if (createToolbar() != 0)
-    {
-        cleanup();
-        return -1;
-    }
-
     return 0;
 }
 
@@ -171,6 +227,7 @@
 //
 void VideoListView::titleReadySlot(const QString& title)
 {
+	FUNC_LOG;
 	setTitle(title);
 }
 
@@ -178,119 +235,51 @@
 // activateView()
 // ---------------------------------------------------------------------------
 //
-int VideoListView::activateView()
+int VideoListView::activateView(const TMPXItemId &itemId)
 {
-    VideoListWidget *videoList =
-        mUiLoader->findWidget<VideoListWidget>(
-            DOCML_NAME_VC_VIDEOLISTWIDGET);
-    if (videoList)
+	FUNC_LOG;
+
+    int err = 0;
+    
+    // activate collection to correct view
+    if (itemId == TMPXItemId::InvalidId())
     {
-    	VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
-        if (mCurrentList)
-        {
-        	level = mCurrentList->getLevel();
-        }
-        else
-        {
-        	mCurrentList = videoList;
-        }
-        
-    	int result = mCurrentList->activate(level);
-        if(result < 0)
-        {
-            // activate failed, deactivate view so we get rid of dangling connections.
-            deactivateView();
-            return -1;
-        }
-        
-        HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
-        if (mainWnd)
-        {
-        mainWnd->setOrientation(Qt::Vertical, false);
-            if(!connect(
-                    mainWnd, SIGNAL(aboutToChangeOrientation()),
-                    this, SLOT( aboutToChangeOrientationSlot())) ||
-               !connect(
-                   mainWnd, SIGNAL(orientationChanged(Qt::Orientation)),
-                   this, SLOT(orientationChangedSlot(Qt::Orientation))) ||
-               !connect(
-                   &mWrapper, SIGNAL(asyncStatus(int, QVariant&)),
-                   this, SLOT(handleAsyncStatusSlot(int, QVariant&))) ||
-               !connect(
-                   mCurrentList->getModel().sourceModel(), SIGNAL(modelChanged()),
-                   this, SLOT(layoutChangedSlot())) ||
-               !connect(
-                   mCurrentList->getModel().sourceModel(), SIGNAL(modelReady()),
-                   this, SLOT(modelReadySlot())))
-            {
-                // deactivate view so we get rid of dangling connections.
-                deactivateView();
-                return -1;
-            }
-        }
-        else
-        {
-            return -1;
-        }
+        err = activateVideosView();
     }
     else
     {
-        return -1;
+        err = activateCollectionContentView(itemId);
     }
     
-    return 0;
-}
-
-
-// ---------------------------------------------------------------------------
-// loadMultiSelection
-// ---------------------------------------------------------------------------
-//
-void VideoListView::loadMultiSelection()
-{
-	if(!mIsService)
+    // connect signals if everything went ok
+    if (err == 0)
     {
-		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;
-		}
+        HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
+        mainWnd->setOrientation(Qt::Vertical, false);
+        if (!connect(
+                mainWnd, SIGNAL(aboutToChangeOrientation()),
+                this, SLOT( aboutToChangeOrientationSlot())) ||
+            !connect(
+                mainWnd, SIGNAL(orientationChanged(Qt::Orientation)),
+                this, SLOT(orientationChangedSlot(Qt::Orientation))) ||
+            !connect(
+                &mWrapper, SIGNAL(asyncStatus(int, QVariant&)),
+                this, SLOT(handleAsyncStatusSlot(int, QVariant&))) ||
+            !connect(
+                mCurrentList->getModel().sourceModel(), SIGNAL(modelChanged()),
+                this, SLOT(layoutChangedSlot())) ||
+            !connect(
+                mCurrentList->getModel().sourceModel(), SIGNAL(modelReady()),
+                this, SLOT(modelReadySlot())))
+        {
+            ERROR(-1, "VideoListView::activateView() failed to connect signals.");
+            // deactivate view so we get rid of dangling connections.
+            deactivateView();
+            err = -1;
+        }
     }
-}
-
-// ---------------------------------------------------------------------------
-// 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;
-	}
+    
+    return err;
 }
 
 // ---------------------------------------------------------------------------
@@ -299,9 +288,8 @@
 //
 void VideoListView::doDelayedsSlot()
 {
-	loadLists(true);
-	loadMultiSelection();
-	loadHint(true);
+	FUNC_LOG;
+    mUiLoader->loadPhase(VideoCollectionUiLoaderParam::LoadPhaseSecondary);
 	emit doDelayeds();
 }
 
@@ -311,6 +299,7 @@
 //
 void VideoListView::modelReadySlot()
 {
+	FUNC_LOG;
     mModelReady = true;
     
     // since the reset signal arrives after
@@ -325,6 +314,7 @@
 //
 void VideoListView::layoutChangedSlot()
 {
+	FUNC_LOG;
     updateSubLabel();
     
     if(mModelReady)
@@ -339,6 +329,7 @@
 //
 void VideoListView::deactivateView()
 {
+	FUNC_LOG;
     HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
     
     mainWnd->unsetOrientation();
@@ -382,7 +373,7 @@
 //
 void VideoListView::back()
 {
-    // NOP
+	FUNC_LOG;
 }
 
 // ---------------------------------------------------------------------------
@@ -391,6 +382,7 @@
 //
 void VideoListView::cleanup()
 {
+	FUNC_LOG;
     delete mToolbarViewsActionGroup;
     mToolbarViewsActionGroup = 0;
 
@@ -407,6 +399,7 @@
 //
 int VideoListView::createToolbar()
 {
+	FUNC_LOG;
     // Create actiongroup and add all actions to it. This ensures that only one is
     // active at certain moment.
 
@@ -415,17 +408,6 @@
     	mToolbarViewsActionGroup = new QActionGroup(this);
         mToolbarCollectionActionGroup = new QActionGroup(this);
 
-        if(!mToolbarViewsActionGroup || !mToolbarCollectionActionGroup)
-        {
-            delete mToolbarViewsActionGroup;
-            mToolbarViewsActionGroup = 0;
-
-            delete mToolbarCollectionActionGroup;
-            mToolbarCollectionActionGroup = 0;
-
-            return -1;
-        }
-
         // create toolbar item actions
 
         // All Videos tab
@@ -448,7 +430,7 @@
 
 			// Remove Videos tab
 			mToolbarActions[ETBActionRemoveVideos] = 
-			        createAction(":/images/qtg_mono_remove_from_video_collection.svg",
+			        createAction("qtg_mono_remove_from_video_collection",
 					mToolbarCollectionActionGroup, SLOT(removeVideosFromCollectionSlot()));
         }
 
@@ -457,10 +439,11 @@
         if(   !bar
 		   || !mToolbarActions[ETBActionAllVideos]
            || !mToolbarActions[ETBActionCollections]
-           || (!mToolbarActions[ETBActionServices]     && !mIsService)
-           || (!mToolbarActions[ETBActionAddVideos]    && !mIsService)
-           || (!mToolbarActions[ETBActionRemoveVideos] && !mIsService))
+           || ( !mIsService && (!mToolbarActions[ETBActionServices] 
+              || !mToolbarActions[ETBActionAddVideos]
+              || !mToolbarActions[ETBActionRemoveVideos])))
         {
+            ERROR(-1, "VideoListView::createToolbar() failed to create all actions or the toolbar.");
         	delete mToolbarActions[ETBActionAllVideos];
             delete mToolbarActions[ETBActionCollections];
             delete mToolbarActions[ETBActionServices];
@@ -482,7 +465,6 @@
         mToolbarActions[ETBActionAllVideos]->setChecked(true);
 
         bar->addActions(mToolbarViewsActionGroup->actions());
-        bar->setVisible(true);
     }
 
     return 0;
@@ -495,10 +477,8 @@
 HbAction* VideoListView::createAction(QString icon,
         QActionGroup* actionGroup, const char *slot)
 {
+	FUNC_LOG;
     HbAction* action = new HbAction(actionGroup);
-    if(!action) {
-        return 0;
-    }
 
     HbIcon hbIcon(icon);
     action->setIcon(hbIcon);
@@ -514,125 +494,83 @@
 }
 
 // ---------------------------------------------------------------------------
-// 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
 // ---------------------------------------------------------------------------
 //
 void VideoListView::showHint(bool show)
 {
+	FUNC_LOG;
     if(!mCurrentList)
     {
         return;
     }
 
     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);
-    }
-
+    
+    // prepare hint widget
     VideoHintWidget *hintWidget =
         mUiLoader->findWidget<VideoHintWidget>(
             DOCML_NAME_VC_VIDEOHINTWIDGET);
-
     if (hintWidget)
     {
         hintWidget->setLevel(mHintLevel);
-    }
-
-    if (mModelReady &&
-        model.rowCount() == 0 &&
-        hintWidget)
-    {
-        show ? hintWidget->activate() : hintWidget->deactivate();
-    }
-    else if (hintWidget)
-    {
-        show = false;
-        hintWidget->deactivate();
-    }
-
-    if(show && mToolbarViewsActionGroup && mToolbarCollectionActionGroup) 
-    {
-    	if(!mIsService)
-    	{
-    		mToolbarActions[ETBActionRemoveVideos]->setVisible(false);
-    	}
-        if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl) 
+        if (mModelReady &&
+            model.rowCount() == 0)
+        {
+            show ? hintWidget->activate() : hintWidget->deactivate();
+        }
+        else
         {
-        	if(!mIsService)
-        	{
-        		mToolbarActions[ETBActionAddVideos]->setVisible(false);
-        	}
-       		hintWidget->setButtonShown(false);
-        } 
-        else 
+            show = false;
+            hintWidget->deactivate();
+        }
+        if(show)
+        {
+            bool showHintBtns = (mCurrentList->getLevel() != VideoCollectionCommon::ELevelDefaultColl); 
+            hintWidget->setButtonShown(showHintBtns);
+        }
+        else
         {
             hintWidget->setButtonShown(true);
         }
-    } 
-    else if(mToolbarViewsActionGroup && mToolbarCollectionActionGroup)
+    }
+
+    if (mToolbarViewsActionGroup && mToolbarCollectionActionGroup && !mIsService)
     {
-    	if(!mIsService)
-    	{
-			if(mToolbarActions[ETBActionRemoveVideos]->isVisible() == false) 
-			{
-				mToolbarActions[ETBActionRemoveVideos]->setVisible(true);
-			}
-	        if(mToolbarActions[ETBActionAddVideos]->isVisible() == false) 
-	        {
-	            mToolbarActions[ETBActionAddVideos]->setVisible(true);
-	        }
-    	}
-        hintWidget->setButtonShown(true);
+        if (show)
+        {
+            mToolbarActions[ETBActionRemoveVideos]->setVisible(false);
+
+            if(mCurrentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl) 
+            {
+                mToolbarActions[ETBActionAddVideos]->setVisible(false);
+            } 
+        }
+        else
+        {
+            if(mToolbarActions[ETBActionRemoveVideos]->isVisible() == false)
+            {
+                mToolbarActions[ETBActionRemoveVideos]->setVisible(true);
+            }
+            if(mToolbarActions[ETBActionAddVideos]->isVisible() == false) 
+            {
+                mToolbarActions[ETBActionAddVideos]->setVisible(true);
+            }
+        }
     }
-    
+
+    // prepare sublabel
+    HbGroupBox *subLabel =
+        mUiLoader->findWidget<HbGroupBox>(
+            DOCML_NAME_VC_HEADINGBANNER);
     if (subLabel)
     {
         if (show &&
-            subLabel->isVisible() &&
             mCurrentList->getLevel() == VideoCollectionCommon::ELevelVideos)
         {
             subLabel->hide();
         }
-        else if (!subLabel->isVisible())
+        else
         {
             subLabel->show();
         }
@@ -645,6 +583,7 @@
 //
 void VideoListView::setHintLevel(VideoHintWidget::HintLevel level)
 {
+	FUNC_LOG;
 	mHintLevel = level;
 }
 
@@ -654,6 +593,7 @@
 //
 void VideoListView::updateSubLabel()
 {
+	FUNC_LOG;
     VideoSortFilterProxyModel *model = 0;
     if(mCurrentList)
     {
@@ -663,33 +603,27 @@
     if (model)
     {
         int itemCount = model->rowCount();
-        VideoListWidget *videoListWidget =
-            mUiLoader->findWidget<VideoListWidget>(
-                DOCML_NAME_VC_VIDEOLISTWIDGET);
-        
-        VideoListWidget *collectionWidget =
-            mUiLoader->findWidget<VideoListWidget>(
-                DOCML_NAME_VC_COLLECTIONWIDGET);
-        
-        VideoListWidget *collectionContentWidget =
-            mUiLoader->findWidget<VideoListWidget>(
-                DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
         
         HbGroupBox *subLabel = 
             mUiLoader->findWidget<HbGroupBox>(
                 DOCML_NAME_VC_HEADINGBANNER);
 
-        if(subLabel)
+        if(subLabel && mCurrentList)
         {
-			if (mCurrentList == videoListWidget)
+			if (mCurrentList->getLevel() == VideoCollectionCommon::ELevelVideos)
 			{
-				subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount));
+			    // no need to update sublabel if there are no items in videolist
+			    // hint widget is shown instead
+			    if (itemCount)
+			    {
+	                subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_videos", itemCount));
+			    }
 			}
-			else if (mCurrentList == collectionWidget)
+			else if (mCurrentList->getLevel() == VideoCollectionCommon::ELevelCategory)
 			{
 				subLabel->setHeading(hbTrId("txt_videos_subtitle_ln_collections", itemCount));
 			}
-			else if(mCurrentList == collectionContentWidget)
+			else
 			{
 				subLabel->setHeading(hbTrId("txt_videos_subtitle_1_l2").arg(mCollectionName).arg(itemCount));
 			}
@@ -703,6 +637,7 @@
 //
 void VideoListView::showAction(bool show, const QString &name)
 {
+	FUNC_LOG;
     HbAction *action = mUiLoader->findObject<HbAction>(name);
     if (!action)
     {
@@ -722,55 +657,130 @@
 }
 
 // ---------------------------------------------------------------------------
-// isActionChecked()
+// activateVideosView()
 // ---------------------------------------------------------------------------
 //
-bool VideoListView::isActionChecked(const QString &name)
+int VideoListView::activateVideosView()
 {
-    bool isChecked = false;
-    
-    HbAction *action = mUiLoader->findObject<HbAction>(name);
-    if (!action)
+    FUNC_LOG;
+    VideoListWidget *videoList =
+        mUiLoader->findWidget<VideoListWidget>(
+            DOCML_NAME_VC_VIDEOLISTWIDGET);
+    if (videoList)
     {
-        // must be menu widget
-        HbMenu *menu = mUiLoader->findWidget<HbMenu>(name);
-        if (menu)
+        VideoCollectionCommon::TCollectionLevels level = VideoCollectionCommon::ELevelVideos;
+        if (mCurrentList)
+        {
+            level = mCurrentList->getLevel();
+        }
+        else
         {
-            action = menu->menuAction();
+            mCurrentList = videoList;
+        }
+        
+        int result = mCurrentList->activate(level);
+        if(result < 0)
+        {
+            ERROR(result, "VideoListView::activateVideosView() failed to activate.");
+            // activate failed, deactivate view so we get rid of dangling connections.
+            deactivateView();
+            return -1;
+        }
+        
+        if (createToolbar() != 0)
+        {
+            ERROR(result, "VideoListView::activateVideosView() failed to create toolbar.");
+            deactivateView();
+            return -1;
         }
     }
-
-    // check if action is checked
-    if (action)
+    else
     {
-        isChecked = action->isChecked();
+        return -1;
     }
     
-    return isChecked;
+    return 0;
 }
 
 // ---------------------------------------------------------------------------
-// isActionChecked()
+// activateCollectionContentView()
 // ---------------------------------------------------------------------------
 //
-void VideoListView::setActionChecked(bool setChecked, const QString &name)
+int VideoListView::activateCollectionContentView(const TMPXItemId &itemId)
 {
-    HbAction *action = mUiLoader->findObject<HbAction>(name);
-    if (!action)
+    FUNC_LOG;
+    int err = 0;
+    
+    if (itemId.iId2 == KVcxMvcMediaTypeCategory ||
+        itemId.iId2 == KVcxMvcMediaTypeAlbum)
     {
-        // must be menu widget
-        HbMenu *menu = mUiLoader->findWidget<HbMenu>(name);
-        if (menu)
+        // currently only captured and downloaded categories are supported
+        switch (itemId.iId1)
         {
-            action = menu->menuAction();
+            case KVcxMvcCategoryIdDownloads:
+            case KVcxMvcCategoryIdCaptured:
+            {
+                VideoListWidget *collectionContentWidget =
+                    mUiLoader->findWidget<VideoListWidget>(
+                        DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
+                if (collectionContentWidget)
+                {
+                    // no need to deactivate since there cannot be previous widget
+                    mCurrentList = collectionContentWidget;
+                    
+                    // hide toolbar
+                    HbToolBar *toolBar = this->toolBar();
+                    if (toolBar)
+                    {
+                        toolBar->hide();
+                    }
+                    
+                    // resolve collection name
+                    if (itemId.iId1 == KVcxMvcCategoryIdDownloads)
+                    {
+                        mCollectionName = hbTrId("txt_videos_dblist_downloaded");
+                    }
+                    else if (itemId.iId1 == KVcxMvcCategoryIdCaptured)
+                    {
+                        mCollectionName = hbTrId("txt_videos_dblist_captured");
+                    }
+                    
+                    // activate collection content widget
+                    mCurrentList->activate(VideoCollectionCommon::ELevelDefaultColl);
+                    
+                    // open the model
+                    VideoSortFilterProxyModel &model = mCurrentList->getModel();
+                    model.openItem(itemId);
+                    
+                    // sort model
+                    model.doSorting(VideoCollectionCommon::KeyDateTime, Qt::AscendingOrder);
+                    
+                    // set hint level to collections
+                    setHintLevel(VideoHintWidget::Collection);
+                }
+                else
+                {
+                    ERROR(-1, "VideoListView::activateVideosView() failed to get collection content widget.");
+                    err = -1;
+                }
+                break;
+            }
+            default:
+            {
+                // by default open videos view
+                err = activateVideosView();
+                break;
+            }
         }
+        
+    }
+    else
+    {
+        // open videos view
+        err = activateVideosView();
     }
 
-    // update action check state
-    if (action)
-    {
-        action->setChecked(setChecked);
-    }
+    return err;
 }
 
 // ---------------------------------------------------------------------------
@@ -779,11 +789,7 @@
 //
 void VideoListView::openAllVideosViewSlot()
 {
-	if(!mListsLoaded)
-	{
-		loadLists(false);
-	}
-
+	FUNC_LOG;
     VideoListWidget *videoListWidget =
         mUiLoader->findWidget<VideoListWidget>(
             DOCML_NAME_VC_VIDEOLISTWIDGET);
@@ -813,11 +819,7 @@
 //
 void VideoListView::openCollectionViewSlot()
 {
-	if(!mListsLoaded)
-	{
-		loadLists(false);
-	}
-
+	FUNC_LOG;
     VideoListWidget *collectionWidget =
         mUiLoader->findWidget<VideoListWidget>(
             DOCML_NAME_VC_COLLECTIONWIDGET);
@@ -833,7 +835,8 @@
         mCurrentList->activate(VideoCollectionCommon::ELevelCategory);
         
         VideoSortFilterProxyModel &model = mCurrentList->getModel(); 
-        VideoCollectionViewUtils::sortModel(&model, false);
+
+        VideoCollectionViewUtils::sortModel(&model, false, mCurrentList->getLevel());
 
         // the collection view is not empty, so we can hide the hint in advance.
         showHint(false);
@@ -848,6 +851,7 @@
     int start,
     int end)
 {
+	FUNC_LOG;
     Q_UNUSED(end);
     if(!mCurrentList)
     {
@@ -875,6 +879,7 @@
 //
 void VideoListView::openServicesViewSlot()
 {
+	FUNC_LOG;
     debugNotImplementedYet();
 }
 
@@ -884,17 +889,23 @@
 //
 void VideoListView::startSorting()
 {
+	FUNC_LOG;
     HbMenu *optionsMenu =
         mUiLoader->findWidget<HbMenu>(
             DOCML_NAME_OPTIONS_MENU);
-    if (optionsMenu)
+    if (optionsMenu && mCurrentList)
     {
         // get sorting role from active action
-        HbAction *action = optionsMenu->activeAction()->menu()->activeAction();
-        if(action)
-		{
-			doSorting(mSortingRoles[action]);
-		}
+        HbAction* action = optionsMenu->activeAction();
+        HbMenu* sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
+        if(action == sortMenu->menuAction()) // make sure that active action is the sort menu. 
+        {
+            HbAction* action = sortMenu->activeAction();
+            if(action)
+            {
+                doSorting(mSortingRoles[action]);
+            }
+        }
     }
 }
 
@@ -904,6 +915,7 @@
 //
 void VideoListView::doSorting(int role)
 {
+	FUNC_LOG;
 	// sort model
 	Qt::SortOrder order(Qt::AscendingOrder);
 	VideoSortFilterProxyModel &model = mCurrentList->getModel();
@@ -913,8 +925,13 @@
 	}
 	model.doSorting(role, order);
 
+	if (mCurrentList == mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET))
+	{
+		mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET)->getModel().doSorting(role, order);	
+	}
+
 	// save sorting values
-	mUiUtils.saveSortingValues(role, order);
+	mUiUtils.saveSortingValues(role, order, mCurrentList->getLevel());
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -924,6 +941,7 @@
 //
 void VideoListView::aboutToChangeOrientationSlot()
 {
+	FUNC_LOG;
     // this method is required for changing from to mediawall
 }
 
@@ -934,6 +952,7 @@
 //
 void VideoListView::orientationChangedSlot( Qt::Orientation orientation )
 {
+	FUNC_LOG;
     // this method is required for changing from to mediawall
     
     // in landscape we need to hide the title and the toolbar. (also required for the mediawall?)
@@ -947,16 +966,12 @@
 //
 void VideoListView::deleteItemsSlot()
 {
+	FUNC_LOG;
     if(!mCurrentList)
     {
         return;
     }
 
-    if(!mMultiselectionLoaded)
-    {
-    	loadMultiSelection();
-    }
-
     VideoListSelectionDialog *dialog =
         mUiLoader->findWidget<VideoListSelectionDialog>(
             DOCML_NAME_DIALOG);
@@ -974,13 +989,13 @@
 //
 void VideoListView::createCollectionSlot()
 {
+	FUNC_LOG;
     if(!mCurrentList)
     {
         return;
     }
     
     VideoSortFilterProxyModel &model = mCurrentList->getModel();
-
     
     bool ok = false;
     // query a name for the collection
@@ -1010,16 +1025,12 @@
 //
 void VideoListView::addVideosToCollectionSlot()
 {
+	FUNC_LOG;
     if(!mCurrentList)
     {
         return;
     }
 
-    if(!mMultiselectionLoaded)
-    {
-    	loadMultiSelection();
-    }
-
     VideoListSelectionDialog *dialog =
         mUiLoader->findWidget<VideoListSelectionDialog>(
             DOCML_NAME_DIALOG);
@@ -1061,6 +1072,7 @@
 //
 void VideoListView::removeVideosFromCollectionSlot()
 {
+	FUNC_LOG;
     if(!mCurrentList)
     {
         return;
@@ -1073,17 +1085,12 @@
         return;
     }
 
-    if(!mMultiselectionLoaded)
-    {
-    	loadMultiSelection();
-    }
-
     VideoListSelectionDialog *dialog =
             mUiLoader->findWidget<VideoListSelectionDialog>(
                         DOCML_NAME_DIALOG);
     if (!dialog)
     {
-        // fatal: no selection dialog
+        ERROR(-1, "VideoListView::removeVideosFromCollectionSlot() failed to load selection dialog.");
         return;
     }
     TMPXItemId collectionId = mCurrentList->getModel().getOpenItem();
@@ -1100,6 +1107,14 @@
 //
 void VideoListView::aboutToShowMainMenuSlot()
 {
+    if (mIsService &&
+        mVideoServices &&
+        mVideoServices->currentService() == VideoServices::EBrowse)
+    {
+        prepareBrowseServiceMenu();
+        return;
+    }
+    
 	if (!mCurrentList ||
 	    !mToolbarViewsActionGroup ||
 	    !mToolbarCollectionActionGroup)
@@ -1114,12 +1129,11 @@
     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_RATING);
     showAction(false, DOCML_NAME_SORT_BY_SIZE);
     showAction(false, DOCML_NAME_SORT_MENU);
     
     VideoSortFilterProxyModel &model = mCurrentList->getModel();
-    if (!model.rowCount(QModelIndex()))
+    if (!model.rowCount())
     {
         return;
     }
@@ -1135,25 +1149,17 @@
        firstAction == mToolbarActions[ETBActionAllVideos])
     {
         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);
 
+        HbAction* action = mSortingRoles.key(role);
+		if (action)
+		{
+			action->setChecked(true);
+		}
+
         if (!mIsService)
         {
             showAction(true, DOCML_NAME_ADD_TO_COLLECTION);
@@ -1169,47 +1175,27 @@
         }
         showAction(true, DOCML_NAME_SORT_MENU);
         showAction(true, DOCML_NAME_SORT_BY_NAME);
+        showAction(true, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
     	
-        if (isActionChecked(DOCML_NAME_SORT_BY_DATE) ||
-            isActionChecked(DOCML_NAME_SORT_BY_SIZE))
-    	{
-            //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
-            setActionChecked(true, DOCML_NAME_SORT_BY_NAME);
-    	}
-        else
-        {
-            HbAction* action = mSortingRoles.key(role);
-            if (action)
-            {
-                action->setChecked(true);
-            }
-        }
-        
-        showAction(true, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
+		HbAction* action = mSortingRoles.key(role);
+		if (action)
+		{
+			action->setChecked(true);
+		}
     }
     else if(firstAction != mToolbarActions[ETBActionAllVideos])
     {
         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);
 
+        HbAction* action = mSortingRoles.key(role);
+		if (action)
+		{
+			action->setChecked(true);
+		}
+
         if (!mIsService)
         {
             showAction(true, DOCML_NAME_DELETE_MULTIPLE);
@@ -1218,11 +1204,59 @@
 }
 
 // -------------------------------------------------------------------------------------------------
+// prepareBrowseServiceMenu
+// -------------------------------------------------------------------------------------------------
+//
+void VideoListView::prepareBrowseServiceMenu()
+{
+    if (!mCurrentList)
+    {
+        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_SIZE);
+    showAction(false, DOCML_NAME_SORT_MENU);
+    
+    VideoSortFilterProxyModel &model = mCurrentList->getModel();
+    if (!model.rowCount())
+    {
+        return;
+    }
+    
+    // show delete action
+    showAction(true, DOCML_NAME_DELETE_MULTIPLE);
+    
+    // show sort 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);
+    
+    // set current sort action selected
+    int role;
+    Qt::SortOrder order;
+    model.getSorting(role, order);
+    HbAction* action = mSortingRoles.key(role);
+    if (action)
+    {
+        action->setChecked(true);
+    }
+}
+
+// -------------------------------------------------------------------------------------------------
 // handleAsyncStatusSlot
 // -------------------------------------------------------------------------------------------------
 //
 void VideoListView::handleAsyncStatusSlot(int statusCode, QVariant &additional)
 {
+	FUNC_LOG;
     // show msg from status
     mUiUtils.showStatusMsgSlot(statusCode, additional);
 }
@@ -1235,6 +1269,7 @@
     const QString& collection,
     const QModelIndex &index)
 {
+	FUNC_LOG;
 	if(mTransitionOngoing)
 	{
 		return;
@@ -1244,11 +1279,8 @@
 	    // clear toolbar actions.
 	    toolBar()->clearActions();
 	}
-	
-    // update collection specific information
-    mCollectionName = collection;
 
-    if(collectionOpened)
+	if(collectionOpened)
     {
         if(!index.isValid())
         {   
@@ -1260,43 +1292,46 @@
             mUiLoader->findWidget<VideoListWidget>(
                 DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
         
-        if (mCurrentList &&
-            mCurrentList != collectionContentWidget)
+        if (!mCurrentList || mCurrentList == collectionContentWidget)
+        {
+            // no currentlist or currentlist is already list 
+            // we're about to transit
+            return;
+        }
+
+        // get item id before deactivating
+        TMPXItemId itemId = TMPXItemId::InvalidId();
+        itemId = mCurrentList->getModel().getMediaIdAtIndex(index);
+        
+        // only category or album can be activated here
+        if(itemId == TMPXItemId::InvalidId() ||
+           (itemId.iId2 != KVcxMvcMediaTypeCategory && 
+            itemId.iId2 != KVcxMvcMediaTypeAlbum))
         {
-            // get item id before deactivating
-            TMPXItemId itemId = TMPXItemId::InvalidId();
-            itemId = mCurrentList->getModel().getMediaIdAtIndex(index);
-            
-            // only category or album can be activated here
-            if(itemId == TMPXItemId::InvalidId() ||
-               (itemId.iId2 != KVcxMvcMediaTypeCategory && 
-                itemId.iId2 != KVcxMvcMediaTypeAlbum))
-            {
-                return;
-            }
-            
-            // Send level that is opened with the effect.
-            QVariant nextLevel;
-            if(itemId.iId2 ==  KVcxMvcMediaTypeCategory)
-            {
-                nextLevel = QVariant(VideoCollectionCommon::ELevelDefaultColl);
-            }
-            else if(itemId.iId2 == KVcxMvcMediaTypeAlbum)
-            {
-                nextLevel = QVariant(VideoCollectionCommon::ELevelAlbum);
-            }            
-            
-            // Start fetching content.
-            collectionContentWidget->getModel().openItem(itemId);
-            
-            HbEffect::start(collectionContentWidget,
-                            EFFECT_SLIDE_IN_TO_LEFT,
-                            this,
-                            "finishCollectionOpenedSlot",
-                            nextLevel);
-            
-            mTransitionOngoing = true;
+            return;
+        }
+        
+        // Send level that is opened with the effect.
+        QVariant nextLevel;
+        if(itemId.iId2 ==  KVcxMvcMediaTypeCategory)
+        {
+            nextLevel = QVariant(VideoCollectionCommon::ELevelDefaultColl);
         }
+        else if(itemId.iId2 == KVcxMvcMediaTypeAlbum)
+        {
+            nextLevel = QVariant(VideoCollectionCommon::ELevelAlbum);
+        }            
+        
+        // Start fetching content.
+        collectionContentWidget->getModel().openItem(itemId);
+        
+        HbEffect::start(collectionContentWidget,
+                        EFFECT_SLIDE_IN_TO_LEFT,
+                        this,
+                        "finishCollectionOpenedSlot",
+                        nextLevel);
+        
+        mTransitionOngoing = true;
     }
     else
     {
@@ -1312,6 +1347,8 @@
         
         mTransitionOngoing = true;
     }
+	// update collection specific information
+	mCollectionName = collection;
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -1320,6 +1357,7 @@
 //
 void VideoListView::finishCollectionOpenedSlot(const HbEffect::EffectStatus &status)
 {
+	FUNC_LOG;
     Q_UNUSED(status);
     
     mTransitionOngoing = false;
@@ -1340,8 +1378,11 @@
 
     VideoCollectionCommon::TCollectionLevels level =
             static_cast<VideoCollectionCommon::TCollectionLevels>(status.userData.toInt());
-    mCurrentList->activate(level);
-    
+	mCurrentList->activate(level);
+
+    VideoCollectionViewUtils::sortModel(&mCurrentList->getModel(), false, VideoCollectionCommon::ELevelVideos);
+    mCurrentList->getModel().invalidate();
+
     // update hint widget
     setHintLevel(VideoHintWidget::Collection);
     showHint();
@@ -1361,6 +1402,7 @@
 //
 void VideoListView::finishCollectionClosedSlot(const HbEffect::EffectStatus &status)
 {
+	FUNC_LOG;
     Q_UNUSED(status);
     
     mTransitionOngoing = false;
@@ -1377,51 +1419,44 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-// widgetReadySlot
+// objectReadySlot
 // -------------------------------------------------------------------------------------------------
 //
-void VideoListView::widgetReadySlot(QGraphicsWidget *widget, const QString &name)
+void VideoListView::objectReadySlot(QObject *object, const QString &name)
 {
+	FUNC_LOG;
     if (name.compare(DOCML_NAME_VC_VIDEOLISTWIDGET) == 0)
     {
-        connect(widget, SIGNAL(command(int)), this, SIGNAL(command(int)));
-        connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
+        connect(object, SIGNAL(command(int)), this, SIGNAL(command(int)));
+        connect(this, SIGNAL(doDelayeds()), object, SLOT(doDelayedsSlot()));
     }
     else if (name.compare(DOCML_NAME_VC_COLLECTIONWIDGET) == 0)
     {
         connect(
-            widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
+            object, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
             this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
-            connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
+            connect(this, SIGNAL(doDelayeds()), object, SLOT(doDelayedsSlot()));
             emit(doDelayeds());
     }
     else if (name.compare(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET) == 0)
     {
-        connect(widget, SIGNAL(command(int)), this, SIGNAL(command(int)));
+        connect(object, SIGNAL(command(int)), this, SIGNAL(command(int)));
         connect(
-            widget, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
+            object, SIGNAL(collectionOpened(bool, const QString&, const QModelIndex&)),
             this, SLOT(collectionOpenedSlot(bool, const QString&, const QModelIndex&)));
-            connect(this, SIGNAL(doDelayeds()), widget, SLOT(doDelayedsSlot()));
+            connect(this, SIGNAL(doDelayeds()), object, SLOT(doDelayedsSlot()));
             emit(doDelayeds());
     }
     else if (name.compare(DOCML_NAME_OPTIONS_MENU) == 0)
     {
         connect(
-            widget, SIGNAL(aboutToShow()), this, SLOT(aboutToShowMainMenuSlot()));
+            object, SIGNAL(aboutToShow()), this, SLOT(aboutToShowMainMenuSlot()));
     }
     else if (name.compare(DOCML_NAME_HINT_BUTTON) == 0)
     {
-        connect(widget, SIGNAL(clicked(bool)), this, SLOT(openServicesViewSlot()));
+        connect(object, SIGNAL(clicked(bool)), this, SLOT(openServicesViewSlot()));
     }
-}
-
-// -------------------------------------------------------------------------------------------------
-// objectReadySlot
-// -------------------------------------------------------------------------------------------------
-//
-void VideoListView::objectReadySlot(QObject *object, const QString &name)
-{
-	if (name.compare(DOCML_NAME_SORT_BY_DATE) == 0)
+    else if (name.compare(DOCML_NAME_SORT_BY_DATE) == 0)
     {
         HbAction *action = qobject_cast<HbAction*>(object);
         if (action)
@@ -1436,7 +1471,7 @@
         if (action)
         {
         	connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
-            mSortingRoles[action] = Qt::DisplayRole;
+            mSortingRoles[action] = VideoCollectionCommon::KeyTitle;
         }
     }
     else if (name.compare(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS) == 0)
@@ -1444,9 +1479,8 @@
         HbAction *action = qobject_cast<HbAction*>(object);
         if (action)
         {
-        	// TODO: implement
-            connect(action, SIGNAL(triggered()), this, SLOT(debugNotImplementedYet()));
-            mSortingRoles[action] = 0;
+            connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
+            mSortingRoles[action] = VideoCollectionCommon::KeyNumberOfItems;
         }
     }
     else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0)
@@ -1487,6 +1521,7 @@
 // Just for testing, remove this
 void VideoListView::debugNotImplementedYet()
 {
+	FUNC_LOG;
     HbMessageBox::information(tr("Not implemented yet"));
 }