videocollection/videocollectionview/src/videolistmenu.cpp
author hgs
Tue, 05 Oct 2010 09:26:49 +0300
changeset 66 adb51f74b890
parent 63 4707a0db12f6
child 67 72c709219fcd
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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 view class source code
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// Version : %version: 1 %
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <hbmenu.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "videolistmenu.h"
hgs
parents:
diff changeset
    25
#include "videolistselectiondialog.h"
hgs
parents:
diff changeset
    26
#include "videocollectionviewutils.h"
hgs
parents:
diff changeset
    27
#include "videolistwidget.h"
hgs
parents:
diff changeset
    28
#include "videolistview.h"
hgs
parents:
diff changeset
    29
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    30
#include "videoproxymodelgeneric.h"
hgs
parents:
diff changeset
    31
#include "videocollectionuiloader.h"
hgs
parents:
diff changeset
    32
#include "videocollectiontrace.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    35
// Constructor
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
//
hgs
parents:
diff changeset
    38
VideoListMenu::VideoListMenu(VideoCollectionUiLoader *uiLoader, VideoListView* parent) 
hgs
parents:
diff changeset
    39
    : QObject(parent)
hgs
parents:
diff changeset
    40
    , mUiUtils(VideoCollectionViewUtils::instance())
hgs
parents:
diff changeset
    41
    , mUiLoader(uiLoader)
hgs
parents:
diff changeset
    42
    , mListView(parent)
hgs
parents:
diff changeset
    43
    , mVideoServices(0)
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
	FUNC_LOG;
hgs
parents:
diff changeset
    46
}
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
// Destructor
hgs
parents:
diff changeset
    50
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
//
hgs
parents:
diff changeset
    52
VideoListMenu::~VideoListMenu()
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
	FUNC_LOG;
hgs
parents:
diff changeset
    55
    
hgs
parents:
diff changeset
    56
    mSortingRoles.clear();
hgs
parents:
diff changeset
    57
    
hgs
parents:
diff changeset
    58
    if(mVideoServices)
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
        mVideoServices->decreaseReferenceCount();
hgs
parents:
diff changeset
    61
        mVideoServices = 0;
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
}
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    66
// initializeView()
hgs
parents:
diff changeset
    67
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    68
//
hgs
parents:
diff changeset
    69
int VideoListMenu::initializeMenu()
hgs
parents:
diff changeset
    70
{
hgs
parents:
diff changeset
    71
	FUNC_LOG;
hgs
parents:
diff changeset
    72
	if(!mUiLoader)
hgs
parents:
diff changeset
    73
	{
hgs
parents:
diff changeset
    74
		return -1;
hgs
parents:
diff changeset
    75
	}
hgs
parents:
diff changeset
    76
	
hgs
parents:
diff changeset
    77
    if (mUiUtils.isService())
hgs
parents:
diff changeset
    78
    {
hgs
parents:
diff changeset
    79
        INFO("VideoListMenu::initializeMenu() initializing service.");
hgs
parents:
diff changeset
    80
        if (!mVideoServices)
hgs
parents:
diff changeset
    81
        {
hgs
parents:
diff changeset
    82
            mVideoServices = VideoServices::instance();
hgs
parents:
diff changeset
    83
        }
hgs
parents:
diff changeset
    84
         
hgs
parents:
diff changeset
    85
    }
hgs
parents:
diff changeset
    86
	
hgs
parents:
diff changeset
    87
    // start loading objects and widgets
hgs
parents:
diff changeset
    88
    QList<VideoCollectionUiLoaderParam> params;
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
    91
        DOCML_NAME_OPTIONS_MENU,
hgs
parents:
diff changeset
    92
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
    93
        true,
hgs
parents:
diff changeset
    94
        VideoCollectionUiLoaderParam::LoadPhasePrimary));
hgs
parents:
diff changeset
    95
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
    96
        DOCML_NAME_ADD_TO_COLLECTION,
hgs
parents:
diff changeset
    97
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
    98
        false,
hgs
parents:
diff changeset
    99
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   100
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   101
        DOCML_NAME_CREATE_COLLECTION,
hgs
parents:
diff changeset
   102
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   103
        false,
hgs
parents:
diff changeset
   104
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   105
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   106
        DOCML_NAME_DELETE_MULTIPLE,
hgs
parents:
diff changeset
   107
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   108
        false,
hgs
parents:
diff changeset
   109
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   110
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   111
        DOCML_NAME_SORT_MENU,
hgs
parents:
diff changeset
   112
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   113
        true,
hgs
parents:
diff changeset
   114
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   115
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   116
        DOCML_NAME_SORT_BY_DATE,
hgs
parents:
diff changeset
   117
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   118
        false,
hgs
parents:
diff changeset
   119
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   120
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   121
        DOCML_NAME_SORT_BY_NAME,
hgs
parents:
diff changeset
   122
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   123
        false,
hgs
parents:
diff changeset
   124
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   125
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   126
        DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS,
hgs
parents:
diff changeset
   127
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   128
        false,
hgs
parents:
diff changeset
   129
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   130
    params.append(VideoCollectionUiLoaderParam(
hgs
parents:
diff changeset
   131
        DOCML_NAME_SORT_BY_SIZE,
hgs
parents:
diff changeset
   132
        DOCML_VIDEOCOLLECTIONVIEW_FILE,
hgs
parents:
diff changeset
   133
        false,
hgs
parents:
diff changeset
   134
        VideoCollectionUiLoaderParam::LoadPhaseSecondary));
hgs
parents:
diff changeset
   135
    
hgs
parents:
diff changeset
   136
    mUiLoader->addData(params,
hgs
parents:
diff changeset
   137
        this,
hgs
parents:
diff changeset
   138
        SLOT(objectReadySlot(QObject*, const QString&)));
hgs
parents:
diff changeset
   139
    
hgs
parents:
diff changeset
   140
    params.clear();
hgs
parents:
diff changeset
   141
    
hgs
parents:
diff changeset
   142
    return 0;
hgs
parents:
diff changeset
   143
}
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   146
// showAction()
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
//
hgs
parents:
diff changeset
   149
void VideoListMenu::showAction(bool show, const QString &name)
hgs
parents:
diff changeset
   150
{
hgs
parents:
diff changeset
   151
	FUNC_LOG;
hgs
parents:
diff changeset
   152
    HbAction *action = mUiLoader->findObject<HbAction>(name);
hgs
parents:
diff changeset
   153
    if (!action)
hgs
parents:
diff changeset
   154
    {
hgs
parents:
diff changeset
   155
        // must be menu widget
hgs
parents:
diff changeset
   156
        HbMenu *menu = mUiLoader->findWidget<HbMenu>(name);
hgs
parents:
diff changeset
   157
        if (menu)
hgs
parents:
diff changeset
   158
        {
hgs
parents:
diff changeset
   159
            action = menu->menuAction();
hgs
parents:
diff changeset
   160
        }
hgs
parents:
diff changeset
   161
    }
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    // hide or show action
hgs
parents:
diff changeset
   164
    if (action)
hgs
parents:
diff changeset
   165
    {
hgs
parents:
diff changeset
   166
        action->setVisible(show);
hgs
parents:
diff changeset
   167
    }
hgs
parents:
diff changeset
   168
}
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
// startSorting()
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   173
//
hgs
parents:
diff changeset
   174
void VideoListMenu::startSorting()
hgs
parents:
diff changeset
   175
{
hgs
parents:
diff changeset
   176
	FUNC_LOG;
hgs
parents:
diff changeset
   177
	
hgs
parents:
diff changeset
   178
    HbMenu *optionsMenu =
hgs
parents:
diff changeset
   179
        mUiLoader->findWidget<HbMenu>(
hgs
parents:
diff changeset
   180
            DOCML_NAME_OPTIONS_MENU);
hgs
parents:
diff changeset
   181
    
hgs
parents:
diff changeset
   182
    VideoListWidget* currentList = mListView->getCurrentList();
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
    if (optionsMenu && currentList)
hgs
parents:
diff changeset
   185
    {
hgs
parents:
diff changeset
   186
        // get sorting role from active action
hgs
parents:
diff changeset
   187
        HbAction* action = optionsMenu->activeAction();
hgs
parents:
diff changeset
   188
        HbMenu* sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   189
        if(action == sortMenu->menuAction()) // make sure that active action is the sort menu. 
hgs
parents:
diff changeset
   190
        {
hgs
parents:
diff changeset
   191
            HbAction* action = sortMenu->activeAction();
hgs
parents:
diff changeset
   192
            if(action)
hgs
parents:
diff changeset
   193
            {
hgs
parents:
diff changeset
   194
                doSorting(mSortingRoles[action]);
hgs
parents:
diff changeset
   195
            }
hgs
parents:
diff changeset
   196
        }
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
}
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   201
// doSorting()
hgs
parents:
diff changeset
   202
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   203
//
hgs
parents:
diff changeset
   204
void VideoListMenu::doSorting(int role)
hgs
parents:
diff changeset
   205
{
hgs
parents:
diff changeset
   206
	FUNC_LOG;
hgs
parents:
diff changeset
   207
	
hgs
parents:
diff changeset
   208
    VideoListWidget* currentList = mListView->getCurrentList();
hgs
parents:
diff changeset
   209
    
hgs
parents:
diff changeset
   210
	if(!currentList || !currentList->getModel())
hgs
parents:
diff changeset
   211
	{
hgs
parents:
diff changeset
   212
	    // no list or model, cannot sort
hgs
parents:
diff changeset
   213
	    return;
hgs
parents:
diff changeset
   214
	}
hgs
parents:
diff changeset
   215
	// sort model
hgs
parents:
diff changeset
   216
	Qt::SortOrder order(Qt::AscendingOrder);
hgs
parents:
diff changeset
   217
	VideoProxyModelGeneric *model = currentList->getModel();
hgs
parents:
diff changeset
   218
	if(model->sortRole() == role && model->sortOrder() == Qt::AscendingOrder)
hgs
parents:
diff changeset
   219
	{
hgs
parents:
diff changeset
   220
		order = Qt::DescendingOrder;
hgs
parents:
diff changeset
   221
	}
hgs
parents:
diff changeset
   222
	model->doSorting(role, order);
hgs
parents:
diff changeset
   223
	
hgs
parents:
diff changeset
   224
	// for video related sorting, all videos list and collection content
hgs
parents:
diff changeset
   225
	// list, sorting orders are same all the time
hgs
parents:
diff changeset
   226
	VideoListWidget *anotherVideosList = 0;
hgs
parents:
diff changeset
   227
	VideoCollectionCommon::TCollectionLevels level = currentList->getLevel();
hgs
parents:
diff changeset
   228
	if (level == VideoCollectionCommon::ELevelDefaultColl ||
hgs
parents:
diff changeset
   229
	    level == VideoCollectionCommon::ELevelAlbum)
hgs
parents:
diff changeset
   230
	{
hgs
parents:
diff changeset
   231
	    anotherVideosList = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
hgs
parents:
diff changeset
   232
	}
hgs
parents:
diff changeset
   233
	else if(level == VideoCollectionCommon::ELevelVideos)
hgs
parents:
diff changeset
   234
	{
hgs
parents:
diff changeset
   235
	    anotherVideosList = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);
hgs
parents:
diff changeset
   236
	}
hgs
parents:
diff changeset
   237
    if(anotherVideosList && anotherVideosList->getModel())
hgs
parents:
diff changeset
   238
    {
hgs
parents:
diff changeset
   239
        anotherVideosList->getModel()->doSorting(role, order);
hgs
parents:
diff changeset
   240
    }
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
    // save sorting values only if the application is not started as a service
hgs
parents:
diff changeset
   243
	if (!mVideoServices)
hgs
parents:
diff changeset
   244
	{
hgs
parents:
diff changeset
   245
	    // save sorting values
hgs
parents:
diff changeset
   246
	    mUiUtils.saveSortingValues(role, order, currentList->getLevel());
hgs
parents:
diff changeset
   247
	}
hgs
parents:
diff changeset
   248
}
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   251
// deleteItemsSlot
hgs
parents:
diff changeset
   252
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   253
//
hgs
parents:
diff changeset
   254
void VideoListMenu::deleteItemsSlot()
hgs
parents:
diff changeset
   255
{
hgs
parents:
diff changeset
   256
	FUNC_LOG;
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
    VideoListSelectionDialog *dialog =
hgs
parents:
diff changeset
   259
        mUiLoader->findWidget<VideoListSelectionDialog>(
hgs
parents:
diff changeset
   260
            DOCML_NAME_DIALOG);
hgs
parents:
diff changeset
   261
    
hgs
parents:
diff changeset
   262
    if (dialog)
hgs
parents:
diff changeset
   263
    {
hgs
parents:
diff changeset
   264
        TMPXItemId collectionId = mListView->getCurrentList()->getModel()->getOpenItem();
hgs
parents:
diff changeset
   265
        dialog->setupContent(VideoListSelectionDialog::EDeleteVideos, collectionId); 
hgs
parents:
diff changeset
   266
        dialog->exec();
hgs
parents:
diff changeset
   267
    }
hgs
parents:
diff changeset
   268
}
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   271
// createCollectionSlot
hgs
parents:
diff changeset
   272
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   273
//
hgs
parents:
diff changeset
   274
void VideoListMenu::createCollectionSlot()
hgs
parents:
diff changeset
   275
{
hgs
parents:
diff changeset
   276
	FUNC_LOG;
hgs
parents:
diff changeset
   277
     
hgs
parents:
diff changeset
   278
    VideoListSelectionDialog *dialog =
hgs
parents:
diff changeset
   279
        mUiLoader->findWidget<VideoListSelectionDialog>(
hgs
parents:
diff changeset
   280
            DOCML_NAME_DIALOG);
hgs
parents:
diff changeset
   281
    
hgs
parents:
diff changeset
   282
    if (!dialog)
hgs
parents:
diff changeset
   283
    {
hgs
parents:
diff changeset
   284
        // fatal: no selection dialog
hgs
parents:
diff changeset
   285
        return;
hgs
parents:
diff changeset
   286
    }
hgs
parents:
diff changeset
   287
    
hgs
parents:
diff changeset
   288
    dialog->setupContent(VideoListSelectionDialog::ECreateCollection, TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   289
    dialog->exec();
hgs
parents:
diff changeset
   290
}
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   293
// addVideosToCollectionSlot
hgs
parents:
diff changeset
   294
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   295
//
hgs
parents:
diff changeset
   296
void VideoListMenu::addVideosToCollectionSlot()
hgs
parents:
diff changeset
   297
{
hgs
parents:
diff changeset
   298
	FUNC_LOG;
hgs
parents:
diff changeset
   299
	
hgs
parents:
diff changeset
   300
    VideoListWidget* currentList = mListView->getCurrentList();
hgs
parents:
diff changeset
   301
    
hgs
parents:
diff changeset
   302
    if(!currentList || !currentList->getModel())
hgs
parents:
diff changeset
   303
    {
hgs
parents:
diff changeset
   304
        return;
hgs
parents:
diff changeset
   305
    }
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
    VideoListSelectionDialog *dialog =
hgs
parents:
diff changeset
   308
        mUiLoader->findWidget<VideoListSelectionDialog>(
hgs
parents:
diff changeset
   309
            DOCML_NAME_DIALOG);
hgs
parents:
diff changeset
   310
    
hgs
parents:
diff changeset
   311
    if (!dialog)
hgs
parents:
diff changeset
   312
    {
hgs
parents:
diff changeset
   313
        // fatal: no selection dialog
hgs
parents:
diff changeset
   314
        return;
hgs
parents:
diff changeset
   315
    }
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
    TMPXItemId collectionId = currentList->getModel()->getOpenItem();
hgs
parents:
diff changeset
   318
    dialog->setupContent(VideoListSelectionDialog::EAddToCollection, collectionId);
hgs
parents:
diff changeset
   319
    dialog->exec();
hgs
parents:
diff changeset
   320
}
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   323
// aboutToShowMainMenuSlot
hgs
parents:
diff changeset
   324
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   325
//
hgs
parents:
diff changeset
   326
void VideoListMenu::aboutToShowMainMenuSlot()
hgs
parents:
diff changeset
   327
{
hgs
parents:
diff changeset
   328
    if (mVideoServices &&
hgs
parents:
diff changeset
   329
        mVideoServices->currentService() == VideoServices::EBrowse)
hgs
parents:
diff changeset
   330
    {
hgs
parents:
diff changeset
   331
        prepareBrowseServiceMenu();
hgs
parents:
diff changeset
   332
        return;
hgs
parents:
diff changeset
   333
    }
hgs
parents:
diff changeset
   334
    
hgs
parents:
diff changeset
   335
    VideoListWidget* currentList = mListView->getCurrentList();
hgs
parents:
diff changeset
   336
    
hgs
parents:
diff changeset
   337
	if (!currentList)
hgs
parents:
diff changeset
   338
	{
hgs
parents:
diff changeset
   339
		return;
hgs
parents:
diff changeset
   340
	}
hgs
parents:
diff changeset
   341
	
hgs
parents:
diff changeset
   342
	// hide all actions by default
hgs
parents:
diff changeset
   343
    showAction(false, DOCML_NAME_ADD_TO_COLLECTION);
hgs
parents:
diff changeset
   344
    showAction(false, DOCML_NAME_CREATE_COLLECTION);
hgs
parents:
diff changeset
   345
    showAction(false, DOCML_NAME_DELETE_MULTIPLE);
hgs
parents:
diff changeset
   346
    showAction(false, DOCML_NAME_SORT_BY_DATE);
hgs
parents:
diff changeset
   347
    showAction(false, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   348
    showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
hgs
parents:
diff changeset
   349
    showAction(false, DOCML_NAME_SORT_BY_SIZE);
hgs
parents:
diff changeset
   350
    showAction(false, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
    // Create collection action is shown even when there's no videos. 
hgs
parents:
diff changeset
   353
    if(currentList->getLevel() == VideoCollectionCommon::ELevelCategory && !mVideoServices)
hgs
parents:
diff changeset
   354
    {
hgs
parents:
diff changeset
   355
        showAction(true, DOCML_NAME_CREATE_COLLECTION);
hgs
parents:
diff changeset
   356
    }
hgs
parents:
diff changeset
   357
    
hgs
parents:
diff changeset
   358
    //  No other actions shown if there's no videos.
hgs
parents:
diff changeset
   359
    VideoProxyModelGeneric *model = currentList->getModel();
hgs
parents:
diff changeset
   360
    if (!model || !model->rowCount())
hgs
parents:
diff changeset
   361
    {
hgs
parents:
diff changeset
   362
        return;
hgs
parents:
diff changeset
   363
    }
hgs
parents:
diff changeset
   364
    
hgs
parents:
diff changeset
   365
    // get current sorting values
hgs
parents:
diff changeset
   366
    int role;
hgs
parents:
diff changeset
   367
    Qt::SortOrder order;
hgs
parents:
diff changeset
   368
    model->getSorting(role, order);
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
    if(currentList->getLevel() == VideoCollectionCommon::ELevelVideos)
hgs
parents:
diff changeset
   371
    {
hgs
parents:
diff changeset
   372
        showAction(true, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   373
        showAction(true, DOCML_NAME_SORT_BY_DATE);
hgs
parents:
diff changeset
   374
        showAction(true, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   375
        showAction(true, DOCML_NAME_SORT_BY_SIZE);
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
        HbAction* action = mSortingRoles.key(role);
hgs
parents:
diff changeset
   378
		if (action)
hgs
parents:
diff changeset
   379
		{
hgs
parents:
diff changeset
   380
			action->setChecked(true);
hgs
parents:
diff changeset
   381
		}
hgs
parents:
diff changeset
   382
hgs
parents:
diff changeset
   383
        if (!mVideoServices)
hgs
parents:
diff changeset
   384
        {
hgs
parents:
diff changeset
   385
            showAction(true, DOCML_NAME_ADD_TO_COLLECTION);
hgs
parents:
diff changeset
   386
            showAction(true, DOCML_NAME_DELETE_MULTIPLE);
hgs
parents:
diff changeset
   387
        }
hgs
parents:
diff changeset
   388
    }
hgs
parents:
diff changeset
   389
    else if(currentList->getLevel() == VideoCollectionCommon::ELevelCategory)
hgs
parents:
diff changeset
   390
    {
hgs
parents:
diff changeset
   391
        showAction(true, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   392
        showAction(true, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   393
        showAction(true, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
hgs
parents:
diff changeset
   394
    	
hgs
parents:
diff changeset
   395
		HbAction* action = mSortingRoles.key(role);
hgs
parents:
diff changeset
   396
		if (action)
hgs
parents:
diff changeset
   397
		{
hgs
parents:
diff changeset
   398
			action->setChecked(true);
hgs
parents:
diff changeset
   399
		}
hgs
parents:
diff changeset
   400
    }
hgs
parents:
diff changeset
   401
    else if(currentList->getLevel() == VideoCollectionCommon::ELevelDefaultColl ||
hgs
parents:
diff changeset
   402
            currentList->getLevel() == VideoCollectionCommon::ELevelAlbum)
hgs
parents:
diff changeset
   403
    {
hgs
parents:
diff changeset
   404
        showAction(true, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   405
        showAction(true, DOCML_NAME_SORT_BY_DATE);
hgs
parents:
diff changeset
   406
        showAction(true, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   407
        showAction(true, DOCML_NAME_SORT_BY_SIZE);
hgs
parents:
diff changeset
   408
hgs
parents:
diff changeset
   409
        HbAction* action = mSortingRoles.key(role);
hgs
parents:
diff changeset
   410
		if (action)
hgs
parents:
diff changeset
   411
		{
hgs
parents:
diff changeset
   412
			action->setChecked(true);
hgs
parents:
diff changeset
   413
		}
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
        if (!mVideoServices)
hgs
parents:
diff changeset
   416
        {
hgs
parents:
diff changeset
   417
            showAction(true, DOCML_NAME_DELETE_MULTIPLE);
hgs
parents:
diff changeset
   418
        }
hgs
parents:
diff changeset
   419
    }
hgs
parents:
diff changeset
   420
}
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   423
// prepareBrowseServiceMenu
hgs
parents:
diff changeset
   424
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   425
//
hgs
parents:
diff changeset
   426
void VideoListMenu::prepareBrowseServiceMenu()
hgs
parents:
diff changeset
   427
{
hgs
parents:
diff changeset
   428
    VideoListWidget* currentList = mListView->getCurrentList();
hgs
parents:
diff changeset
   429
    
hgs
parents:
diff changeset
   430
    if (!currentList)
hgs
parents:
diff changeset
   431
    {
hgs
parents:
diff changeset
   432
        return;
hgs
parents:
diff changeset
   433
    }
hgs
parents:
diff changeset
   434
    
hgs
parents:
diff changeset
   435
    // hide all actions by default
hgs
parents:
diff changeset
   436
    showAction(false, DOCML_NAME_ADD_TO_COLLECTION);
hgs
parents:
diff changeset
   437
    showAction(false, DOCML_NAME_CREATE_COLLECTION);
hgs
parents:
diff changeset
   438
    showAction(false, DOCML_NAME_DELETE_MULTIPLE);
hgs
parents:
diff changeset
   439
    showAction(false, DOCML_NAME_SORT_BY_DATE);
hgs
parents:
diff changeset
   440
    showAction(false, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   441
    showAction(false, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
hgs
parents:
diff changeset
   442
    showAction(false, DOCML_NAME_SORT_BY_SIZE);
hgs
parents:
diff changeset
   443
    showAction(false, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   444
    
hgs
parents:
diff changeset
   445
    VideoProxyModelGeneric *model = currentList->getModel();
hgs
parents:
diff changeset
   446
    if (!model || !model->rowCount())
hgs
parents:
diff changeset
   447
    {
hgs
parents:
diff changeset
   448
        return;
hgs
parents:
diff changeset
   449
    }
hgs
parents:
diff changeset
   450
    
hgs
parents:
diff changeset
   451
    // show delete action
hgs
parents:
diff changeset
   452
    showAction(true, DOCML_NAME_DELETE_MULTIPLE);
hgs
parents:
diff changeset
   453
    
hgs
parents:
diff changeset
   454
    // show sort actions
hgs
parents:
diff changeset
   455
    showAction(true, DOCML_NAME_SORT_MENU);
hgs
parents:
diff changeset
   456
    showAction(true, DOCML_NAME_SORT_BY_DATE);
hgs
parents:
diff changeset
   457
    showAction(true, DOCML_NAME_SORT_BY_NAME);
hgs
parents:
diff changeset
   458
    showAction(true, DOCML_NAME_SORT_BY_SIZE);
hgs
parents:
diff changeset
   459
    
hgs
parents:
diff changeset
   460
    // set current sort action selected
hgs
parents:
diff changeset
   461
    int role;
hgs
parents:
diff changeset
   462
    Qt::SortOrder order;
hgs
parents:
diff changeset
   463
    model->getSorting(role, order);
hgs
parents:
diff changeset
   464
    HbAction* action = mSortingRoles.key(role);
hgs
parents:
diff changeset
   465
    if (action)
hgs
parents:
diff changeset
   466
    {
hgs
parents:
diff changeset
   467
        action->setChecked(true);
hgs
parents:
diff changeset
   468
    }
hgs
parents:
diff changeset
   469
}
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   472
// objectReadySlot
hgs
parents:
diff changeset
   473
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   474
//
hgs
parents:
diff changeset
   475
void VideoListMenu::objectReadySlot(QObject *object, const QString &name)
hgs
parents:
diff changeset
   476
{
hgs
parents:
diff changeset
   477
	FUNC_LOG;
hgs
parents:
diff changeset
   478
    
hgs
parents:
diff changeset
   479
	if (name.compare(DOCML_NAME_OPTIONS_MENU) == 0)
hgs
parents:
diff changeset
   480
    {
hgs
parents:
diff changeset
   481
        connect(
hgs
parents:
diff changeset
   482
            object, SIGNAL(aboutToShow()), this, SLOT(aboutToShowMainMenuSlot()));
hgs
parents:
diff changeset
   483
    }
hgs
parents:
diff changeset
   484
    else if (name.compare(DOCML_NAME_SORT_BY_DATE) == 0)
hgs
parents:
diff changeset
   485
    {
hgs
parents:
diff changeset
   486
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   487
        if (action)
hgs
parents:
diff changeset
   488
        {
hgs
parents:
diff changeset
   489
        	connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
hgs
parents:
diff changeset
   490
            mSortingRoles[action] = VideoCollectionCommon::KeyDateTime;
hgs
parents:
diff changeset
   491
        }
hgs
parents:
diff changeset
   492
    }
hgs
parents:
diff changeset
   493
    else if (name.compare(DOCML_NAME_SORT_BY_NAME) == 0)
hgs
parents:
diff changeset
   494
    {
hgs
parents:
diff changeset
   495
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   496
        if (action)
hgs
parents:
diff changeset
   497
        {
hgs
parents:
diff changeset
   498
        	connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
hgs
parents:
diff changeset
   499
            mSortingRoles[action] = VideoCollectionCommon::KeyTitle;
hgs
parents:
diff changeset
   500
        }
hgs
parents:
diff changeset
   501
    }
hgs
parents:
diff changeset
   502
    else if (name.compare(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS) == 0)
hgs
parents:
diff changeset
   503
    {
hgs
parents:
diff changeset
   504
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   505
        if (action)
hgs
parents:
diff changeset
   506
        {
hgs
parents:
diff changeset
   507
            connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
hgs
parents:
diff changeset
   508
            mSortingRoles[action] = VideoCollectionCommon::KeyNumberOfItems;
hgs
parents:
diff changeset
   509
        }
hgs
parents:
diff changeset
   510
    }
hgs
parents:
diff changeset
   511
    else if (name.compare(DOCML_NAME_SORT_BY_SIZE) == 0)
hgs
parents:
diff changeset
   512
    {
hgs
parents:
diff changeset
   513
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   514
        if (action)
hgs
parents:
diff changeset
   515
        {
hgs
parents:
diff changeset
   516
        	connect(action, SIGNAL(triggered()), this, SLOT(startSorting()));
hgs
parents:
diff changeset
   517
            mSortingRoles[action] = VideoCollectionCommon::KeySizeValue;
hgs
parents:
diff changeset
   518
        }
hgs
parents:
diff changeset
   519
    }
hgs
parents:
diff changeset
   520
    else if (name.compare(DOCML_NAME_ADD_TO_COLLECTION) == 0)
hgs
parents:
diff changeset
   521
    {
hgs
parents:
diff changeset
   522
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   523
        if (action)
hgs
parents:
diff changeset
   524
        {
hgs
parents:
diff changeset
   525
            connect(action, SIGNAL(triggered()), this, SLOT(addVideosToCollectionSlot()));
hgs
parents:
diff changeset
   526
        }
hgs
parents:
diff changeset
   527
    }
hgs
parents:
diff changeset
   528
    else if (name.compare(DOCML_NAME_CREATE_COLLECTION) == 0)
hgs
parents:
diff changeset
   529
    {
hgs
parents:
diff changeset
   530
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   531
        if (action)
hgs
parents:
diff changeset
   532
        {
hgs
parents:
diff changeset
   533
            connect(action, SIGNAL(triggered()), this, SLOT(createCollectionSlot()));
hgs
parents:
diff changeset
   534
        }
hgs
parents:
diff changeset
   535
    }
hgs
parents:
diff changeset
   536
    else if (name.compare(DOCML_NAME_DELETE_MULTIPLE) == 0)
hgs
parents:
diff changeset
   537
    {
hgs
parents:
diff changeset
   538
        HbAction *action = qobject_cast<HbAction*>(object);
hgs
parents:
diff changeset
   539
        if (action)
hgs
parents:
diff changeset
   540
        {
hgs
parents:
diff changeset
   541
            connect(action, SIGNAL(triggered()), this, SLOT(deleteItemsSlot()));
hgs
parents:
diff changeset
   542
        }
hgs
parents:
diff changeset
   543
    }
hgs
parents:
diff changeset
   544
}
hgs
parents:
diff changeset
   545
hgs
parents:
diff changeset
   546
// End of file