videocollection/videocollectionview/src/videolistselectiondialog.cpp
branchRCL_3
changeset 56 839377eedc2b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/src/videolistselectiondialog.cpp	Tue Aug 31 15:15:55 2010 +0300
@@ -0,0 +1,812 @@
+/*
+* 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:   videolist selection dialog implementation
+* 
+*/
+
+// Version : %version: 30.1.3 %
+
+// INCLUDE FILES
+#include <qgraphicsitem.h>
+#include <hblabel.h>
+#include <hbcheckbox.h>
+#include <hbaction.h>
+#include <hbstackedwidget.h>
+#include <hbabstractitemview.h>
+#include <hbinputdialog.h>
+#include <vcxmyvideosdefs.h>
+#include <hbstyleloader.h>
+
+#include "videocollectionuiloader.h"
+#include "videolistwidget.h"
+#include "videosortfilterproxymodel.h"
+#include "videolistselectiondialog.h"
+#include "videocollectionwrapper.h"
+#include "videocollectionviewutils.h"
+#include "videocollectionclient.h"
+#include "videocollectiontrace.h"
+
+// Object names.
+const char* const SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET    = "vc:SelectionDialogListWidget";
+const char* const SELECTION_DIALOG_OBJECT_NAME_NEW_COLLECTION = "vc:SelectionDialogNewCollection";
+const char* const LIST_VIEW_OBJECT_NAME_CREATE_COLLECTION     = "vc::ListViewInputDialogCreateCollection";
+const char* const SELECTION_DIALOG_OBJECT_NAME_BUTTON_OK      = "vc:SelectionDialogButtonOk";
+const char* const SELECTION_DIALOG_OBJECT_NAME_BUTTON_CANCEL  = "vc:SelectionDialogButtonCancel";
+
+/**
+ * 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);
+}
+
+/**
+ * Helper function for creating a new album name query dialog 
+ */
+HbInputDialog* gCreateNewAlbumNameDialog(const char* objectName)
+{
+    QString label(hbTrId("txt_videos_title_enter_name"));
+    QString text(hbTrId("txt_videos_dialog_entry_new_collection"));
+    HbInputDialog *dialog = new HbInputDialog();
+    dialog->setAttribute(Qt::WA_DeleteOnClose);
+    dialog->setObjectName(objectName);
+    dialog->setPromptText(label);
+    dialog->setValue(text);
+    return dialog;
+}
+
+// ---------------------------------------------------------------------------
+// VideoListSelectionDialog
+// ---------------------------------------------------------------------------
+//
+VideoListSelectionDialog::VideoListSelectionDialog( VideoCollectionUiLoader *uiLoader,
+                                                    QGraphicsItem *parent)  
+    : HbDialog( parent )
+    , mUiLoader( uiLoader )
+    , mTypeOfSelection( -1 )
+    , mHeading( 0 )
+    , mCheckboxContainer( 0 )
+    , mItemCount( 0 )
+    , mCheckBoxText( 0 )
+    , mCheckBox( 0 )
+    , mListContainer( 0 )
+    , mForcedCheck( false )
+    , mModel( 0 )
+    , mModelReady( false )
+    , mAlbumListReady( false )
+    , mListWidget( 0 )
+    , mPrimaryAction( 0 )
+    , mSecondaryAction( 0 )
+{
+	FUNC_LOG;
+    
+	HbStyleLoader::registerFilePath( ":/style/hbdialog.css" );
+
+    setDismissPolicy(HbDialog::NoDismiss);
+    setTimeout(HbDialog::NoTimeout);    
+
+    // create model for list widget
+    mModel =
+        VideoCollectionWrapper::instance().getModel(
+        		VideoCollectionCommon::EModelTypeGeneric);
+    if (mModel)
+    {
+        // create list widget
+        mListWidget = new VideoListWidget(mUiLoader);
+        if(mListWidget->initialize(*mModel) < 0)
+        {
+            ERROR(-1, "VideoListSelectionDialog::VideoListSelectionDialog() failed to init list widget");
+            delete mListWidget;
+            mListWidget = 0;
+        }
+        // disable list related animations to make dialog faster 
+        mListWidget->setEnabledAnimations(HbAbstractItemView::None);
+        mListWidget->setObjectName(SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ~VideoListSelectionDialog
+// ---------------------------------------------------------------------------
+//
+VideoListSelectionDialog::~VideoListSelectionDialog() 
+{
+	FUNC_LOG;
+	HbStyleLoader::unregisterFilePath( ":/style/hbdialog.css" );
+    delete mListWidget;
+    mListWidget = 0;
+}
+
+// ---------------------------------------------------------------------------
+// setupContent
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::setupContent(int type, TMPXItemId activeItem)
+{
+	FUNC_LOG;
+	INFO_1("VideoListSelectionDialog::setupContent() type: %d", type);
+    if(type < EDeleteVideos || type > ESelectCollection)
+    {
+        return;
+    }
+   
+    mTypeOfSelection = type; 
+    if(!initDialog())
+    {
+        ERROR(-1, "VideoListSelectionDialog::setupContent() dialog init failed.");
+        return;
+    }
+    mSelection.clear();
+    mSelectedVideos.clear();
+    mSelectedAlbumId = TMPXItemId::InvalidId();
+    mNewAlbumText = QString();
+    
+    // if provided "owner" is album or category    
+    if(activeItem != TMPXItemId::InvalidId())
+    {
+        // if album, set as "selected"
+        if(activeItem.iId2 == KVcxMvcMediaTypeAlbum)
+        {
+            mSelectedAlbumId = activeItem;
+        }
+        else if(activeItem.iId2 == KVcxMvcMediaTypeVideo)
+        {
+            mSelectedVideos.insert(activeItem);
+        }
+    }
+    // set (or reset) generic id filter
+    bool filterValue = true;
+    if(mTypeOfSelection == EAddToCollection || 
+       mTypeOfSelection == ESelectCollection ||
+       mTypeOfSelection == ECreateCollection)
+    {
+        filterValue = false;
+    }
+    mModel->setGenericIdFilter(activeItem, filterValue);    
+    activateSelection();
+}
+
+// ---------------------------------------------------------------------------
+// initDialog
+// ---------------------------------------------------------------------------
+//
+bool VideoListSelectionDialog::initDialog()
+{
+	FUNC_LOG;
+    if(!mModel)
+    {
+        mModel = VideoCollectionWrapper::instance().getModel(VideoCollectionCommon::EModelTypeGeneric);
+        if (!mModel)
+        {
+           return false;
+        }
+    }  
+    if (!mListContainer)
+    {
+        mListContainer =
+                   mUiLoader->findWidget<HbStackedWidget>(DOCML_NAME_LIST_CONTAINER);
+    
+        if(!mListWidget)
+        {
+            mListWidget = new VideoListWidget(mUiLoader);
+            mListWidget->setObjectName(SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET);
+            if(mListWidget->initialize(*mModel) < 0)
+            {
+                ERROR(-1, "VideoListSelectionDialog::initDialog() failed to setup VideoListWidget.");
+                delete mListWidget;
+                mListWidget = 0;
+                mListContainer = 0;
+                return false;
+            }
+        }
+        if(mListContainer)
+        {
+            mListContainer->addWidget(mListWidget);
+        }
+    }
+
+    if(!mHeading)
+    {
+        mHeading = mUiLoader->findWidget<HbLabel>(DOCML_NAME_DLG_HEADINGLBL);
+    }
+    if(!mCheckboxContainer)
+    {
+        mCheckboxContainer = mUiLoader->findWidget<HbWidget>(DOCML_NAME_CHECK_CONTAINER);
+    }
+    if(!mItemCount)
+    {
+        mItemCount = mUiLoader->findWidget<HbLabel>(DOCML_NAME_LBL_SELECTION);
+        mItemCount->setAlignment(Qt::AlignRight);
+    }        
+    if(!mCheckBox)
+    {
+        mCheckBox = mUiLoader->findWidget<HbCheckBox >(DOCML_NAME_MARKALL);
+    }
+
+    if(!mCheckBoxText)
+    {
+        mCheckBoxText = mUiLoader->findWidget<HbLabel >(DOCML_NAME_LBL_MARKALL);
+    }
+
+    // HbDialog connects actions to finished signal by default. 
+    if(!mPrimaryAction)
+    {
+        mPrimaryAction = new HbAction(hbTrId("txt_common_button_ok"));
+        mPrimaryAction->setObjectName(SELECTION_DIALOG_OBJECT_NAME_BUTTON_OK);
+        addAction(mPrimaryAction);
+    }
+    if(!mSecondaryAction)
+    {
+        mSecondaryAction = new HbAction(hbTrId("txt_common_button_cancel"));
+        mSecondaryAction->setObjectName(SELECTION_DIALOG_OBJECT_NAME_BUTTON_CANCEL);
+        addAction(mSecondaryAction);
+    }
+    
+    if(!mListContainer || !mHeading || !mCheckBox || !mCheckBoxText)
+    {
+        ERROR(-1, "VideoListSelectionDialog::initDialog() !mListContainer || !mHeading || !mCheckBox || !mCheckBoxText");
+        return false;
+    }
+    return true;  
+}
+
+// ---------------------------------------------------------------------------
+// activateSelection
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::activateSelection()
+{
+	FUNC_LOG;
+    // "add to collection", "remove from collection" and "create collection" -selections
+	// needs additional functionality for primary key
+    if(mTypeOfSelection == EAddToCollection ||
+       mTypeOfSelection == ERemoveFromCollection ||
+       mTypeOfSelection == ECreateCollection)
+    {
+        mPrimaryAction->disconnect(SIGNAL(triggered()));
+        connect(mPrimaryAction, SIGNAL(triggered()), this, SLOT(primaryActionTriggeredSlot()));
+    }
+    QString headingTxt("");
+    QString primaryTxt("");
+    // create texts
+    switch(mTypeOfSelection)
+    {
+        case EDeleteVideos:
+            primaryTxt = hbTrId("txt_common_button_delete");
+        break;
+        case EAddToCollection:
+            primaryTxt = hbTrId("txt_common_button_add");
+        break;
+        case ECreateCollection:
+            primaryTxt = hbTrId("txt_common_button_ok");
+        break;
+        case ERemoveFromCollection:
+            primaryTxt = hbTrId("txt_common_button_remove");
+        break;
+        case ESelectCollection:
+            primaryTxt = hbTrId("txt_videos_button_new");
+        break;
+        default:
+        break;
+    }
+
+    mPrimaryAction->setText(primaryTxt);
+    
+    mModelReady = false;
+    mAlbumListReady = false;
+
+    if(mTypeOfSelection == ESelectCollection)
+    {
+        headingTxt = hbTrId("txt_videos_title_select_collection");
+        mCheckboxContainer->setVisible(false);
+        mListWidget->setSelectionMode(-1);   
+        mListWidget->activate(VideoCollectionCommon::ELevelCategory);
+        // New collection button is always enabled for collection selection.
+        mPrimaryAction->setDisabled(false);
+    }
+    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);
+        
+        // Add button will be enabled when videos are selected from the list.
+        mPrimaryAction->setDisabled(mTypeOfSelection != ECreateCollection);
+    }
+    mHeading->setPlainText(headingTxt);         
+    // sort to make sure dialog has correctly filtered content
+    // at the same order as in view
+    VideoCollectionViewUtils::sortModel(mModel, false, mListWidget->getLevel());        
+}
+
+// ---------------------------------------------------------------------------
+// exec
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::exec()
+{
+	FUNC_LOG;
+    // clear checkbox
+    mCheckBox->setChecked(false);
+    
+    mListWidget->clearSelection(); 
+    
+    // scroll list back to top
+    mListWidget->scrollTo(mModel->index(0, 0));
+    
+    connectSignals();
+
+    if(mTypeOfSelection == ECreateCollection)
+    {
+        // note this does not leak memory as the dialog will destroy itself upon close.
+        HbInputDialog *dialog = gCreateNewAlbumNameDialog(LIST_VIEW_OBJECT_NAME_CREATE_COLLECTION);
+        dialog->open(this, SLOT(newAlbumNameDialogFinished(HbAction *)));
+    }
+    else if(mModel->rowCount())
+    {
+        // show dialog
+        HbDialog::open();
+    }
+    else if((mModelReady && mTypeOfSelection != ESelectCollection) || 
+            (mAlbumListReady && mTypeOfSelection == ESelectCollection))
+    {
+        INFO("VideoListSelectionDialog::exec(): nothing to show, finishing.")
+        // no items, finish right away
+        finishedSlot(mPrimaryAction);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// finishedSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::finishedSlot(HbAction *action)
+{
+	FUNC_LOG;
+    disconnectSignals();
+    if(action == mSecondaryAction)
+    {
+        INFO("VideoListSelectionDialog::exec(): secondary action triggered.")
+        return;
+    }
+    
+    if(mTypeOfSelection == ESelectCollection)
+    {
+        mTypeOfSelection = EAddToCollection;
+        if(mSelectedAlbumId == TMPXItemId::InvalidId())
+        {
+            close(); // closes selection dialog if it's open.
+            
+            // note this does not leak memory as the dialog will destroy itself upon close.
+            HbInputDialog *dialog = gCreateNewAlbumNameDialog(SELECTION_DIALOG_OBJECT_NAME_NEW_COLLECTION);
+            dialog->open(this, SLOT(newAlbumNameDialogFinished(HbAction *)));
+       }
+       else
+       {
+           finalize();
+       }
+    }
+    else
+    {
+        finalize();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// newAlbumNameDialogFinished
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::newAlbumNameDialogFinished(HbAction *action)
+{
+    FUNC_LOG;
+    Q_UNUSED(action);
+    
+    HbInputDialog *dialog = static_cast<HbInputDialog*>(sender());
+    
+    QVariant variant = dialog->value();
+    
+    if(dialog->actions().first() == action && variant.isValid())
+    {
+        QString text = mModel->resolveAlbumName(variant.toString());
+        if(!text.isEmpty())
+        {
+            if(mSelectedVideos.count() == 0 && mModel->rowCount())
+            {
+                mNewAlbumText = text;
+                // show video selection dialog
+                HbDialog::open();
+            }
+            else
+            {
+                mSelectedAlbumId = mModel->addNewAlbum(text);
+                finalize(text);
+            }
+        }
+        else
+        {
+            // new album name empty, effectively cancel, so disconnect signals.
+            disconnectSignals();
+        }
+    }
+    else
+    {
+        // new album dialog cancelled, disconnect signals.
+        disconnectSignals();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// finalize
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::finalize(QString albumName)
+{
+    // Must be checked again if type was ESelectCollection
+    if(mTypeOfSelection == EAddToCollection ||
+       mTypeOfSelection == ECreateCollection)
+    {
+        if(mTypeOfSelection == ECreateCollection)
+        {
+            mSelectedAlbumId = mModel->addNewAlbum(mNewAlbumText);
+            albumName = mNewAlbumText;
+        }
+        
+        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
+        {
+            if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
+            {
+                if(!albumName.length())
+                {
+                    albumName = getSelectedName();
+                }
+                QList<QVariant> dataList;
+                dataList.append(QVariant(mSelectedVideos.count()));
+                dataList.append(QVariant(albumName));
+                QVariant data = dataList;
+                VideoCollectionViewUtils::instance().showStatusMsgSlot(
+                        VideoCollectionCommon::statusVideosAddedToCollection,
+                        data);
+            }
+        }
+    }
+    else if(mTypeOfSelection == ERemoveFromCollection)
+    {
+        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
+        {
+            if(mModel->removeItemsFromAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
+            {
+                QVariant data = getSelectedName();
+                VideoCollectionViewUtils::instance().showStatusMsgSlot(
+                        VideoCollectionCommon::statusVideosRemovedFromCollection,
+                        data);
+            }
+        }
+    }
+    // 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());
+    } 
+}
+
+// ---------------------------------------------------------------------------
+// markAllStateChanged
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::markAllStateChangedSlot(int state)
+{ 
+	FUNC_LOG;
+    if(mForcedCheck)
+    {
+        return;
+    }
+    if(state == Qt::Checked)
+    {
+        mListWidget->selectAll();
+    }
+    else
+    {
+        mListWidget->clearSelection();
+    }   
+}
+
+// ---------------------------------------------------------------------------
+// selectionChangedSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::selectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected)
+{  
+	FUNC_LOG;
+    if(!mPrimaryAction || mTypeOfSelection == ESelectCollection)
+    {
+        INFO("VideoListSelectionDialog::selectionChangedSlot(): no primary action or we are selecting collection.")
+        return;
+    }
+   
+    if(selected.indexes().count() > 0)
+    {
+        mSelection.merge(selected, QItemSelectionModel::Select);
+    }
+    
+    if(deselected.indexes().count() >  0)
+    {
+        mSelection.merge(deselected, QItemSelectionModel::Deselect);
+    }
+    
+    if(mSelection.indexes().count() > 0)
+    {
+        mPrimaryAction->setDisabled(false);
+        
+        if(mTypeOfSelection == ECreateCollection)
+        {
+            mPrimaryAction->setText(hbTrId("txt_common_button_add"));
+        }
+    }
+    else
+    {
+        mPrimaryAction->setDisabled(mTypeOfSelection != ECreateCollection);
+        
+        if(mTypeOfSelection == ECreateCollection)
+        {
+            mPrimaryAction->setText(hbTrId("txt_common_button_ok"));
+        }
+    }    
+
+    updateCounterSlot();
+}
+
+// ---------------------------------------------------------------------------
+// singleItemSelectedSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::singleItemSelectedSlot(const QModelIndex &index)
+{
+	FUNC_LOG;
+    if(mTypeOfSelection == ESelectCollection)
+    {
+       if(index.isValid())
+       {
+           mSelectedAlbumId = mModel->getMediaIdAtIndex(index);            
+           mPrimaryAction->trigger();
+       }
+    }
+}
+
+// ---------------------------------------------------------------------------
+// modelReadySlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::modelReadySlot()
+{
+	FUNC_LOG;
+    mModelReady = true;
+    
+	if(mTypeOfSelection != ESelectCollection)
+	{
+        if(!mModel->rowCount())
+        {
+            // no items, finish right away
+            INFO("VideoListSelectionDialog::modelReadySlot(): nothing to show, finishing.");
+            
+            if(mTypeOfSelection == EAddToCollection ||
+               mTypeOfSelection == ERemoveFromCollection)
+            {
+                primaryActionTriggeredSlot();
+            }
+            else
+            {
+                finishedSlot(mPrimaryAction);
+            }
+            
+            return;
+        }
+            
+        // if dialog is not yet visible, bring it visible. 
+        if(!isVisible() && mTypeOfSelection != ECreateCollection)
+        {
+            // scroll list back to top
+            mListWidget->scrollTo(mModel->index(0, 0));
+            
+            HbDialog::open();
+        }
+        
+        updateCounterSlot();
+	}
+}
+
+// ---------------------------------------------------------------------------
+// albumListReadySlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::albumListReadySlot()
+{
+    mAlbumListReady = true;
+    
+    if(mTypeOfSelection == ESelectCollection)
+    {
+        if(!mModel->rowCount())
+        {
+            finishedSlot(mPrimaryAction);
+            return;
+        }
+            
+        // if dialog is not yet visible, bring it visible. 
+        if(!isVisible())
+        {
+            // scroll list back to top
+            mListWidget->scrollTo(mModel->index(0, 0));
+            
+            HbDialog::open();
+        }
+        
+        updateCounterSlot();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// updateCounterSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::updateCounterSlot()
+{
+	FUNC_LOG;
+    if(!mItemCount)
+    {
+        return;
+    }
+
+    int rowCount = mModel->rowCount();       
+    int selectionCount = mSelection.indexes().count();
+    mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount));  
+    mForcedCheck = true;
+    if(selectionCount == rowCount && rowCount > 0)
+    {     
+        mCheckBox->setChecked(true);
+    }
+    else
+    {
+        mCheckBox->setChecked(false);
+    }
+    mForcedCheck = false;
+}
+
+// ---------------------------------------------------------------------------
+// primaryActionTriggeredSlot
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::primaryActionTriggeredSlot()
+{
+	FUNC_LOG;
+    // reconnect primary action
+    mPrimaryAction->disconnect(SIGNAL(triggered()));
+    connect(mPrimaryAction, SIGNAL(triggered()), this, SLOT(close()));
+
+    // update video items selection here before content changes.
+    QModelIndexList indexes = mSelection.indexes();
+    int count = indexes.count();
+    TMPXItemId id = TMPXItemId::InvalidId();
+    for(int i = 0; i < count; ++i)
+    {
+        id = mModel->getMediaIdAtIndex(indexes.at(i));
+        if(id.iId2 == KVcxMvcMediaTypeVideo)
+        {
+            mSelectedVideos.insert(id);
+        }
+    }
+    
+    if(mSelectedAlbumId != TMPXItemId::InvalidId() ||
+       mTypeOfSelection == ECreateCollection)
+    {
+        INFO("VideoListSelectionDialog::primaryActionTriggeredSlot(): closing dialog.")
+        mPrimaryAction->trigger();
+        return;
+    }
+    else if(mTypeOfSelection == EAddToCollection)
+    {
+        INFO("VideoListSelectionDialog::primaryActionTriggeredSlot(): activating collection selection.")
+        // videos for collection selected, but collection 
+        // not yet selected, activate selection for it
+        mTypeOfSelection = ESelectCollection;
+        activateSelection();
+   }   
+}
+
+// ---------------------------------------------------------------------------
+// connectSignals
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::connectSignals()
+{   
+	FUNC_LOG;
+    // dialog finished
+    connect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
+    
+    // selection changes
+    connect(mListWidget, SIGNAL(activated(const QModelIndex&)),
+            this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
+    
+    connect(mListWidget->selectionModel(), SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
+            this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
+
+    // model changes signals
+    connect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));
+    connect(mModel->sourceModel(), SIGNAL(albumListReady()), this, SLOT(albumListReadySlot()));
+    connect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));
+    
+    // mark all state changes
+    connect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));
+}
+ 
+// ---------------------------------------------------------------------------
+// disconnectSignals
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::disconnectSignals()
+{   
+	FUNC_LOG;
+    disconnect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
+    
+    disconnect(mListWidget, SIGNAL(activated(const QModelIndex&)),
+                this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
+    
+    disconnect(mListWidget->selectionModel(), SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
+                            this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
+
+    // model changes signals
+    disconnect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
+    disconnect(mModel->sourceModel(), SIGNAL(albumListReady()), this, SLOT(albumListReadySlot()));
+    disconnect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));   
+    
+    // mark all state changes
+    disconnect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));
+}
+
+// ---------------------------------------------------------------------------
+// getSelectedName
+// ---------------------------------------------------------------------------
+//
+QString VideoListSelectionDialog::getSelectedName()
+{
+	FUNC_LOG;
+    QString name;
+    if(mSelectedAlbumId.iId2 > KVcxMvcMediaTypeVideo)
+    {
+        VideoSortFilterProxyModel *model = 
+                VideoCollectionWrapper::instance().getModel(
+                		VideoCollectionCommon::EModelTypeCollections);
+        if(!model)
+        {
+            return name;
+        }
+        QModelIndex index = model->indexOfId(mSelectedAlbumId);
+        if(index.isValid())
+        {
+            name = model->data(index, VideoCollectionCommon::KeyTitle).toString();
+        }
+    }
+    return name;
+}
+
+// End of file