videocollection/videocollectionwrapper/src/videosortfilterproxymodel.cpp
author hgs
Thu, 01 Apr 2010 23:32:44 +0300
changeset 35 3738fe97f027
parent 34 bbb98528c666
child 36 8aed59de29f9
permissions -rw-r--r--
201011
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
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:   Videosortfilterproxymodel implementation
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <qstringlist.h>
34
hgs
parents: 30
diff changeset
    19
#include <qset.h>
30
hgs
parents:
diff changeset
    20
#include <qtimer.h>
hgs
parents:
diff changeset
    21
#include <qdatetime.h>
34
hgs
parents: 30
diff changeset
    22
#include <vcxmyvideosdefs.h>
30
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "videothumbnaildata.h"
hgs
parents:
diff changeset
    25
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    26
#include "videosortfilterproxymodel.h"
hgs
parents:
diff changeset
    27
#include "videolistdatamodel.h"
hgs
parents:
diff changeset
    28
#include "videocollectionclient.h"
34
hgs
parents: 30
diff changeset
    29
#include "videocollectionwrapper.h"
30
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    32
// VideoSortFilterProxyModel::VideoSortFilterProxyModel
hgs
parents:
diff changeset
    33
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    34
//
34
hgs
parents: 30
diff changeset
    35
VideoSortFilterProxyModel::VideoSortFilterProxyModel(int type, QObject *parent) :
35
hgs
parents: 34
diff changeset
    36
QSortFilterProxyModel(parent),
hgs
parents: 34
diff changeset
    37
mModel(0),
hgs
parents: 34
diff changeset
    38
mCollectionClient(0),
hgs
parents: 34
diff changeset
    39
mType(type),
hgs
parents: 34
diff changeset
    40
mLevel(-1),
hgs
parents: 34
diff changeset
    41
mGenericFilterId(TMPXItemId::InvalidId()),
34
hgs
parents: 30
diff changeset
    42
mGenericFilterValue(false),
35
hgs
parents: 34
diff changeset
    43
mIdleSortTimer(0),
hgs
parents: 34
diff changeset
    44
mWantedSortRole(VideoCollectionCommon::KeyDateTime)
30
hgs
parents:
diff changeset
    45
{
hgs
parents:
diff changeset
    46
    // NOP
hgs
parents:
diff changeset
    47
}
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    50
// VideoSortFilterProxyModel::~VideoSortFilterProxyModel
hgs
parents:
diff changeset
    51
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
//
hgs
parents:
diff changeset
    53
VideoSortFilterProxyModel::~VideoSortFilterProxyModel()
hgs
parents:
diff changeset
    54
{
34
hgs
parents: 30
diff changeset
    55
    // NOP
30
hgs
parents:
diff changeset
    56
}
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
// VideoSortFilterProxyModel::initialize
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
//
hgs
parents:
diff changeset
    62
int VideoSortFilterProxyModel::initialize(VideoListDataModel *sourceModel)
hgs
parents:
diff changeset
    63
{
34
hgs
parents: 30
diff changeset
    64
    if(!sourceModel)
hgs
parents: 30
diff changeset
    65
    {
hgs
parents: 30
diff changeset
    66
        return -1;
hgs
parents: 30
diff changeset
    67
    }
hgs
parents: 30
diff changeset
    68
    
hgs
parents: 30
diff changeset
    69
    if(!mModel) 
hgs
parents: 30
diff changeset
    70
    {
hgs
parents: 30
diff changeset
    71
        mModel = sourceModel;
hgs
parents: 30
diff changeset
    72
        if(!connectSignals()) 
hgs
parents: 30
diff changeset
    73
        {
hgs
parents: 30
diff changeset
    74
            disconnectSignals();
hgs
parents: 30
diff changeset
    75
            mModel = 0;
30
hgs
parents:
diff changeset
    76
            return -1;
hgs
parents:
diff changeset
    77
        }
34
hgs
parents: 30
diff changeset
    78
        mCollectionClient = mModel->getCollectionClient();
hgs
parents: 30
diff changeset
    79
        setSourceModel(sourceModel); 
hgs
parents: 30
diff changeset
    80
    }           
hgs
parents: 30
diff changeset
    81
    return 0;
hgs
parents: 30
diff changeset
    82
}
30
hgs
parents:
diff changeset
    83
34
hgs
parents: 30
diff changeset
    84
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
    85
// VideoSortFilterProxyModel::connectSignals
hgs
parents: 30
diff changeset
    86
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
    87
//
hgs
parents: 30
diff changeset
    88
bool VideoSortFilterProxyModel::connectSignals()
hgs
parents: 30
diff changeset
    89
{
hgs
parents: 30
diff changeset
    90
    if(!connect(mModel, SIGNAL(modelReady()),
hgs
parents: 30
diff changeset
    91
            this, SIGNAL(modelReady()))) 
hgs
parents: 30
diff changeset
    92
    {
hgs
parents: 30
diff changeset
    93
        return false;
30
hgs
parents:
diff changeset
    94
    }
34
hgs
parents: 30
diff changeset
    95
    if(!connect(mModel, SIGNAL(modelChanged()),
hgs
parents: 30
diff changeset
    96
                    this, SIGNAL(modelChanged()))) 
hgs
parents: 30
diff changeset
    97
    {
hgs
parents: 30
diff changeset
    98
        return false;
hgs
parents: 30
diff changeset
    99
    }
35
hgs
parents: 34
diff changeset
   100
    if(mType == VideoCollectionWrapper::ECollectionContent)
34
hgs
parents: 30
diff changeset
   101
    {
35
hgs
parents: 34
diff changeset
   102
        if(!connect(mModel, SIGNAL(albumChanged()),
hgs
parents: 34
diff changeset
   103
                    this, SLOT(albumChangedSlot()))) 
hgs
parents: 34
diff changeset
   104
        {
hgs
parents: 34
diff changeset
   105
            return false;
hgs
parents: 34
diff changeset
   106
        }
34
hgs
parents: 30
diff changeset
   107
    }
hgs
parents: 30
diff changeset
   108
    return true;
hgs
parents: 30
diff changeset
   109
}
hgs
parents: 30
diff changeset
   110
   
hgs
parents: 30
diff changeset
   111
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   112
// VideoSortFilterProxyModel::disconnectSignals
hgs
parents: 30
diff changeset
   113
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   114
//
hgs
parents: 30
diff changeset
   115
void VideoSortFilterProxyModel::disconnectSignals()
hgs
parents: 30
diff changeset
   116
{
35
hgs
parents: 34
diff changeset
   117
	disconnect(mModel, SIGNAL(modelReady()), this, SIGNAL(modelReady()));
34
hgs
parents: 30
diff changeset
   118
    disconnect(mModel, SIGNAL(modelChanged()), this, SIGNAL(modelChanged()));
35
hgs
parents: 34
diff changeset
   119
    if(mType == VideoCollectionWrapper::ECollectionContent)
hgs
parents: 34
diff changeset
   120
    {
hgs
parents: 34
diff changeset
   121
        disconnect(mModel, SIGNAL(albumChanged()), this, SLOT(albumChangedSlot()));
hgs
parents: 34
diff changeset
   122
    }
hgs
parents: 34
diff changeset
   123
30
hgs
parents:
diff changeset
   124
}
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   127
// VideoSortFilterProxyModel::open
hgs
parents:
diff changeset
   128
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   129
//
hgs
parents:
diff changeset
   130
int VideoSortFilterProxyModel::open(int level)
hgs
parents:
diff changeset
   131
{
34
hgs
parents: 30
diff changeset
   132
    if(!mCollectionClient)
hgs
parents: 30
diff changeset
   133
    {
hgs
parents: 30
diff changeset
   134
        return -1;
30
hgs
parents:
diff changeset
   135
    }
34
hgs
parents: 30
diff changeset
   136
    
hgs
parents: 30
diff changeset
   137
    if(mLevel != level) 
hgs
parents: 30
diff changeset
   138
    {
35
hgs
parents: 34
diff changeset
   139
        mLevel = level;
34
hgs
parents: 30
diff changeset
   140
        invalidateFilter();
hgs
parents: 30
diff changeset
   141
    }
hgs
parents: 30
diff changeset
   142
    // need to call open every time to make sure all items are 
hgs
parents: 30
diff changeset
   143
    // inserted to UI ( recent open might have been cancelled)
hgs
parents: 30
diff changeset
   144
    return mCollectionClient->startOpenCollection(level);
30
hgs
parents:
diff changeset
   145
}
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
// VideoSortFilterProxyModel::doSorting
hgs
parents:
diff changeset
   149
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   150
//
hgs
parents:
diff changeset
   151
void VideoSortFilterProxyModel::doSorting(int sortingRole, Qt::SortOrder order, 
hgs
parents:
diff changeset
   152
        bool async)
hgs
parents:
diff changeset
   153
{
hgs
parents:
diff changeset
   154
    if((sortingRole != Qt::DisplayRole) &&
hgs
parents:
diff changeset
   155
       (sortingRole != VideoCollectionCommon::KeySizeValue) &&
hgs
parents:
diff changeset
   156
       (sortingRole != VideoCollectionCommon::KeyDateTime))
hgs
parents:
diff changeset
   157
    {
hgs
parents:
diff changeset
   158
        // default sorting order is by date
hgs
parents:
diff changeset
   159
        mWantedSortRole = VideoCollectionCommon::KeyDateTime;
hgs
parents:
diff changeset
   160
    }
hgs
parents:
diff changeset
   161
    else
hgs
parents:
diff changeset
   162
    {
hgs
parents:
diff changeset
   163
        mWantedSortRole = sortingRole;
hgs
parents:
diff changeset
   164
    }
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
    mWantedSortOrder = order;
hgs
parents:
diff changeset
   167
    
hgs
parents:
diff changeset
   168
    if(async)
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
        if(mIdleSortTimer)
hgs
parents:
diff changeset
   171
        {
hgs
parents:
diff changeset
   172
            if(mIdleSortTimer->isActive())
hgs
parents:
diff changeset
   173
            {
hgs
parents:
diff changeset
   174
                mIdleSortTimer->stop();
hgs
parents:
diff changeset
   175
            }
hgs
parents:
diff changeset
   176
        }
hgs
parents:
diff changeset
   177
        else
hgs
parents:
diff changeset
   178
        {
hgs
parents:
diff changeset
   179
            mIdleSortTimer = new QTimer(this);
hgs
parents:
diff changeset
   180
            connect(mIdleSortTimer, SIGNAL(timeout()), this, SLOT(processSorting()));
hgs
parents:
diff changeset
   181
        }
hgs
parents:
diff changeset
   182
        mIdleSortTimer->start(0);
hgs
parents:
diff changeset
   183
    } else {
hgs
parents:
diff changeset
   184
        processSorting();
hgs
parents:
diff changeset
   185
    }
hgs
parents:
diff changeset
   186
}
34
hgs
parents: 30
diff changeset
   187
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   188
// VideoSortFilterProxyModel::getSorting
hgs
parents: 30
diff changeset
   189
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   190
//
hgs
parents: 30
diff changeset
   191
void VideoSortFilterProxyModel::getSorting(int &sortingRole, Qt::SortOrder &order)
hgs
parents: 30
diff changeset
   192
{
hgs
parents: 30
diff changeset
   193
	sortingRole = mWantedSortRole;
hgs
parents: 30
diff changeset
   194
	order       = mWantedSortOrder;
hgs
parents: 30
diff changeset
   195
}
30
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   198
// VideoSortFilterProxyModel::deleteItems
hgs
parents:
diff changeset
   199
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   200
//
hgs
parents:
diff changeset
   201
int VideoSortFilterProxyModel::deleteItems(const QModelIndexList &indexList)
hgs
parents:
diff changeset
   202
{
hgs
parents:
diff changeset
   203
    if(mModel)
hgs
parents:
diff changeset
   204
    {
hgs
parents:
diff changeset
   205
        QModelIndexList mappedList;
hgs
parents:
diff changeset
   206
        for(int i = 0; i < indexList.count(); ++i)
hgs
parents:
diff changeset
   207
        {
hgs
parents:
diff changeset
   208
            mappedList.append(mapToSource(indexList.at(i)));
hgs
parents:
diff changeset
   209
        }
hgs
parents:
diff changeset
   210
        
hgs
parents:
diff changeset
   211
        if(mModel->removeRows(mappedList))
hgs
parents:
diff changeset
   212
        {
hgs
parents:
diff changeset
   213
            // Start fetching thumbnails at start of the model.
34
hgs
parents: 30
diff changeset
   214
            VideoThumbnailData::instance().startBackgroundFetching(0, 0);
30
hgs
parents:
diff changeset
   215
            return 0;
hgs
parents:
diff changeset
   216
        }
hgs
parents:
diff changeset
   217
    }
hgs
parents:
diff changeset
   218
    return -1;
hgs
parents:
diff changeset
   219
}
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   222
// VideoSortFilterProxyModel::openItem
hgs
parents:
diff changeset
   223
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   224
//
34
hgs
parents: 30
diff changeset
   225
int VideoSortFilterProxyModel::openItem(TMPXItemId mediaId)
30
hgs
parents:
diff changeset
   226
{
34
hgs
parents: 30
diff changeset
   227
    if(mediaId != TMPXItemId::InvalidId() && mCollectionClient)
30
hgs
parents:
diff changeset
   228
    {
34
hgs
parents: 30
diff changeset
   229
        if(mCollectionClient->openItem(mediaId) == 0)
hgs
parents: 30
diff changeset
   230
        {
hgs
parents: 30
diff changeset
   231
            if(mediaId.iId2 != KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   232
            { 
hgs
parents: 30
diff changeset
   233
                mLevel = VideoCollectionCommon::ELevelAlbum;
hgs
parents: 30
diff changeset
   234
                mModel->setAlbumInUse(mediaId);
hgs
parents: 30
diff changeset
   235
                invalidateFilter();
hgs
parents: 30
diff changeset
   236
            } 
hgs
parents: 30
diff changeset
   237
            return 0;
hgs
parents: 30
diff changeset
   238
        }
30
hgs
parents:
diff changeset
   239
    }
hgs
parents:
diff changeset
   240
    return -1;
hgs
parents:
diff changeset
   241
}
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   244
// VideoSortFilterProxyModel::back
hgs
parents:
diff changeset
   245
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   246
//
hgs
parents:
diff changeset
   247
int VideoSortFilterProxyModel::back()
hgs
parents:
diff changeset
   248
{
34
hgs
parents: 30
diff changeset
   249
    if(mCollectionClient && mCollectionClient->back() == 0)
30
hgs
parents:
diff changeset
   250
    {
34
hgs
parents: 30
diff changeset
   251
        if(mLevel == VideoCollectionCommon::ELevelAlbum)
hgs
parents: 30
diff changeset
   252
        {
hgs
parents: 30
diff changeset
   253
            mLevel = VideoCollectionCommon::ELevelCategory;
hgs
parents: 30
diff changeset
   254
        }
hgs
parents: 30
diff changeset
   255
        else
hgs
parents: 30
diff changeset
   256
        {
hgs
parents: 30
diff changeset
   257
            mLevel = VideoCollectionCommon::ELevelVideos;
hgs
parents: 30
diff changeset
   258
        }
hgs
parents: 30
diff changeset
   259
        return 0;
30
hgs
parents:
diff changeset
   260
    }
hgs
parents:
diff changeset
   261
    return -1;
hgs
parents:
diff changeset
   262
}
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   265
// VideoSortFilterProxyModel::fetchItemDetails
hgs
parents:
diff changeset
   266
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   267
//
hgs
parents:
diff changeset
   268
int VideoSortFilterProxyModel::fetchItemDetails(const QModelIndex &index)
hgs
parents:
diff changeset
   269
{
hgs
parents:
diff changeset
   270
    // no need to map index beforehand, because 
hgs
parents:
diff changeset
   271
	// getMediaIdAtIndex maps it
hgs
parents:
diff changeset
   272
    TMPXItemId mpxId1 = getMediaIdAtIndex(index);
hgs
parents:
diff changeset
   273
    if(mpxId1 != TMPXItemId::InvalidId() && mCollectionClient)
hgs
parents:
diff changeset
   274
    {
hgs
parents:
diff changeset
   275
        if(mCollectionClient->getVideoDetails(mpxId1) == 0)
hgs
parents:
diff changeset
   276
        {
34
hgs
parents: 30
diff changeset
   277
hgs
parents: 30
diff changeset
   278
            emit shortDetailsReady(mpxId1);
30
hgs
parents:
diff changeset
   279
            return 0;
hgs
parents:
diff changeset
   280
        }
hgs
parents:
diff changeset
   281
    }
hgs
parents:
diff changeset
   282
    return -1;
hgs
parents:
diff changeset
   283
}
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   286
// VideoSortFilterProxyModel::processSorting
hgs
parents:
diff changeset
   287
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   288
//
hgs
parents:
diff changeset
   289
void VideoSortFilterProxyModel::processSorting()
hgs
parents:
diff changeset
   290
{
hgs
parents:
diff changeset
   291
    if(mIdleSortTimer)
hgs
parents:
diff changeset
   292
    {
hgs
parents:
diff changeset
   293
        mIdleSortTimer->stop();
hgs
parents:
diff changeset
   294
    }
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
    if(sortRole() != mWantedSortRole)
hgs
parents:
diff changeset
   297
    {
hgs
parents:
diff changeset
   298
        setSortRole(mWantedSortRole);
hgs
parents:
diff changeset
   299
    }
hgs
parents:
diff changeset
   300
    
hgs
parents:
diff changeset
   301
    if(sortColumn() == -1 || sortOrder() != mWantedSortOrder)
hgs
parents:
diff changeset
   302
    {
hgs
parents:
diff changeset
   303
        // if sorting column is not yet setted, it indicates
hgs
parents:
diff changeset
   304
        // that we've setted the sorting order for the first time
hgs
parents:
diff changeset
   305
        // and sorting has not yet been done. After we have called sort once,
hgs
parents:
diff changeset
   306
        // the sort columnt gets updated and following sorts gets executed
hgs
parents:
diff changeset
   307
        // by setSortRole -call as long as role changes.
hgs
parents:
diff changeset
   308
    
hgs
parents:
diff changeset
   309
        // Another case is when we need to change the sort order, as there is
hgs
parents:
diff changeset
   310
        // no other way of setting the sort order than calling sort().
hgs
parents:
diff changeset
   311
        sort(0, mWantedSortOrder);
hgs
parents:
diff changeset
   312
    }
hgs
parents:
diff changeset
   313
    
hgs
parents:
diff changeset
   314
    // Start fetching thumbnails at start of the model.
34
hgs
parents: 30
diff changeset
   315
    VideoThumbnailData::instance().startBackgroundFetching(0, 0);
30
hgs
parents:
diff changeset
   316
}
hgs
parents:
diff changeset
   317
hgs
parents:
diff changeset
   318
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   319
// VideoSortFilterProxyModel::lessThan
hgs
parents:
diff changeset
   320
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   321
//
34
hgs
parents: 30
diff changeset
   322
bool VideoSortFilterProxyModel::lessThan(const QModelIndex &left,
hgs
parents: 30
diff changeset
   323
    const QModelIndex &right) const
30
hgs
parents:
diff changeset
   324
{
34
hgs
parents: 30
diff changeset
   325
    if (!mModel)
hgs
parents: 30
diff changeset
   326
    {
hgs
parents: 30
diff changeset
   327
        return false;
hgs
parents: 30
diff changeset
   328
    }
hgs
parents: 30
diff changeset
   329
    TMPXItemId leftId = mModel->mediaIdAtIndex(left.row());
hgs
parents: 30
diff changeset
   330
    TMPXItemId rightId = mModel->mediaIdAtIndex(right.row());
hgs
parents: 30
diff changeset
   331
    
hgs
parents: 30
diff changeset
   332
    // Default categories are always first in the following order:
hgs
parents: 30
diff changeset
   333
    // Recently played (missing currently
hgs
parents: 30
diff changeset
   334
    // Captured
hgs
parents: 30
diff changeset
   335
    // Downloaded
hgs
parents: 30
diff changeset
   336
    // Podcasts (missing currently)
hgs
parents: 30
diff changeset
   337
    bool lessThan(false);
hgs
parents: 30
diff changeset
   338
    bool proceedDataSorting(false);
hgs
parents: 30
diff changeset
   339
    if(leftId.iId2  == KVcxMvcMediaTypeCategory &&
hgs
parents: 30
diff changeset
   340
       rightId.iId2 == KVcxMvcMediaTypeCategory)
hgs
parents: 30
diff changeset
   341
    {
hgs
parents: 30
diff changeset
   342
        if(leftId.iId1 == KVcxMvcCategoryIdCaptured)
hgs
parents: 30
diff changeset
   343
        {
hgs
parents: 30
diff changeset
   344
            lessThan = true;
hgs
parents: 30
diff changeset
   345
        }
hgs
parents: 30
diff changeset
   346
   
hgs
parents: 30
diff changeset
   347
        else if(leftId.iId1 == KVcxMvcCategoryIdDownloads)
hgs
parents: 30
diff changeset
   348
        {
hgs
parents: 30
diff changeset
   349
            if(rightId.iId1 != KVcxMvcCategoryIdCaptured)
hgs
parents: 30
diff changeset
   350
            {
hgs
parents: 30
diff changeset
   351
                lessThan = true;
hgs
parents: 30
diff changeset
   352
            }
hgs
parents: 30
diff changeset
   353
        }
hgs
parents: 30
diff changeset
   354
    }
hgs
parents: 30
diff changeset
   355
    else if(leftId.iId2 == KVcxMvcMediaTypeCategory ||
hgs
parents: 30
diff changeset
   356
            rightId.iId2 == KVcxMvcMediaTypeCategory)
hgs
parents: 30
diff changeset
   357
    {
hgs
parents: 30
diff changeset
   358
        lessThan = (leftId.iId2 == KVcxMvcMediaTypeCategory);
hgs
parents: 30
diff changeset
   359
    }
hgs
parents: 30
diff changeset
   360
    else
hgs
parents: 30
diff changeset
   361
    {
hgs
parents: 30
diff changeset
   362
        proceedDataSorting = true;
hgs
parents: 30
diff changeset
   363
    }
30
hgs
parents:
diff changeset
   364
34
hgs
parents: 30
diff changeset
   365
    if(!proceedDataSorting)
hgs
parents: 30
diff changeset
   366
    {
hgs
parents: 30
diff changeset
   367
        return mWantedSortOrder == Qt::AscendingOrder ? lessThan : !lessThan;
hgs
parents: 30
diff changeset
   368
    }
hgs
parents: 30
diff changeset
   369
    
hgs
parents: 30
diff changeset
   370
    // Do comparisation based on the role:
hgs
parents: 30
diff changeset
   371
    //  Qt::DisplayRole,
hgs
parents: 30
diff changeset
   372
    //  VideoCollectionCommon::KeySizeValue,
hgs
parents: 30
diff changeset
   373
    //  VideoCollectionCommon::KeyDateValue
hgs
parents: 30
diff changeset
   374
    // 
hgs
parents: 30
diff changeset
   375
    // If role does not match, do not sort
30
hgs
parents:
diff changeset
   376
    int sRole = sortRole();
hgs
parents:
diff changeset
   377
    QVariant leftData = sourceModel()->data(left, sRole);
hgs
parents:
diff changeset
   378
    QVariant rightData = sourceModel()->data(right, sRole);
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
    if(!leftData.isValid() || !rightData.isValid())
hgs
parents:
diff changeset
   381
    {
hgs
parents:
diff changeset
   382
        return false;
hgs
parents:
diff changeset
   383
    }
hgs
parents:
diff changeset
   384
    if(sRole == Qt::DisplayRole)
hgs
parents:
diff changeset
   385
    {
hgs
parents:
diff changeset
   386
        QString leftString = leftData.toStringList().first().toUpper();
hgs
parents:
diff changeset
   387
        QString rightString = rightData.toStringList().first().toUpper();
hgs
parents:
diff changeset
   388
        return QString::localeAwareCompare(leftString, rightString) < 0;
hgs
parents:
diff changeset
   389
    }
hgs
parents:
diff changeset
   390
    else if(sRole == VideoCollectionCommon::KeySizeValue)
hgs
parents:
diff changeset
   391
    {
hgs
parents:
diff changeset
   392
        quint32 leftSize = leftData.toUInt();
hgs
parents:
diff changeset
   393
        quint32 rightSize = rightData.toUInt();
hgs
parents:
diff changeset
   394
        return leftSize < rightSize;
hgs
parents:
diff changeset
   395
    }
hgs
parents:
diff changeset
   396
    else if(sRole == VideoCollectionCommon::KeyDateTime)
hgs
parents:
diff changeset
   397
    {
hgs
parents:
diff changeset
   398
        QDateTime leftDateTime = leftData.toDateTime();
hgs
parents:
diff changeset
   399
        QDateTime rightDateTime = rightData.toDateTime();
hgs
parents:
diff changeset
   400
        // datetime sorting role has inverted sorting order compared to other roles 
hgs
parents:
diff changeset
   401
        return rightDateTime < leftDateTime;
hgs
parents:
diff changeset
   402
    }
hgs
parents:
diff changeset
   403
    return false;
hgs
parents:
diff changeset
   404
}
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   407
// VideoSortFilterProxyModel::filterAcceptsRow
hgs
parents:
diff changeset
   408
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   409
//
35
hgs
parents: 34
diff changeset
   410
bool VideoSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
30
hgs
parents:
diff changeset
   411
{
34
hgs
parents: 30
diff changeset
   412
    Q_UNUSED(source_parent);
35
hgs
parents: 34
diff changeset
   413
    
30
hgs
parents:
diff changeset
   414
    if(!sourceModel())
hgs
parents:
diff changeset
   415
        return false;
hgs
parents:
diff changeset
   416
34
hgs
parents: 30
diff changeset
   417
    if(source_row < 0 || source_row >= sourceModel()->rowCount())
hgs
parents: 30
diff changeset
   418
    {
hgs
parents: 30
diff changeset
   419
        return false;
hgs
parents: 30
diff changeset
   420
    }
hgs
parents: 30
diff changeset
   421
    TMPXItemId id = mModel->mediaIdAtIndex(source_row);
hgs
parents: 30
diff changeset
   422
    if(id == TMPXItemId::InvalidId())
hgs
parents: 30
diff changeset
   423
    {
hgs
parents: 30
diff changeset
   424
        return false;
hgs
parents: 30
diff changeset
   425
    }
hgs
parents: 30
diff changeset
   426
    
hgs
parents: 30
diff changeset
   427
    if (mType == VideoCollectionWrapper::EAllVideos)
hgs
parents: 30
diff changeset
   428
    {
hgs
parents: 30
diff changeset
   429
        if(id.iId2 == KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   430
        {
hgs
parents: 30
diff changeset
   431
            return true;
hgs
parents: 30
diff changeset
   432
        }
hgs
parents: 30
diff changeset
   433
    }
hgs
parents: 30
diff changeset
   434
    else if(mType == VideoCollectionWrapper::ECollections)
hgs
parents: 30
diff changeset
   435
    {
hgs
parents: 30
diff changeset
   436
        if(mLevel == VideoCollectionCommon::ELevelCategory && id.iId2 != KVcxMvcMediaTypeVideo)
hgs
parents: 30
diff changeset
   437
        {
hgs
parents: 30
diff changeset
   438
            return true;
hgs
parents: 30
diff changeset
   439
        }       
hgs
parents: 30
diff changeset
   440
    }
hgs
parents: 30
diff changeset
   441
    else if (mType == VideoCollectionWrapper::ECollectionContent)
30
hgs
parents:
diff changeset
   442
    {
34
hgs
parents: 30
diff changeset
   443
        // if item belongs to the open album, accept it
hgs
parents: 30
diff changeset
   444
        if (mModel->belongsToAlbum(id))
hgs
parents: 30
diff changeset
   445
        {
hgs
parents: 30
diff changeset
   446
            return true;
hgs
parents: 30
diff changeset
   447
        }
hgs
parents: 30
diff changeset
   448
    }
hgs
parents: 30
diff changeset
   449
    else if(mType == VideoCollectionWrapper::EGeneric)
hgs
parents: 30
diff changeset
   450
    {
hgs
parents: 30
diff changeset
   451
        if(mLevel == VideoCollectionCommon::ELevelVideos && id.iId2 == KVcxMvcMediaTypeVideo)
30
hgs
parents:
diff changeset
   452
        {
34
hgs
parents: 30
diff changeset
   453
            //  filter items that belong to that album setted as filter id
hgs
parents: 30
diff changeset
   454
            // if there's no filter or setted filter is "all videos", we accept everything
hgs
parents: 30
diff changeset
   455
            if(mGenericFilterId == TMPXItemId::InvalidId() || 
hgs
parents: 30
diff changeset
   456
               (mGenericFilterId.iId1 == KVcxMvcCategoryIdAll && 
hgs
parents: 30
diff changeset
   457
                mGenericFilterId.iId2 == KVcxMvcMediaTypeCategory) ||
hgs
parents: 30
diff changeset
   458
                mGenericFilterValue == mModel->belongsToAlbum(id, mGenericFilterId))
hgs
parents: 30
diff changeset
   459
            {
hgs
parents: 30
diff changeset
   460
                return true;
hgs
parents: 30
diff changeset
   461
            }
hgs
parents: 30
diff changeset
   462
            
30
hgs
parents:
diff changeset
   463
        }
34
hgs
parents: 30
diff changeset
   464
        else if(mLevel == VideoCollectionCommon::ELevelCategory && id.iId2 == KVcxMvcMediaTypeAlbum)    
hgs
parents: 30
diff changeset
   465
        {
hgs
parents: 30
diff changeset
   466
            // we do not filter albums yet
hgs
parents: 30
diff changeset
   467
            return true;
hgs
parents: 30
diff changeset
   468
        }
30
hgs
parents:
diff changeset
   469
    }
34
hgs
parents: 30
diff changeset
   470
    
30
hgs
parents:
diff changeset
   471
    return false;
hgs
parents:
diff changeset
   472
}
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   475
// VideoSortFilterProxyModel::getMediaIdAtIndex()
hgs
parents:
diff changeset
   476
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   477
//
34
hgs
parents: 30
diff changeset
   478
TMPXItemId VideoSortFilterProxyModel::getMediaIdAtIndex(const QModelIndex &index) const
30
hgs
parents:
diff changeset
   479
{
hgs
parents:
diff changeset
   480
    QModelIndex sourceIndex = mapToSource(index);
hgs
parents:
diff changeset
   481
    TMPXItemId mpxId = TMPXItemId::InvalidId();
hgs
parents:
diff changeset
   482
    if(mModel && sourceIndex.isValid())
hgs
parents:
diff changeset
   483
    {
hgs
parents:
diff changeset
   484
        mpxId = mModel->mediaIdAtIndex(sourceIndex.row());
hgs
parents:
diff changeset
   485
    }
hgs
parents:
diff changeset
   486
    return mpxId;
hgs
parents:
diff changeset
   487
}
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
// -----------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   490
//  VideoSortFilterProxyModel::indexOfId()
hgs
parents: 30
diff changeset
   491
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   492
//
hgs
parents: 30
diff changeset
   493
QModelIndex VideoSortFilterProxyModel::indexOfId(TMPXItemId id)
hgs
parents: 30
diff changeset
   494
{    
hgs
parents: 30
diff changeset
   495
    QModelIndex sourceIndex;
hgs
parents: 30
diff changeset
   496
    if(!mModel || id == TMPXItemId::InvalidId())
hgs
parents: 30
diff changeset
   497
    {
hgs
parents: 30
diff changeset
   498
        return sourceIndex;
hgs
parents: 30
diff changeset
   499
    }
hgs
parents: 30
diff changeset
   500
    sourceIndex = mModel->indexOfId(id);
hgs
parents: 30
diff changeset
   501
    return mapFromSource(sourceIndex);
hgs
parents: 30
diff changeset
   502
}
hgs
parents: 30
diff changeset
   503
hgs
parents: 30
diff changeset
   504
// -----------------------------------------------------------------------------
30
hgs
parents:
diff changeset
   505
// VideoSortFilterProxyModel::getMediaFilePathForId()
hgs
parents:
diff changeset
   506
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   507
//
hgs
parents:
diff changeset
   508
QString VideoSortFilterProxyModel::getMediaFilePathForId(TMPXItemId mediaId)
hgs
parents:
diff changeset
   509
{
hgs
parents:
diff changeset
   510
    QString filePath;
hgs
parents:
diff changeset
   511
    if(mModel)
hgs
parents:
diff changeset
   512
    {
hgs
parents:
diff changeset
   513
        filePath = mModel->mediaFilePathForId(mediaId);
hgs
parents:
diff changeset
   514
    }
hgs
parents:
diff changeset
   515
    return filePath;
hgs
parents:
diff changeset
   516
}
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
// -----------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   519
// VideoSortFilterProxyModel::addNewAlbum()
hgs
parents: 30
diff changeset
   520
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   521
//
hgs
parents: 30
diff changeset
   522
TMPXItemId VideoSortFilterProxyModel::addNewAlbum(const QString &title)
hgs
parents: 30
diff changeset
   523
{
hgs
parents: 30
diff changeset
   524
    TMPXItemId id = TMPXItemId::InvalidId();
hgs
parents: 30
diff changeset
   525
    
hgs
parents: 30
diff changeset
   526
    if (mCollectionClient)
hgs
parents: 30
diff changeset
   527
    {
hgs
parents: 30
diff changeset
   528
        id = mCollectionClient->addNewAlbum(title);
hgs
parents: 30
diff changeset
   529
    }
hgs
parents: 30
diff changeset
   530
    
hgs
parents: 30
diff changeset
   531
    return id;
hgs
parents: 30
diff changeset
   532
}
hgs
parents: 30
diff changeset
   533
hgs
parents: 30
diff changeset
   534
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   535
// VideoSortFilterProxyModel::removeAlbums()
hgs
parents: 30
diff changeset
   536
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   537
//
hgs
parents: 30
diff changeset
   538
int VideoSortFilterProxyModel::removeAlbums(const QModelIndexList &indexList)
hgs
parents: 30
diff changeset
   539
{
hgs
parents: 30
diff changeset
   540
	int err(-1);
hgs
parents: 30
diff changeset
   541
    
hgs
parents: 30
diff changeset
   542
	if (mCollectionClient)
hgs
parents: 30
diff changeset
   543
	{
hgs
parents: 30
diff changeset
   544
		TMPXItemId mpxId;
hgs
parents: 30
diff changeset
   545
		QList<TMPXItemId> ids;
hgs
parents: 30
diff changeset
   546
hgs
parents: 30
diff changeset
   547
		for(int i = 0; i < indexList.count(); ++i)
hgs
parents: 30
diff changeset
   548
		{
hgs
parents: 30
diff changeset
   549
			mpxId = getMediaIdAtIndex(indexList.at(i));
hgs
parents: 30
diff changeset
   550
			if((mpxId != TMPXItemId::InvalidId()) && (mpxId.iId2 == KVcxMvcMediaTypeAlbum))
hgs
parents: 30
diff changeset
   551
			{
hgs
parents: 30
diff changeset
   552
				ids.append(getMediaIdAtIndex(indexList.at(i)));
hgs
parents: 30
diff changeset
   553
			}
hgs
parents: 30
diff changeset
   554
		}
hgs
parents: 30
diff changeset
   555
		
hgs
parents: 30
diff changeset
   556
		if (ids.count())
hgs
parents: 30
diff changeset
   557
		{
hgs
parents: 30
diff changeset
   558
			err = mCollectionClient->removeAlbums(ids);
hgs
parents: 30
diff changeset
   559
		}
hgs
parents: 30
diff changeset
   560
	}
hgs
parents: 30
diff changeset
   561
hgs
parents: 30
diff changeset
   562
    return err;
hgs
parents: 30
diff changeset
   563
}
hgs
parents: 30
diff changeset
   564
hgs
parents: 30
diff changeset
   565
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   566
// VideoSortFilterProxyModel::resolveAlbumName()
30
hgs
parents:
diff changeset
   567
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   568
//
34
hgs
parents: 30
diff changeset
   569
QString VideoSortFilterProxyModel::resolveAlbumName(
hgs
parents: 30
diff changeset
   570
    const QString& albumName) const
hgs
parents: 30
diff changeset
   571
{
hgs
parents: 30
diff changeset
   572
    QString resolvedName = albumName.trimmed();
hgs
parents: 30
diff changeset
   573
hgs
parents: 30
diff changeset
   574
    // for checking names, we need to use collection list proxy model 
hgs
parents: 30
diff changeset
   575
    // to get all existing album names including default ones
hgs
parents: 30
diff changeset
   576
    VideoSortFilterProxyModel *collectionModel = 
hgs
parents: 30
diff changeset
   577
                       VideoCollectionWrapper::instance().getModel(
hgs
parents: 30
diff changeset
   578
                                   VideoCollectionWrapper::ECollections);
hgs
parents: 30
diff changeset
   579
    if(!collectionModel || !mModel)
hgs
parents: 30
diff changeset
   580
    {
hgs
parents: 30
diff changeset
   581
        return resolvedName;
hgs
parents: 30
diff changeset
   582
    }    
hgs
parents: 30
diff changeset
   583
    
hgs
parents: 30
diff changeset
   584
    int i(0);
hgs
parents: 30
diff changeset
   585
    QModelIndex proxyIndex = collectionModel->index(i, 0);
hgs
parents: 30
diff changeset
   586
    QSet<QString> names;
hgs
parents: 30
diff changeset
   587
    QVariant data;
hgs
parents: 30
diff changeset
   588
    // create set of existing names
hgs
parents: 30
diff changeset
   589
    while (proxyIndex.isValid())
hgs
parents: 30
diff changeset
   590
    {
hgs
parents: 30
diff changeset
   591
        data = mModel->data(collectionModel->mapToSource(proxyIndex), Qt::DisplayRole);
hgs
parents: 30
diff changeset
   592
        if (data.isValid())
hgs
parents: 30
diff changeset
   593
        {
hgs
parents: 30
diff changeset
   594
            QStringList stringList = data.toStringList();
hgs
parents: 30
diff changeset
   595
            names.insert(stringList.at(0));
hgs
parents: 30
diff changeset
   596
        }
hgs
parents: 30
diff changeset
   597
        proxyIndex = collectionModel->index(++i, 0, QModelIndex());
hgs
parents: 30
diff changeset
   598
    }
hgs
parents: 30
diff changeset
   599
    i = 0;
hgs
parents: 30
diff changeset
   600
    QString firstMatch("");
hgs
parents: 30
diff changeset
   601
    // find a name that does not yet exists
hgs
parents: 30
diff changeset
   602
    while(names.contains(resolvedName))
hgs
parents: 30
diff changeset
   603
    {
hgs
parents: 30
diff changeset
   604
        if (!firstMatch.length())
hgs
parents: 30
diff changeset
   605
        {
hgs
parents: 30
diff changeset
   606
            firstMatch = resolvedName;
hgs
parents: 30
diff changeset
   607
        }
hgs
parents: 30
diff changeset
   608
        ++i;
hgs
parents: 30
diff changeset
   609
        resolvedName = tr("%1 (%2)").arg(firstMatch).arg(i);
hgs
parents: 30
diff changeset
   610
    }
hgs
parents: 30
diff changeset
   611
    return resolvedName;
hgs
parents: 30
diff changeset
   612
}
hgs
parents: 30
diff changeset
   613
hgs
parents: 30
diff changeset
   614
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   615
// VideoSortFilterProxyModel::addItemsInAlbum()
hgs
parents: 30
diff changeset
   616
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   617
//
35
hgs
parents: 34
diff changeset
   618
int VideoSortFilterProxyModel::addItemsInAlbum(TMPXItemId &albumId,
34
hgs
parents: 30
diff changeset
   619
        const QList<TMPXItemId> &mediaIds)
30
hgs
parents:
diff changeset
   620
{
34
hgs
parents: 30
diff changeset
   621
    int err(-1);
hgs
parents: 30
diff changeset
   622
    
hgs
parents: 30
diff changeset
   623
    if (mCollectionClient)
hgs
parents: 30
diff changeset
   624
    {        
hgs
parents: 30
diff changeset
   625
        // add items in album
hgs
parents: 30
diff changeset
   626
        err = mCollectionClient->addItemsInAlbum(albumId, mediaIds);
30
hgs
parents:
diff changeset
   627
    }
34
hgs
parents: 30
diff changeset
   628
    
hgs
parents: 30
diff changeset
   629
    return err;
hgs
parents: 30
diff changeset
   630
}
hgs
parents: 30
diff changeset
   631
hgs
parents: 30
diff changeset
   632
// -----------------------------------------------------------------------------
35
hgs
parents: 34
diff changeset
   633
// VideoSortFilterProxyModel::removeItemsFromAlbum()
hgs
parents: 34
diff changeset
   634
// -----------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   635
//
hgs
parents: 34
diff changeset
   636
int VideoSortFilterProxyModel::removeItemsFromAlbum(TMPXItemId &albumId, 
hgs
parents: 34
diff changeset
   637
        const QList<TMPXItemId> &mediaIds)
hgs
parents: 34
diff changeset
   638
{
hgs
parents: 34
diff changeset
   639
    int err(-1);
hgs
parents: 34
diff changeset
   640
       
hgs
parents: 34
diff changeset
   641
    if (mModel)
hgs
parents: 34
diff changeset
   642
    {        
hgs
parents: 34
diff changeset
   643
        // remove items in album
hgs
parents: 34
diff changeset
   644
        err = mModel->removeItemsFromAlbum(albumId, mediaIds);
hgs
parents: 34
diff changeset
   645
        if(err > 0)
hgs
parents: 34
diff changeset
   646
        {
hgs
parents: 34
diff changeset
   647
            // if there really were items to be removed, invalid filter
hgs
parents: 34
diff changeset
   648
            invalidateFilter();
hgs
parents: 34
diff changeset
   649
            err = 0;
hgs
parents: 34
diff changeset
   650
        }
hgs
parents: 34
diff changeset
   651
    }
hgs
parents: 34
diff changeset
   652
    return err;
hgs
parents: 34
diff changeset
   653
}
hgs
parents: 34
diff changeset
   654
hgs
parents: 34
diff changeset
   655
// -----------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   656
// VideoSortFilterProxyModel::getOpenItem()
hgs
parents: 30
diff changeset
   657
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   658
//
hgs
parents: 30
diff changeset
   659
TMPXItemId VideoSortFilterProxyModel::getOpenItem() const
hgs
parents: 30
diff changeset
   660
{
hgs
parents: 30
diff changeset
   661
    TMPXItemId itemId = TMPXItemId::InvalidId();
hgs
parents: 30
diff changeset
   662
    
hgs
parents: 30
diff changeset
   663
    if(mModel && mCollectionClient)
hgs
parents: 30
diff changeset
   664
    {
hgs
parents: 30
diff changeset
   665
        if(mType == VideoCollectionWrapper::EAllVideos)
hgs
parents: 30
diff changeset
   666
        {
hgs
parents: 30
diff changeset
   667
            itemId.iId1 = KVcxMvcCategoryIdAll;
hgs
parents: 30
diff changeset
   668
            itemId.iId2 = KVcxMvcMediaTypeCategory;        
hgs
parents: 30
diff changeset
   669
        }
hgs
parents: 30
diff changeset
   670
        else if(mType == VideoCollectionWrapper::ECollectionContent)
hgs
parents: 30
diff changeset
   671
        {
hgs
parents: 30
diff changeset
   672
            itemId = mModel->albumInUse();
hgs
parents: 30
diff changeset
   673
        }
hgs
parents: 30
diff changeset
   674
    }
hgs
parents: 30
diff changeset
   675
hgs
parents: 30
diff changeset
   676
    return itemId;
hgs
parents: 30
diff changeset
   677
}
hgs
parents: 30
diff changeset
   678
hgs
parents: 30
diff changeset
   679
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   680
// VideoSortFilterProxyModel::setGenericIdFilter()
hgs
parents: 30
diff changeset
   681
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   682
//
hgs
parents: 30
diff changeset
   683
void VideoSortFilterProxyModel::setGenericIdFilter(TMPXItemId itemId, bool filterValue)
hgs
parents: 30
diff changeset
   684
{
hgs
parents: 30
diff changeset
   685
    if(mType == VideoCollectionWrapper::EGeneric)
hgs
parents: 30
diff changeset
   686
    {
hgs
parents: 30
diff changeset
   687
        mGenericFilterId = itemId;
hgs
parents: 30
diff changeset
   688
        mGenericFilterValue = filterValue;
hgs
parents: 30
diff changeset
   689
        invalidateFilter();
hgs
parents: 30
diff changeset
   690
    }
hgs
parents: 30
diff changeset
   691
}
hgs
parents: 30
diff changeset
   692
hgs
parents: 30
diff changeset
   693
// -----------------------------------------------------------------------------
35
hgs
parents: 34
diff changeset
   694
// VideoSortFilterProxyModel::setAlbumInUse()
hgs
parents: 34
diff changeset
   695
// -----------------------------------------------------------------------------
hgs
parents: 34
diff changeset
   696
//
hgs
parents: 34
diff changeset
   697
void VideoSortFilterProxyModel::setAlbumInUse(TMPXItemId albumId)
hgs
parents: 34
diff changeset
   698
{
hgs
parents: 34
diff changeset
   699
    mModel->setAlbumInUse(albumId);
hgs
parents: 34
diff changeset
   700
    invalidateFilter();
hgs
parents: 34
diff changeset
   701
}
hgs
parents: 34
diff changeset
   702
hgs
parents: 34
diff changeset
   703
// -----------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   704
// VideoSortFilterProxyModel::albumChangedSlot()
hgs
parents: 30
diff changeset
   705
// -----------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   706
//
hgs
parents: 30
diff changeset
   707
void VideoSortFilterProxyModel::albumChangedSlot()
hgs
parents: 30
diff changeset
   708
{
hgs
parents: 30
diff changeset
   709
    // ignore if not collection content model
hgs
parents: 30
diff changeset
   710
    if (mType == VideoCollectionWrapper::ECollectionContent)
hgs
parents: 30
diff changeset
   711
    {
hgs
parents: 30
diff changeset
   712
        invalidateFilter();
hgs
parents: 30
diff changeset
   713
    }
30
hgs
parents:
diff changeset
   714
}
hgs
parents:
diff changeset
   715
hgs
parents:
diff changeset
   716
// end of file
hgs
parents:
diff changeset
   717