videocollection/videocollectionview/src/videolistselectiondialog.cpp
author hgs
Tue, 05 Oct 2010 09:26:49 +0300
changeset 66 adb51f74b890
parent 58 d2b028fd1f7d
child 67 72c709219fcd
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   videolist selection dialog implementation
hgs
parents:
diff changeset
    15
* 
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
66
hgs
parents: 58
diff changeset
    18
// Version : %version: 30.1.5 %
36
hgs
parents: 35
diff changeset
    19
hgs
parents: 35
diff changeset
    20
// INCLUDE FILES
hgs
parents: 35
diff changeset
    21
#include <qgraphicsitem.h>
30
hgs
parents:
diff changeset
    22
#include <hblabel.h>
hgs
parents:
diff changeset
    23
#include <hbcheckbox.h>
hgs
parents:
diff changeset
    24
#include <hbaction.h>
hgs
parents:
diff changeset
    25
#include <hbstackedwidget.h>
34
hgs
parents: 30
diff changeset
    26
#include <hbabstractitemview.h>
hgs
parents: 30
diff changeset
    27
#include <hbinputdialog.h>
hgs
parents: 30
diff changeset
    28
#include <vcxmyvideosdefs.h>
37
hgs
parents: 36
diff changeset
    29
#include <hbstyleloader.h>
34
hgs
parents: 30
diff changeset
    30
30
hgs
parents:
diff changeset
    31
#include "videocollectionuiloader.h"
hgs
parents:
diff changeset
    32
#include "videolistwidget.h"
58
hgs
parents: 55
diff changeset
    33
#include "videoproxymodelgeneric.h"
30
hgs
parents:
diff changeset
    34
#include "videolistselectiondialog.h"
34
hgs
parents: 30
diff changeset
    35
#include "videocollectionwrapper.h"
hgs
parents: 30
diff changeset
    36
#include "videocollectionviewutils.h"
hgs
parents: 30
diff changeset
    37
#include "videocollectionclient.h"
36
hgs
parents: 35
diff changeset
    38
#include "videocollectiontrace.h"
34
hgs
parents: 30
diff changeset
    39
38
hgs
parents: 37
diff changeset
    40
// Object names.
hgs
parents: 37
diff changeset
    41
const char* const SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET    = "vc:SelectionDialogListWidget";
hgs
parents: 37
diff changeset
    42
const char* const SELECTION_DIALOG_OBJECT_NAME_NEW_COLLECTION = "vc:SelectionDialogNewCollection";
40
hgs
parents: 38
diff changeset
    43
const char* const LIST_VIEW_OBJECT_NAME_CREATE_COLLECTION     = "vc::ListViewInputDialogCreateCollection";
38
hgs
parents: 37
diff changeset
    44
const char* const SELECTION_DIALOG_OBJECT_NAME_BUTTON_OK      = "vc:SelectionDialogButtonOk";
hgs
parents: 37
diff changeset
    45
const char* const SELECTION_DIALOG_OBJECT_NAME_BUTTON_CANCEL  = "vc:SelectionDialogButtonCancel";
hgs
parents: 37
diff changeset
    46
34
hgs
parents: 30
diff changeset
    47
/**
hgs
parents: 30
diff changeset
    48
 * global qHash function required fo creating hash values for TMPXItemId -keys
hgs
parents: 30
diff changeset
    49
 */
hgs
parents: 30
diff changeset
    50
inline uint qHash(TMPXItemId key) 
hgs
parents: 30
diff changeset
    51
{ 
hgs
parents: 30
diff changeset
    52
    QPair<uint, uint> keyPair(key.iId1, key.iId2); 
hgs
parents: 30
diff changeset
    53
hgs
parents: 30
diff changeset
    54
    return qHash(keyPair);
hgs
parents: 30
diff changeset
    55
}
30
hgs
parents:
diff changeset
    56
40
hgs
parents: 38
diff changeset
    57
/**
hgs
parents: 38
diff changeset
    58
 * Helper function for creating a new album name query dialog 
hgs
parents: 38
diff changeset
    59
 */
hgs
parents: 38
diff changeset
    60
HbInputDialog* gCreateNewAlbumNameDialog(const char* objectName)
hgs
parents: 38
diff changeset
    61
{
hgs
parents: 38
diff changeset
    62
    QString label(hbTrId("txt_videos_title_enter_name"));
hgs
parents: 38
diff changeset
    63
    QString text(hbTrId("txt_videos_dialog_entry_new_collection"));
hgs
parents: 38
diff changeset
    64
    HbInputDialog *dialog = new HbInputDialog();
hgs
parents: 38
diff changeset
    65
    dialog->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents: 38
diff changeset
    66
    dialog->setObjectName(objectName);
hgs
parents: 38
diff changeset
    67
    dialog->setPromptText(label);
hgs
parents: 38
diff changeset
    68
    dialog->setValue(text);
hgs
parents: 38
diff changeset
    69
    return dialog;
hgs
parents: 38
diff changeset
    70
}
hgs
parents: 38
diff changeset
    71
30
hgs
parents:
diff changeset
    72
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    73
// VideoListSelectionDialog
hgs
parents:
diff changeset
    74
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    75
//
36
hgs
parents: 35
diff changeset
    76
VideoListSelectionDialog::VideoListSelectionDialog( VideoCollectionUiLoader *uiLoader,
hgs
parents: 35
diff changeset
    77
                                                    QGraphicsItem *parent)  
hgs
parents: 35
diff changeset
    78
    : HbDialog( parent )
hgs
parents: 35
diff changeset
    79
    , mUiLoader( uiLoader )
hgs
parents: 35
diff changeset
    80
    , mTypeOfSelection( -1 )
hgs
parents: 35
diff changeset
    81
    , mHeading( 0 )
hgs
parents: 35
diff changeset
    82
    , mCheckboxContainer( 0 )
hgs
parents: 35
diff changeset
    83
    , mItemCount( 0 )
37
hgs
parents: 36
diff changeset
    84
    , mCheckBoxText( 0 )
36
hgs
parents: 35
diff changeset
    85
    , mCheckBox( 0 )
hgs
parents: 35
diff changeset
    86
    , mListContainer( 0 )
hgs
parents: 35
diff changeset
    87
    , mForcedCheck( false )
hgs
parents: 35
diff changeset
    88
    , mModel( 0 )
50
hgs
parents: 40
diff changeset
    89
    , mModelReady( false )
hgs
parents: 40
diff changeset
    90
    , mAlbumListReady( false )
36
hgs
parents: 35
diff changeset
    91
    , mListWidget( 0 )
hgs
parents: 35
diff changeset
    92
    , mPrimaryAction( 0 )
hgs
parents: 35
diff changeset
    93
    , mSecondaryAction( 0 )
30
hgs
parents:
diff changeset
    94
{
36
hgs
parents: 35
diff changeset
    95
	FUNC_LOG;
37
hgs
parents: 36
diff changeset
    96
    
hgs
parents: 36
diff changeset
    97
	HbStyleLoader::registerFilePath( ":/style/hbdialog.css" );
hgs
parents: 36
diff changeset
    98
30
hgs
parents:
diff changeset
    99
    setDismissPolicy(HbDialog::NoDismiss);
34
hgs
parents: 30
diff changeset
   100
    setTimeout(HbDialog::NoTimeout);    
hgs
parents: 30
diff changeset
   101
hgs
parents: 30
diff changeset
   102
    // create model for list widget
hgs
parents: 30
diff changeset
   103
    mModel =
58
hgs
parents: 55
diff changeset
   104
        VideoCollectionWrapper::instance().getGenericModel();
34
hgs
parents: 30
diff changeset
   105
    if (mModel)
hgs
parents: 30
diff changeset
   106
    {
hgs
parents: 30
diff changeset
   107
        // create list widget
hgs
parents: 30
diff changeset
   108
        mListWidget = new VideoListWidget(mUiLoader);
36
hgs
parents: 35
diff changeset
   109
        if(mListWidget->initialize(*mModel) < 0)
34
hgs
parents: 30
diff changeset
   110
        {
36
hgs
parents: 35
diff changeset
   111
            ERROR(-1, "VideoListSelectionDialog::VideoListSelectionDialog() failed to init list widget");
hgs
parents: 35
diff changeset
   112
            delete mListWidget;
hgs
parents: 35
diff changeset
   113
            mListWidget = 0;
34
hgs
parents: 30
diff changeset
   114
        }
37
hgs
parents: 36
diff changeset
   115
        // disable list related animations to make dialog faster 
hgs
parents: 36
diff changeset
   116
        mListWidget->setEnabledAnimations(HbAbstractItemView::None);
38
hgs
parents: 37
diff changeset
   117
        mListWidget->setObjectName(SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET);
34
hgs
parents: 30
diff changeset
   118
    }
30
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   122
// ~VideoListSelectionDialog
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   124
//
hgs
parents:
diff changeset
   125
VideoListSelectionDialog::~VideoListSelectionDialog() 
hgs
parents:
diff changeset
   126
{
36
hgs
parents: 35
diff changeset
   127
	FUNC_LOG;
37
hgs
parents: 36
diff changeset
   128
	HbStyleLoader::unregisterFilePath( ":/style/hbdialog.css" );
34
hgs
parents: 30
diff changeset
   129
    delete mListWidget;
37
hgs
parents: 36
diff changeset
   130
    mListWidget = 0;
30
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
// ---------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   134
// setupContent
30
hgs
parents:
diff changeset
   135
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   136
//
34
hgs
parents: 30
diff changeset
   137
void VideoListSelectionDialog::setupContent(int type, TMPXItemId activeItem)
30
hgs
parents:
diff changeset
   138
{
36
hgs
parents: 35
diff changeset
   139
	FUNC_LOG;
hgs
parents: 35
diff changeset
   140
	INFO_1("VideoListSelectionDialog::setupContent() type: %d", type);
34
hgs
parents: 30
diff changeset
   141
    if(type < EDeleteVideos || type > ESelectCollection)
30
hgs
parents:
diff changeset
   142
    {
34
hgs
parents: 30
diff changeset
   143
        return;
hgs
parents: 30
diff changeset
   144
    }
hgs
parents: 30
diff changeset
   145
   
hgs
parents: 30
diff changeset
   146
    mTypeOfSelection = type; 
hgs
parents: 30
diff changeset
   147
    if(!initDialog())
hgs
parents: 30
diff changeset
   148
    {
36
hgs
parents: 35
diff changeset
   149
        ERROR(-1, "VideoListSelectionDialog::setupContent() dialog init failed.");
30
hgs
parents:
diff changeset
   150
        return;
hgs
parents:
diff changeset
   151
    }
34
hgs
parents: 30
diff changeset
   152
    mSelection.clear();
hgs
parents: 30
diff changeset
   153
    mSelectedVideos.clear();
hgs
parents: 30
diff changeset
   154
    mSelectedAlbumId = TMPXItemId::InvalidId();
40
hgs
parents: 38
diff changeset
   155
    mNewAlbumText = QString();
30
hgs
parents:
diff changeset
   156
    
34
hgs
parents: 30
diff changeset
   157
    // if provided "owner" is album or category    
hgs
parents: 30
diff changeset
   158
    if(activeItem != TMPXItemId::InvalidId())
hgs
parents: 30
diff changeset
   159
    {
hgs
parents: 30
diff changeset
   160
        // if album, set as "selected"
hgs
parents: 30
diff changeset
   161
        if(activeItem.iId2 == KVcxMvcMediaTypeAlbum)
hgs
parents: 30
diff changeset
   162
        {
hgs
parents: 30
diff changeset
   163
            mSelectedAlbumId = activeItem;
hgs
parents: 30
diff changeset
   164
        }
hgs
parents: 30
diff changeset
   165
        else if(activeItem.iId2 == KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   166
        {
hgs
parents: 30
diff changeset
   167
            mSelectedVideos.insert(activeItem);
hgs
parents: 30
diff changeset
   168
        }
hgs
parents: 30
diff changeset
   169
    }
hgs
parents: 30
diff changeset
   170
    // set (or reset) generic id filter
35
hgs
parents: 34
diff changeset
   171
    bool filterValue = true;
40
hgs
parents: 38
diff changeset
   172
    if(mTypeOfSelection == EAddToCollection || 
hgs
parents: 38
diff changeset
   173
       mTypeOfSelection == ESelectCollection ||
hgs
parents: 38
diff changeset
   174
       mTypeOfSelection == ECreateCollection)
35
hgs
parents: 34
diff changeset
   175
    {
hgs
parents: 34
diff changeset
   176
        filterValue = false;
hgs
parents: 34
diff changeset
   177
    }
hgs
parents: 34
diff changeset
   178
    mModel->setGenericIdFilter(activeItem, filterValue);    
34
hgs
parents: 30
diff changeset
   179
    activateSelection();
hgs
parents: 30
diff changeset
   180
}
hgs
parents: 30
diff changeset
   181
hgs
parents: 30
diff changeset
   182
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   183
// initDialog
hgs
parents: 30
diff changeset
   184
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   185
//
hgs
parents: 30
diff changeset
   186
bool VideoListSelectionDialog::initDialog()
hgs
parents: 30
diff changeset
   187
{
36
hgs
parents: 35
diff changeset
   188
	FUNC_LOG;
34
hgs
parents: 30
diff changeset
   189
    if(!mModel)
hgs
parents: 30
diff changeset
   190
    {
58
hgs
parents: 55
diff changeset
   191
        mModel = VideoCollectionWrapper::instance().getGenericModel();
34
hgs
parents: 30
diff changeset
   192
        if (!mModel)
hgs
parents: 30
diff changeset
   193
        {
hgs
parents: 30
diff changeset
   194
           return false;
hgs
parents: 30
diff changeset
   195
        }
35
hgs
parents: 34
diff changeset
   196
    }  
34
hgs
parents: 30
diff changeset
   197
    if (!mListContainer)
hgs
parents: 30
diff changeset
   198
    {
hgs
parents: 30
diff changeset
   199
        mListContainer =
35
hgs
parents: 34
diff changeset
   200
                   mUiLoader->findWidget<HbStackedWidget>(DOCML_NAME_LIST_CONTAINER);
hgs
parents: 34
diff changeset
   201
    
hgs
parents: 34
diff changeset
   202
        if(!mListWidget)
hgs
parents: 34
diff changeset
   203
        {
hgs
parents: 34
diff changeset
   204
            mListWidget = new VideoListWidget(mUiLoader);
38
hgs
parents: 37
diff changeset
   205
            mListWidget->setObjectName(SELECTION_DIALOG_OBJECT_NAME_LIST_WIDGET);
35
hgs
parents: 34
diff changeset
   206
            if(mListWidget->initialize(*mModel) < 0)
hgs
parents: 34
diff changeset
   207
            {
36
hgs
parents: 35
diff changeset
   208
                ERROR(-1, "VideoListSelectionDialog::initDialog() failed to setup VideoListWidget.");
35
hgs
parents: 34
diff changeset
   209
                delete mListWidget;
hgs
parents: 34
diff changeset
   210
                mListWidget = 0;
hgs
parents: 34
diff changeset
   211
                mListContainer = 0;
hgs
parents: 34
diff changeset
   212
                return false;
hgs
parents: 34
diff changeset
   213
            }
hgs
parents: 34
diff changeset
   214
        }
hgs
parents: 34
diff changeset
   215
        if(mListContainer)
34
hgs
parents: 30
diff changeset
   216
        {
hgs
parents: 30
diff changeset
   217
            mListContainer->addWidget(mListWidget);
hgs
parents: 30
diff changeset
   218
        }
hgs
parents: 30
diff changeset
   219
    }
35
hgs
parents: 34
diff changeset
   220
30
hgs
parents:
diff changeset
   221
    if(!mHeading)
hgs
parents:
diff changeset
   222
    {
hgs
parents:
diff changeset
   223
        mHeading = mUiLoader->findWidget<HbLabel>(DOCML_NAME_DLG_HEADINGLBL);
hgs
parents:
diff changeset
   224
    }
34
hgs
parents: 30
diff changeset
   225
    if(!mCheckboxContainer)
hgs
parents: 30
diff changeset
   226
    {
hgs
parents: 30
diff changeset
   227
        mCheckboxContainer = mUiLoader->findWidget<HbWidget>(DOCML_NAME_CHECK_CONTAINER);
hgs
parents: 30
diff changeset
   228
    }
30
hgs
parents:
diff changeset
   229
    if(!mItemCount)
hgs
parents:
diff changeset
   230
    {
hgs
parents:
diff changeset
   231
        mItemCount = mUiLoader->findWidget<HbLabel>(DOCML_NAME_LBL_SELECTION);
hgs
parents:
diff changeset
   232
        mItemCount->setAlignment(Qt::AlignRight);
34
hgs
parents: 30
diff changeset
   233
    }        
30
hgs
parents:
diff changeset
   234
    if(!mCheckBox)
hgs
parents:
diff changeset
   235
    {
hgs
parents:
diff changeset
   236
        mCheckBox = mUiLoader->findWidget<HbCheckBox >(DOCML_NAME_MARKALL);
hgs
parents:
diff changeset
   237
    }
37
hgs
parents: 36
diff changeset
   238
hgs
parents: 36
diff changeset
   239
    if(!mCheckBoxText)
hgs
parents: 36
diff changeset
   240
    {
hgs
parents: 36
diff changeset
   241
        mCheckBoxText = mUiLoader->findWidget<HbLabel >(DOCML_NAME_LBL_MARKALL);
hgs
parents: 36
diff changeset
   242
    }
hgs
parents: 36
diff changeset
   243
36
hgs
parents: 35
diff changeset
   244
    // HbDialog connects actions to finished signal by default. 
hgs
parents: 35
diff changeset
   245
    if(!mPrimaryAction)
30
hgs
parents:
diff changeset
   246
    {
36
hgs
parents: 35
diff changeset
   247
        mPrimaryAction = new HbAction(hbTrId("txt_common_button_ok"));
38
hgs
parents: 37
diff changeset
   248
        mPrimaryAction->setObjectName(SELECTION_DIALOG_OBJECT_NAME_BUTTON_OK);
36
hgs
parents: 35
diff changeset
   249
        addAction(mPrimaryAction);
30
hgs
parents:
diff changeset
   250
    }
36
hgs
parents: 35
diff changeset
   251
    if(!mSecondaryAction)
30
hgs
parents:
diff changeset
   252
    {
36
hgs
parents: 35
diff changeset
   253
        mSecondaryAction = new HbAction(hbTrId("txt_common_button_cancel"));
38
hgs
parents: 37
diff changeset
   254
        mSecondaryAction->setObjectName(SELECTION_DIALOG_OBJECT_NAME_BUTTON_CANCEL);
36
hgs
parents: 35
diff changeset
   255
        addAction(mSecondaryAction);
34
hgs
parents: 30
diff changeset
   256
    }
37
hgs
parents: 36
diff changeset
   257
    
hgs
parents: 36
diff changeset
   258
    if(!mListContainer || !mHeading || !mCheckBox || !mCheckBoxText)
34
hgs
parents: 30
diff changeset
   259
    {
37
hgs
parents: 36
diff changeset
   260
        ERROR(-1, "VideoListSelectionDialog::initDialog() !mListContainer || !mHeading || !mCheckBox || !mCheckBoxText");
34
hgs
parents: 30
diff changeset
   261
        return false;
hgs
parents: 30
diff changeset
   262
    }
hgs
parents: 30
diff changeset
   263
    return true;  
hgs
parents: 30
diff changeset
   264
}
hgs
parents: 30
diff changeset
   265
hgs
parents: 30
diff changeset
   266
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   267
// activateSelection
hgs
parents: 30
diff changeset
   268
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   269
//
hgs
parents: 30
diff changeset
   270
void VideoListSelectionDialog::activateSelection()
hgs
parents: 30
diff changeset
   271
{
36
hgs
parents: 35
diff changeset
   272
	FUNC_LOG;
40
hgs
parents: 38
diff changeset
   273
    // "add to collection", "remove from collection" and "create collection" -selections
hgs
parents: 38
diff changeset
   274
	// needs additional functionality for primary key
34
hgs
parents: 30
diff changeset
   275
    if(mTypeOfSelection == EAddToCollection ||
40
hgs
parents: 38
diff changeset
   276
       mTypeOfSelection == ERemoveFromCollection ||
hgs
parents: 38
diff changeset
   277
       mTypeOfSelection == ECreateCollection)
34
hgs
parents: 30
diff changeset
   278
    {
36
hgs
parents: 35
diff changeset
   279
        mPrimaryAction->disconnect(SIGNAL(triggered()));
hgs
parents: 35
diff changeset
   280
        connect(mPrimaryAction, SIGNAL(triggered()), this, SLOT(primaryActionTriggeredSlot()));
30
hgs
parents:
diff changeset
   281
    }
35
hgs
parents: 34
diff changeset
   282
    QString headingTxt("");
hgs
parents: 34
diff changeset
   283
    QString primaryTxt("");
hgs
parents: 34
diff changeset
   284
    // create texts
hgs
parents: 34
diff changeset
   285
    switch(mTypeOfSelection)
34
hgs
parents: 30
diff changeset
   286
    {
36
hgs
parents: 35
diff changeset
   287
        case EDeleteVideos:
hgs
parents: 35
diff changeset
   288
            primaryTxt = hbTrId("txt_common_button_delete");
hgs
parents: 35
diff changeset
   289
        break;
hgs
parents: 35
diff changeset
   290
        case EAddToCollection:
hgs
parents: 35
diff changeset
   291
            primaryTxt = hbTrId("txt_common_button_add");
hgs
parents: 35
diff changeset
   292
        break;
40
hgs
parents: 38
diff changeset
   293
        case ECreateCollection:
hgs
parents: 38
diff changeset
   294
            primaryTxt = hbTrId("txt_common_button_ok");
hgs
parents: 38
diff changeset
   295
        break;
36
hgs
parents: 35
diff changeset
   296
        case ERemoveFromCollection:
hgs
parents: 35
diff changeset
   297
            primaryTxt = hbTrId("txt_common_button_remove");
hgs
parents: 35
diff changeset
   298
        break;
hgs
parents: 35
diff changeset
   299
        case ESelectCollection:
hgs
parents: 35
diff changeset
   300
            primaryTxt = hbTrId("txt_videos_button_new");
hgs
parents: 35
diff changeset
   301
        break;
hgs
parents: 35
diff changeset
   302
        default:
hgs
parents: 35
diff changeset
   303
        break;
35
hgs
parents: 34
diff changeset
   304
    }
hgs
parents: 34
diff changeset
   305
36
hgs
parents: 35
diff changeset
   306
    mPrimaryAction->setText(primaryTxt);
50
hgs
parents: 40
diff changeset
   307
    
hgs
parents: 40
diff changeset
   308
    mModelReady = false;
hgs
parents: 40
diff changeset
   309
    mAlbumListReady = false;
35
hgs
parents: 34
diff changeset
   310
hgs
parents: 34
diff changeset
   311
    if(mTypeOfSelection == ESelectCollection)
hgs
parents: 34
diff changeset
   312
    {
hgs
parents: 34
diff changeset
   313
        headingTxt = hbTrId("txt_videos_title_select_collection");
hgs
parents: 34
diff changeset
   314
        mCheckboxContainer->setVisible(false);
hgs
parents: 34
diff changeset
   315
        mListWidget->setSelectionMode(-1);   
hgs
parents: 34
diff changeset
   316
        mListWidget->activate(VideoCollectionCommon::ELevelCategory);
38
hgs
parents: 37
diff changeset
   317
        // New collection button is always enabled for collection selection.
hgs
parents: 37
diff changeset
   318
        mPrimaryAction->setDisabled(false);
35
hgs
parents: 34
diff changeset
   319
    }
hgs
parents: 34
diff changeset
   320
    else
hgs
parents: 34
diff changeset
   321
    {
hgs
parents: 34
diff changeset
   322
        headingTxt = hbTrId("txt_videos_title_select_videos");
hgs
parents: 34
diff changeset
   323
        mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection);
34
hgs
parents: 30
diff changeset
   324
        mListWidget->activate(VideoCollectionCommon::ELevelVideos);
hgs
parents: 30
diff changeset
   325
        mCheckboxContainer->setVisible(true);
hgs
parents: 30
diff changeset
   326
        mItemCount->setPlainText(tr("0/%1").arg(mModel->rowCount())); 
35
hgs
parents: 34
diff changeset
   327
        mCheckBox->setChecked(false);
40
hgs
parents: 38
diff changeset
   328
        
38
hgs
parents: 37
diff changeset
   329
        // Add button will be enabled when videos are selected from the list.
40
hgs
parents: 38
diff changeset
   330
        mPrimaryAction->setDisabled(mTypeOfSelection != ECreateCollection);
34
hgs
parents: 30
diff changeset
   331
    }
35
hgs
parents: 34
diff changeset
   332
    mHeading->setPlainText(headingTxt);         
34
hgs
parents: 30
diff changeset
   333
    // sort to make sure dialog has correctly filtered content
hgs
parents: 30
diff changeset
   334
    // at the same order as in view
36
hgs
parents: 35
diff changeset
   335
    VideoCollectionViewUtils::sortModel(mModel, false, mListWidget->getLevel());        
30
hgs
parents:
diff changeset
   336
}
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   339
// exec
hgs
parents:
diff changeset
   340
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   341
//
35
hgs
parents: 34
diff changeset
   342
void VideoListSelectionDialog::exec()
30
hgs
parents:
diff changeset
   343
{
36
hgs
parents: 35
diff changeset
   344
	FUNC_LOG;
34
hgs
parents: 30
diff changeset
   345
    // clear checkbox
hgs
parents: 30
diff changeset
   346
    mCheckBox->setChecked(false);
30
hgs
parents:
diff changeset
   347
    
34
hgs
parents: 30
diff changeset
   348
    mListWidget->clearSelection(); 
30
hgs
parents:
diff changeset
   349
    
34
hgs
parents: 30
diff changeset
   350
    // scroll list back to top
hgs
parents: 30
diff changeset
   351
    mListWidget->scrollTo(mModel->index(0, 0));
40
hgs
parents: 38
diff changeset
   352
    
50
hgs
parents: 40
diff changeset
   353
    connectSignals();
hgs
parents: 40
diff changeset
   354
55
hgs
parents: 50
diff changeset
   355
    if(mTypeOfSelection == ECreateCollection)
35
hgs
parents: 34
diff changeset
   356
    {
55
hgs
parents: 50
diff changeset
   357
        // note this does not leak memory as the dialog will destroy itself upon close.
hgs
parents: 50
diff changeset
   358
        HbInputDialog *dialog = gCreateNewAlbumNameDialog(LIST_VIEW_OBJECT_NAME_CREATE_COLLECTION);
hgs
parents: 50
diff changeset
   359
        dialog->open(this, SLOT(newAlbumNameDialogFinished(HbAction *)));
hgs
parents: 50
diff changeset
   360
    }
hgs
parents: 50
diff changeset
   361
    else if(mModel->rowCount())
hgs
parents: 50
diff changeset
   362
    {
hgs
parents: 50
diff changeset
   363
        // show dialog
hgs
parents: 50
diff changeset
   364
        HbDialog::open();
35
hgs
parents: 34
diff changeset
   365
    }
50
hgs
parents: 40
diff changeset
   366
    else if((mModelReady && mTypeOfSelection != ESelectCollection) || 
hgs
parents: 40
diff changeset
   367
            (mAlbumListReady && mTypeOfSelection == ESelectCollection))
35
hgs
parents: 34
diff changeset
   368
    {
36
hgs
parents: 35
diff changeset
   369
        INFO("VideoListSelectionDialog::exec(): nothing to show, finishing.")
35
hgs
parents: 34
diff changeset
   370
        // no items, finish right away
36
hgs
parents: 35
diff changeset
   371
        finishedSlot(mPrimaryAction);
35
hgs
parents: 34
diff changeset
   372
    }
hgs
parents: 34
diff changeset
   373
}
hgs
parents: 34
diff changeset
   374
hgs
parents: 34
diff changeset
   375
// ---------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   376
// finishedSlot
hgs
parents: 34
diff changeset
   377
// ---------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   378
//
hgs
parents: 34
diff changeset
   379
void VideoListSelectionDialog::finishedSlot(HbAction *action)
hgs
parents: 34
diff changeset
   380
{
36
hgs
parents: 35
diff changeset
   381
	FUNC_LOG;
30
hgs
parents:
diff changeset
   382
    disconnectSignals();
36
hgs
parents: 35
diff changeset
   383
    if(action == mSecondaryAction)
35
hgs
parents: 34
diff changeset
   384
    {
36
hgs
parents: 35
diff changeset
   385
        INFO("VideoListSelectionDialog::exec(): secondary action triggered.")
35
hgs
parents: 34
diff changeset
   386
        return;
hgs
parents: 34
diff changeset
   387
    }
40
hgs
parents: 38
diff changeset
   388
    
38
hgs
parents: 37
diff changeset
   389
    if(mTypeOfSelection == ESelectCollection)
34
hgs
parents: 30
diff changeset
   390
    {
37
hgs
parents: 36
diff changeset
   391
        mTypeOfSelection = EAddToCollection;
38
hgs
parents: 37
diff changeset
   392
        if(mSelectedAlbumId == TMPXItemId::InvalidId())
35
hgs
parents: 34
diff changeset
   393
        {
50
hgs
parents: 40
diff changeset
   394
            close(); // closes selection dialog if it's open.
hgs
parents: 40
diff changeset
   395
            
40
hgs
parents: 38
diff changeset
   396
            // note this does not leak memory as the dialog will destroy itself upon close.
hgs
parents: 38
diff changeset
   397
            HbInputDialog *dialog = gCreateNewAlbumNameDialog(SELECTION_DIALOG_OBJECT_NAME_NEW_COLLECTION);
38
hgs
parents: 37
diff changeset
   398
            dialog->open(this, SLOT(newAlbumNameDialogFinished(HbAction *)));
37
hgs
parents: 36
diff changeset
   399
       }
hgs
parents: 36
diff changeset
   400
       else
hgs
parents: 36
diff changeset
   401
       {
hgs
parents: 36
diff changeset
   402
           finalize();
35
hgs
parents: 34
diff changeset
   403
       }
37
hgs
parents: 36
diff changeset
   404
    }
hgs
parents: 36
diff changeset
   405
    else
hgs
parents: 36
diff changeset
   406
    {
hgs
parents: 36
diff changeset
   407
        finalize();
35
hgs
parents: 34
diff changeset
   408
    }
37
hgs
parents: 36
diff changeset
   409
}
hgs
parents: 36
diff changeset
   410
hgs
parents: 36
diff changeset
   411
// ---------------------------------------------------------------------------
hgs
parents: 36
diff changeset
   412
// newAlbumNameDialogFinished
hgs
parents: 36
diff changeset
   413
// ---------------------------------------------------------------------------
hgs
parents: 36
diff changeset
   414
//
hgs
parents: 36
diff changeset
   415
void VideoListSelectionDialog::newAlbumNameDialogFinished(HbAction *action)
hgs
parents: 36
diff changeset
   416
{
hgs
parents: 36
diff changeset
   417
    FUNC_LOG;
hgs
parents: 36
diff changeset
   418
    Q_UNUSED(action);
36
hgs
parents: 35
diff changeset
   419
    
37
hgs
parents: 36
diff changeset
   420
    HbInputDialog *dialog = static_cast<HbInputDialog*>(sender());
hgs
parents: 36
diff changeset
   421
    
hgs
parents: 36
diff changeset
   422
    QVariant variant = dialog->value();
hgs
parents: 36
diff changeset
   423
    
hgs
parents: 36
diff changeset
   424
    if(dialog->actions().first() == action && variant.isValid())
hgs
parents: 36
diff changeset
   425
    {
hgs
parents: 36
diff changeset
   426
        QString text = mModel->resolveAlbumName(variant.toString());
50
hgs
parents: 40
diff changeset
   427
        if(!text.isEmpty())
37
hgs
parents: 36
diff changeset
   428
        {
55
hgs
parents: 50
diff changeset
   429
            if(mSelectedVideos.count() == 0 && mModel->rowCount())
40
hgs
parents: 38
diff changeset
   430
            {
hgs
parents: 38
diff changeset
   431
                mNewAlbumText = text;
hgs
parents: 38
diff changeset
   432
                // show video selection dialog
hgs
parents: 38
diff changeset
   433
                HbDialog::open();
hgs
parents: 38
diff changeset
   434
            }
hgs
parents: 38
diff changeset
   435
            else
hgs
parents: 38
diff changeset
   436
            {
hgs
parents: 38
diff changeset
   437
                mSelectedAlbumId = mModel->addNewAlbum(text);
hgs
parents: 38
diff changeset
   438
                finalize(text);
hgs
parents: 38
diff changeset
   439
            }
37
hgs
parents: 36
diff changeset
   440
        }
50
hgs
parents: 40
diff changeset
   441
        else
hgs
parents: 40
diff changeset
   442
        {
hgs
parents: 40
diff changeset
   443
            // new album name empty, effectively cancel, so disconnect signals.
hgs
parents: 40
diff changeset
   444
            disconnectSignals();
hgs
parents: 40
diff changeset
   445
        }
hgs
parents: 40
diff changeset
   446
    }
hgs
parents: 40
diff changeset
   447
    else
hgs
parents: 40
diff changeset
   448
    {
hgs
parents: 40
diff changeset
   449
        // new album dialog cancelled, disconnect signals.
hgs
parents: 40
diff changeset
   450
        disconnectSignals();
37
hgs
parents: 36
diff changeset
   451
    }
hgs
parents: 36
diff changeset
   452
}
hgs
parents: 36
diff changeset
   453
hgs
parents: 36
diff changeset
   454
// ---------------------------------------------------------------------------
hgs
parents: 36
diff changeset
   455
// finalize
hgs
parents: 36
diff changeset
   456
// ---------------------------------------------------------------------------
hgs
parents: 36
diff changeset
   457
//
hgs
parents: 36
diff changeset
   458
void VideoListSelectionDialog::finalize(QString albumName)
hgs
parents: 36
diff changeset
   459
{
36
hgs
parents: 35
diff changeset
   460
    // Must be checked again if type was ESelectCollection
40
hgs
parents: 38
diff changeset
   461
    if(mTypeOfSelection == EAddToCollection ||
hgs
parents: 38
diff changeset
   462
       mTypeOfSelection == ECreateCollection)
hgs
parents: 38
diff changeset
   463
    {
hgs
parents: 38
diff changeset
   464
        if(mTypeOfSelection == ECreateCollection)
hgs
parents: 38
diff changeset
   465
        {
hgs
parents: 38
diff changeset
   466
            mSelectedAlbumId = mModel->addNewAlbum(mNewAlbumText);
hgs
parents: 38
diff changeset
   467
            albumName = mNewAlbumText;
hgs
parents: 38
diff changeset
   468
        }
hgs
parents: 38
diff changeset
   469
        
35
hgs
parents: 34
diff changeset
   470
        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
hgs
parents: 34
diff changeset
   471
        {
hgs
parents: 34
diff changeset
   472
            if(mModel->addItemsInAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
hgs
parents: 34
diff changeset
   473
            {
hgs
parents: 34
diff changeset
   474
                if(!albumName.length())
34
hgs
parents: 30
diff changeset
   475
                {
35
hgs
parents: 34
diff changeset
   476
                    albumName = getSelectedName();
34
hgs
parents: 30
diff changeset
   477
                }
38
hgs
parents: 37
diff changeset
   478
                QList<QVariant> dataList;
hgs
parents: 37
diff changeset
   479
                dataList.append(QVariant(mSelectedVideos.count()));
hgs
parents: 37
diff changeset
   480
                dataList.append(QVariant(albumName));
hgs
parents: 37
diff changeset
   481
                QVariant data = dataList;
35
hgs
parents: 34
diff changeset
   482
                VideoCollectionViewUtils::instance().showStatusMsgSlot(
hgs
parents: 34
diff changeset
   483
                        VideoCollectionCommon::statusVideosAddedToCollection,
hgs
parents: 34
diff changeset
   484
                        data);
34
hgs
parents: 30
diff changeset
   485
            }
hgs
parents: 30
diff changeset
   486
        }
35
hgs
parents: 34
diff changeset
   487
    }
hgs
parents: 34
diff changeset
   488
    else if(mTypeOfSelection == ERemoveFromCollection)
hgs
parents: 34
diff changeset
   489
    {
hgs
parents: 34
diff changeset
   490
        if(mSelectedAlbumId != TMPXItemId::InvalidId() && mSelectedVideos.count())
34
hgs
parents: 30
diff changeset
   491
        {
35
hgs
parents: 34
diff changeset
   492
            if(mModel->removeItemsFromAlbum(mSelectedAlbumId, mSelectedVideos.toList()) == 0)
hgs
parents: 34
diff changeset
   493
            {
hgs
parents: 34
diff changeset
   494
                QVariant data = getSelectedName();
hgs
parents: 34
diff changeset
   495
                VideoCollectionViewUtils::instance().showStatusMsgSlot(
hgs
parents: 34
diff changeset
   496
                        VideoCollectionCommon::statusVideosRemovedFromCollection,
hgs
parents: 34
diff changeset
   497
                        data);
hgs
parents: 34
diff changeset
   498
            }
34
hgs
parents: 30
diff changeset
   499
        }
35
hgs
parents: 34
diff changeset
   500
    }
hgs
parents: 34
diff changeset
   501
    // user is deleting videos
hgs
parents: 34
diff changeset
   502
    else if(mTypeOfSelection == EDeleteVideos)
hgs
parents: 34
diff changeset
   503
    {
hgs
parents: 34
diff changeset
   504
        QVariant data = mSelection.indexes().count();
hgs
parents: 34
diff changeset
   505
        VideoCollectionViewUtils::instance().showStatusMsgSlot(
hgs
parents: 34
diff changeset
   506
                VideoCollectionCommon::statusDeleteInProgress,
hgs
parents: 34
diff changeset
   507
                data);
hgs
parents: 34
diff changeset
   508
        // delete items            
hgs
parents: 34
diff changeset
   509
        mModel->deleteItems(mSelection.indexes());
34
hgs
parents: 30
diff changeset
   510
    } 
30
hgs
parents:
diff changeset
   511
}
hgs
parents:
diff changeset
   512
hgs
parents:
diff changeset
   513
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   514
// markAllStateChanged
hgs
parents:
diff changeset
   515
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   516
//
hgs
parents:
diff changeset
   517
void VideoListSelectionDialog::markAllStateChangedSlot(int state)
34
hgs
parents: 30
diff changeset
   518
{ 
36
hgs
parents: 35
diff changeset
   519
	FUNC_LOG;
30
hgs
parents:
diff changeset
   520
    if(mForcedCheck)
hgs
parents:
diff changeset
   521
    {
hgs
parents:
diff changeset
   522
        return;
hgs
parents:
diff changeset
   523
    }
36
hgs
parents: 35
diff changeset
   524
    if(state == Qt::Checked)
30
hgs
parents:
diff changeset
   525
    {
34
hgs
parents: 30
diff changeset
   526
        mListWidget->selectAll();
30
hgs
parents:
diff changeset
   527
    }
hgs
parents:
diff changeset
   528
    else
hgs
parents:
diff changeset
   529
    {
34
hgs
parents: 30
diff changeset
   530
        mListWidget->clearSelection();
30
hgs
parents:
diff changeset
   531
    }   
hgs
parents:
diff changeset
   532
}
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   535
// selectionChangedSlot
hgs
parents:
diff changeset
   536
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   537
//
hgs
parents:
diff changeset
   538
void VideoListSelectionDialog::selectionChangedSlot(const QItemSelection &selected, const QItemSelection &deselected)
hgs
parents:
diff changeset
   539
{  
36
hgs
parents: 35
diff changeset
   540
	FUNC_LOG;
hgs
parents: 35
diff changeset
   541
    if(!mPrimaryAction || mTypeOfSelection == ESelectCollection)
30
hgs
parents:
diff changeset
   542
    {
36
hgs
parents: 35
diff changeset
   543
        INFO("VideoListSelectionDialog::selectionChangedSlot(): no primary action or we are selecting collection.")
30
hgs
parents:
diff changeset
   544
        return;
hgs
parents:
diff changeset
   545
    }
34
hgs
parents: 30
diff changeset
   546
   
30
hgs
parents:
diff changeset
   547
    if(selected.indexes().count() > 0)
hgs
parents:
diff changeset
   548
    {
hgs
parents:
diff changeset
   549
        mSelection.merge(selected, QItemSelectionModel::Select);
hgs
parents:
diff changeset
   550
    }
hgs
parents:
diff changeset
   551
    
hgs
parents:
diff changeset
   552
    if(deselected.indexes().count() >  0)
hgs
parents:
diff changeset
   553
    {
hgs
parents:
diff changeset
   554
        mSelection.merge(deselected, QItemSelectionModel::Deselect);
hgs
parents:
diff changeset
   555
    }
hgs
parents:
diff changeset
   556
    
hgs
parents:
diff changeset
   557
    if(mSelection.indexes().count() > 0)
hgs
parents:
diff changeset
   558
    {
36
hgs
parents: 35
diff changeset
   559
        mPrimaryAction->setDisabled(false);
40
hgs
parents: 38
diff changeset
   560
        
hgs
parents: 38
diff changeset
   561
        if(mTypeOfSelection == ECreateCollection)
hgs
parents: 38
diff changeset
   562
        {
hgs
parents: 38
diff changeset
   563
            mPrimaryAction->setText(hbTrId("txt_common_button_add"));
hgs
parents: 38
diff changeset
   564
        }
30
hgs
parents:
diff changeset
   565
    }
hgs
parents:
diff changeset
   566
    else
hgs
parents:
diff changeset
   567
    {
40
hgs
parents: 38
diff changeset
   568
        mPrimaryAction->setDisabled(mTypeOfSelection != ECreateCollection);
hgs
parents: 38
diff changeset
   569
        
hgs
parents: 38
diff changeset
   570
        if(mTypeOfSelection == ECreateCollection)
hgs
parents: 38
diff changeset
   571
        {
hgs
parents: 38
diff changeset
   572
            mPrimaryAction->setText(hbTrId("txt_common_button_ok"));
hgs
parents: 38
diff changeset
   573
        }
30
hgs
parents:
diff changeset
   574
    }    
hgs
parents:
diff changeset
   575
hgs
parents:
diff changeset
   576
    updateCounterSlot();
hgs
parents:
diff changeset
   577
}
hgs
parents:
diff changeset
   578
hgs
parents:
diff changeset
   579
// ---------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   580
// singleItemSelectedSlot
hgs
parents: 30
diff changeset
   581
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   582
//
hgs
parents: 30
diff changeset
   583
void VideoListSelectionDialog::singleItemSelectedSlot(const QModelIndex &index)
hgs
parents: 30
diff changeset
   584
{
36
hgs
parents: 35
diff changeset
   585
	FUNC_LOG;
34
hgs
parents: 30
diff changeset
   586
    if(mTypeOfSelection == ESelectCollection)
hgs
parents: 30
diff changeset
   587
    {
hgs
parents: 30
diff changeset
   588
       if(index.isValid())
36
hgs
parents: 35
diff changeset
   589
       {
34
hgs
parents: 30
diff changeset
   590
           mSelectedAlbumId = mModel->getMediaIdAtIndex(index);            
36
hgs
parents: 35
diff changeset
   591
           mPrimaryAction->trigger();
34
hgs
parents: 30
diff changeset
   592
       }
hgs
parents: 30
diff changeset
   593
    }
hgs
parents: 30
diff changeset
   594
}
hgs
parents: 30
diff changeset
   595
hgs
parents: 30
diff changeset
   596
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   597
// modelReadySlot
hgs
parents: 30
diff changeset
   598
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   599
//
hgs
parents: 30
diff changeset
   600
void VideoListSelectionDialog::modelReadySlot()
hgs
parents: 30
diff changeset
   601
{
36
hgs
parents: 35
diff changeset
   602
	FUNC_LOG;
50
hgs
parents: 40
diff changeset
   603
    mModelReady = true;
hgs
parents: 40
diff changeset
   604
    
hgs
parents: 40
diff changeset
   605
	if(mTypeOfSelection != ESelectCollection)
hgs
parents: 40
diff changeset
   606
	{
hgs
parents: 40
diff changeset
   607
        if(!mModel->rowCount())
hgs
parents: 40
diff changeset
   608
        {
hgs
parents: 40
diff changeset
   609
            // no items, finish right away
hgs
parents: 40
diff changeset
   610
            INFO("VideoListSelectionDialog::modelReadySlot(): nothing to show, finishing.");
hgs
parents: 40
diff changeset
   611
            
hgs
parents: 40
diff changeset
   612
            if(mTypeOfSelection == EAddToCollection ||
hgs
parents: 40
diff changeset
   613
               mTypeOfSelection == ERemoveFromCollection)
hgs
parents: 40
diff changeset
   614
            {
hgs
parents: 40
diff changeset
   615
                primaryActionTriggeredSlot();
hgs
parents: 40
diff changeset
   616
            }
hgs
parents: 40
diff changeset
   617
            else
hgs
parents: 40
diff changeset
   618
            {
hgs
parents: 40
diff changeset
   619
                finishedSlot(mPrimaryAction);
hgs
parents: 40
diff changeset
   620
            }
hgs
parents: 40
diff changeset
   621
            
hgs
parents: 40
diff changeset
   622
            return;
hgs
parents: 40
diff changeset
   623
        }
hgs
parents: 40
diff changeset
   624
            
hgs
parents: 40
diff changeset
   625
        // if dialog is not yet visible, bring it visible. 
hgs
parents: 40
diff changeset
   626
        if(!isVisible() && mTypeOfSelection != ECreateCollection)
hgs
parents: 40
diff changeset
   627
        {
hgs
parents: 40
diff changeset
   628
            // scroll list back to top
hgs
parents: 40
diff changeset
   629
            mListWidget->scrollTo(mModel->index(0, 0));
hgs
parents: 40
diff changeset
   630
            
hgs
parents: 40
diff changeset
   631
            HbDialog::open();
hgs
parents: 40
diff changeset
   632
        }
hgs
parents: 40
diff changeset
   633
        
hgs
parents: 40
diff changeset
   634
        updateCounterSlot();
hgs
parents: 40
diff changeset
   635
	}
hgs
parents: 40
diff changeset
   636
}
hgs
parents: 40
diff changeset
   637
hgs
parents: 40
diff changeset
   638
// ---------------------------------------------------------------------------
hgs
parents: 40
diff changeset
   639
// albumListReadySlot
hgs
parents: 40
diff changeset
   640
// ---------------------------------------------------------------------------
hgs
parents: 40
diff changeset
   641
//
hgs
parents: 40
diff changeset
   642
void VideoListSelectionDialog::albumListReadySlot()
hgs
parents: 40
diff changeset
   643
{
hgs
parents: 40
diff changeset
   644
    mAlbumListReady = true;
hgs
parents: 40
diff changeset
   645
    
35
hgs
parents: 34
diff changeset
   646
    if(mTypeOfSelection == ESelectCollection)
34
hgs
parents: 30
diff changeset
   647
    {
35
hgs
parents: 34
diff changeset
   648
        if(!mModel->rowCount())
34
hgs
parents: 30
diff changeset
   649
        {
50
hgs
parents: 40
diff changeset
   650
            finishedSlot(mPrimaryAction);
35
hgs
parents: 34
diff changeset
   651
            return;
34
hgs
parents: 30
diff changeset
   652
        }
50
hgs
parents: 40
diff changeset
   653
            
hgs
parents: 40
diff changeset
   654
        // if dialog is not yet visible, bring it visible. 
hgs
parents: 40
diff changeset
   655
        if(!isVisible())
hgs
parents: 40
diff changeset
   656
        {
hgs
parents: 40
diff changeset
   657
            // scroll list back to top
hgs
parents: 40
diff changeset
   658
            mListWidget->scrollTo(mModel->index(0, 0));
hgs
parents: 40
diff changeset
   659
            
hgs
parents: 40
diff changeset
   660
            HbDialog::open();
hgs
parents: 40
diff changeset
   661
        }
hgs
parents: 40
diff changeset
   662
        
hgs
parents: 40
diff changeset
   663
        updateCounterSlot();
35
hgs
parents: 34
diff changeset
   664
    }
34
hgs
parents: 30
diff changeset
   665
}
hgs
parents: 30
diff changeset
   666
hgs
parents: 30
diff changeset
   667
// ---------------------------------------------------------------------------
30
hgs
parents:
diff changeset
   668
// updateCounterSlot
hgs
parents:
diff changeset
   669
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   670
//
hgs
parents:
diff changeset
   671
void VideoListSelectionDialog::updateCounterSlot()
hgs
parents:
diff changeset
   672
{
36
hgs
parents: 35
diff changeset
   673
	FUNC_LOG;
35
hgs
parents: 34
diff changeset
   674
    if(!mItemCount)
30
hgs
parents:
diff changeset
   675
    {
hgs
parents:
diff changeset
   676
        return;
hgs
parents:
diff changeset
   677
    }
35
hgs
parents: 34
diff changeset
   678
hgs
parents: 34
diff changeset
   679
    int rowCount = mModel->rowCount();       
30
hgs
parents:
diff changeset
   680
    int selectionCount = mSelection.indexes().count();
35
hgs
parents: 34
diff changeset
   681
    mItemCount->setPlainText(tr("%1/%2").arg(selectionCount).arg(rowCount));  
30
hgs
parents:
diff changeset
   682
    mForcedCheck = true;
hgs
parents:
diff changeset
   683
    if(selectionCount == rowCount && rowCount > 0)
hgs
parents:
diff changeset
   684
    {     
hgs
parents:
diff changeset
   685
        mCheckBox->setChecked(true);
hgs
parents:
diff changeset
   686
    }
hgs
parents:
diff changeset
   687
    else
hgs
parents:
diff changeset
   688
    {
hgs
parents:
diff changeset
   689
        mCheckBox->setChecked(false);
hgs
parents:
diff changeset
   690
    }
hgs
parents:
diff changeset
   691
    mForcedCheck = false;
hgs
parents:
diff changeset
   692
}
hgs
parents:
diff changeset
   693
hgs
parents:
diff changeset
   694
// ---------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   695
// primaryActionTriggeredSlot
hgs
parents: 30
diff changeset
   696
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   697
//
hgs
parents: 30
diff changeset
   698
void VideoListSelectionDialog::primaryActionTriggeredSlot()
hgs
parents: 30
diff changeset
   699
{
36
hgs
parents: 35
diff changeset
   700
	FUNC_LOG;
34
hgs
parents: 30
diff changeset
   701
    // reconnect primary action
36
hgs
parents: 35
diff changeset
   702
    mPrimaryAction->disconnect(SIGNAL(triggered()));
hgs
parents: 35
diff changeset
   703
    connect(mPrimaryAction, SIGNAL(triggered()), this, SLOT(close()));
hgs
parents: 35
diff changeset
   704
34
hgs
parents: 30
diff changeset
   705
    // update video items selection here before content changes.
50
hgs
parents: 40
diff changeset
   706
    QModelIndexList indexes = mSelection.indexes();
hgs
parents: 40
diff changeset
   707
    int count = indexes.count();
34
hgs
parents: 30
diff changeset
   708
    TMPXItemId id = TMPXItemId::InvalidId();
hgs
parents: 30
diff changeset
   709
    for(int i = 0; i < count; ++i)
hgs
parents: 30
diff changeset
   710
    {
50
hgs
parents: 40
diff changeset
   711
        id = mModel->getMediaIdAtIndex(indexes.at(i));
34
hgs
parents: 30
diff changeset
   712
        if(id.iId2 == KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   713
        {
hgs
parents: 30
diff changeset
   714
            mSelectedVideos.insert(id);
hgs
parents: 30
diff changeset
   715
        }
hgs
parents: 30
diff changeset
   716
    }
hgs
parents: 30
diff changeset
   717
    
40
hgs
parents: 38
diff changeset
   718
    if(mSelectedAlbumId != TMPXItemId::InvalidId() ||
hgs
parents: 38
diff changeset
   719
       mTypeOfSelection == ECreateCollection)
34
hgs
parents: 30
diff changeset
   720
    {
36
hgs
parents: 35
diff changeset
   721
        INFO("VideoListSelectionDialog::primaryActionTriggeredSlot(): closing dialog.")
hgs
parents: 35
diff changeset
   722
        mPrimaryAction->trigger();
34
hgs
parents: 30
diff changeset
   723
        return;
hgs
parents: 30
diff changeset
   724
    }
hgs
parents: 30
diff changeset
   725
    else if(mTypeOfSelection == EAddToCollection)
hgs
parents: 30
diff changeset
   726
    {
36
hgs
parents: 35
diff changeset
   727
        INFO("VideoListSelectionDialog::primaryActionTriggeredSlot(): activating collection selection.")
34
hgs
parents: 30
diff changeset
   728
        // videos for collection selected, but collection 
hgs
parents: 30
diff changeset
   729
        // not yet selected, activate selection for it
hgs
parents: 30
diff changeset
   730
        mTypeOfSelection = ESelectCollection;
hgs
parents: 30
diff changeset
   731
        activateSelection();
hgs
parents: 30
diff changeset
   732
   }   
hgs
parents: 30
diff changeset
   733
}
hgs
parents: 30
diff changeset
   734
hgs
parents: 30
diff changeset
   735
// ---------------------------------------------------------------------------
30
hgs
parents:
diff changeset
   736
// connectSignals
hgs
parents:
diff changeset
   737
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   738
//
hgs
parents:
diff changeset
   739
void VideoListSelectionDialog::connectSignals()
35
hgs
parents: 34
diff changeset
   740
{   
36
hgs
parents: 35
diff changeset
   741
	FUNC_LOG;
35
hgs
parents: 34
diff changeset
   742
    // dialog finished
hgs
parents: 34
diff changeset
   743
    connect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
hgs
parents: 34
diff changeset
   744
    
30
hgs
parents:
diff changeset
   745
    // selection changes
34
hgs
parents: 30
diff changeset
   746
    connect(mListWidget, SIGNAL(activated(const QModelIndex&)),
hgs
parents: 30
diff changeset
   747
            this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
hgs
parents: 30
diff changeset
   748
    
hgs
parents: 30
diff changeset
   749
    connect(mListWidget->selectionModel(), SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
hgs
parents: 30
diff changeset
   750
            this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
36
hgs
parents: 35
diff changeset
   751
30
hgs
parents:
diff changeset
   752
    // model changes signals
50
hgs
parents: 40
diff changeset
   753
    connect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));
hgs
parents: 40
diff changeset
   754
    connect(mModel->sourceModel(), SIGNAL(albumListReady()), this, SLOT(albumListReadySlot()));
hgs
parents: 40
diff changeset
   755
    connect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));
30
hgs
parents:
diff changeset
   756
    
hgs
parents:
diff changeset
   757
    // mark all state changes
hgs
parents:
diff changeset
   758
    connect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));
hgs
parents:
diff changeset
   759
}
hgs
parents:
diff changeset
   760
 
hgs
parents:
diff changeset
   761
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   762
// disconnectSignals
hgs
parents:
diff changeset
   763
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   764
//
hgs
parents:
diff changeset
   765
void VideoListSelectionDialog::disconnectSignals()
35
hgs
parents: 34
diff changeset
   766
{   
36
hgs
parents: 35
diff changeset
   767
	FUNC_LOG;
35
hgs
parents: 34
diff changeset
   768
    disconnect(this, SIGNAL(finished(HbAction*)), this, SLOT(finishedSlot(HbAction*)));
hgs
parents: 34
diff changeset
   769
    
34
hgs
parents: 30
diff changeset
   770
    disconnect(mListWidget, SIGNAL(activated(const QModelIndex&)),
hgs
parents: 30
diff changeset
   771
                this, SLOT(singleItemSelectedSlot(const QModelIndex&)));
30
hgs
parents:
diff changeset
   772
    
34
hgs
parents: 30
diff changeset
   773
    disconnect(mListWidget->selectionModel(), SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
30
hgs
parents:
diff changeset
   774
                            this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection &)));
36
hgs
parents: 35
diff changeset
   775
30
hgs
parents:
diff changeset
   776
    // model changes signals
35
hgs
parents: 34
diff changeset
   777
    disconnect(mModel->sourceModel(), SIGNAL(modelReady()), this, SLOT(modelReadySlot()));    
50
hgs
parents: 40
diff changeset
   778
    disconnect(mModel->sourceModel(), SIGNAL(albumListReady()), this, SLOT(albumListReadySlot()));
35
hgs
parents: 34
diff changeset
   779
    disconnect(mModel->sourceModel(), SIGNAL(modelChanged()), this, SLOT(updateCounterSlot()));   
30
hgs
parents:
diff changeset
   780
    
hgs
parents:
diff changeset
   781
    // mark all state changes
36
hgs
parents: 35
diff changeset
   782
    disconnect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(markAllStateChangedSlot(int)));
30
hgs
parents:
diff changeset
   783
}
hgs
parents:
diff changeset
   784
34
hgs
parents: 30
diff changeset
   785
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   786
// getSelectedName
hgs
parents: 30
diff changeset
   787
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   788
//
hgs
parents: 30
diff changeset
   789
QString VideoListSelectionDialog::getSelectedName()
hgs
parents: 30
diff changeset
   790
{
36
hgs
parents: 35
diff changeset
   791
	FUNC_LOG;
34
hgs
parents: 30
diff changeset
   792
    QString name;
hgs
parents: 30
diff changeset
   793
    if(mSelectedAlbumId.iId2 > KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   794
    {
58
hgs
parents: 55
diff changeset
   795
        VideoProxyModelGeneric *model = 
66
hgs
parents: 58
diff changeset
   796
                VideoCollectionWrapper::instance().getGenericModel();
34
hgs
parents: 30
diff changeset
   797
        if(!model)
hgs
parents: 30
diff changeset
   798
        {
hgs
parents: 30
diff changeset
   799
            return name;
hgs
parents: 30
diff changeset
   800
        }
hgs
parents: 30
diff changeset
   801
        QModelIndex index = model->indexOfId(mSelectedAlbumId);
hgs
parents: 30
diff changeset
   802
        if(index.isValid())
hgs
parents: 30
diff changeset
   803
        {
36
hgs
parents: 35
diff changeset
   804
            name = model->data(index, VideoCollectionCommon::KeyTitle).toString();
34
hgs
parents: 30
diff changeset
   805
        }
hgs
parents: 30
diff changeset
   806
    }
hgs
parents: 30
diff changeset
   807
    return name;
hgs
parents: 30
diff changeset
   808
}
30
hgs
parents:
diff changeset
   809
38
hgs
parents: 37
diff changeset
   810
// End of file