videocollection/videocollectionwrapper/src/videoproxymodelcollections.cpp
author hgs
Tue, 05 Oct 2010 09:26:49 +0300
changeset 66 adb51f74b890
parent 58 d2b028fd1f7d
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58
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: VideoProxyModelCollections implementation
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// Version : 
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include <vcxmyvideosdefs.h>
hgs
parents:
diff changeset
    22
#include "videoproxymodelgeneric.h"
hgs
parents:
diff changeset
    23
#include "videoproxymodelcollections.h"
hgs
parents:
diff changeset
    24
#include "videolistdatamodel.h"
hgs
parents:
diff changeset
    25
#include "videocollectiontrace.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    28
// VideoProxyModelCollections::VideoProxyModelCollections
hgs
parents:
diff changeset
    29
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    30
//
hgs
parents:
diff changeset
    31
VideoProxyModelCollections::VideoProxyModelCollections(QObject *parent) :
hgs
parents:
diff changeset
    32
VideoProxyModelGeneric(parent)
hgs
parents:
diff changeset
    33
{
hgs
parents:
diff changeset
    34
	FUNC_LOG_ADDR(this);
hgs
parents:
diff changeset
    35
	mDefaultSortRole = VideoCollectionCommon::KeyTitle;
hgs
parents:
diff changeset
    36
}
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
// VideoProxyModelCollections::~VideoProxyModelCollections
hgs
parents:
diff changeset
    40
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    41
//
hgs
parents:
diff changeset
    42
VideoProxyModelCollections::~VideoProxyModelCollections()
hgs
parents:
diff changeset
    43
{
hgs
parents:
diff changeset
    44
	FUNC_LOG_ADDR(this);
hgs
parents:
diff changeset
    45
}
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    48
// VideoProxyModelCollections::lessThan
hgs
parents:
diff changeset
    49
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    50
//
hgs
parents:
diff changeset
    51
bool VideoProxyModelCollections::lessThan(const QModelIndex &left,
hgs
parents:
diff changeset
    52
    const QModelIndex &right) const
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
    if (!mModel)
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
        return false;
hgs
parents:
diff changeset
    57
    }
hgs
parents:
diff changeset
    58
    int index = left.row();
hgs
parents:
diff changeset
    59
    TMPXItemId leftId = mModel->mediaIdAtIndex(index);
hgs
parents:
diff changeset
    60
    index = right.row();
hgs
parents:
diff changeset
    61
    TMPXItemId rightId = mModel->mediaIdAtIndex(index);
hgs
parents:
diff changeset
    62
    
hgs
parents:
diff changeset
    63
    // Default categories are always first in the following order:
hgs
parents:
diff changeset
    64
    // Recently played (missing currently)
hgs
parents:
diff changeset
    65
    // Captured
hgs
parents:
diff changeset
    66
    // Downloaded
hgs
parents:
diff changeset
    67
    // Podcasts (missing currently)
hgs
parents:
diff changeset
    68
    bool lessThan(false);
hgs
parents:
diff changeset
    69
    bool proceedDataSorting(false);
hgs
parents:
diff changeset
    70
    if(leftId.iId2  == KVcxMvcMediaTypeCategory &&
hgs
parents:
diff changeset
    71
       rightId.iId2 == KVcxMvcMediaTypeCategory)
hgs
parents:
diff changeset
    72
    {
hgs
parents:
diff changeset
    73
        if(leftId.iId1 == KVcxMvcCategoryIdCaptured)
hgs
parents:
diff changeset
    74
        {
hgs
parents:
diff changeset
    75
            lessThan = true;
hgs
parents:
diff changeset
    76
        }
hgs
parents:
diff changeset
    77
        else if(leftId.iId1 == KVcxMvcCategoryIdDownloads)
hgs
parents:
diff changeset
    78
        {
hgs
parents:
diff changeset
    79
            if(rightId.iId1 != KVcxMvcCategoryIdCaptured)
hgs
parents:
diff changeset
    80
            {
hgs
parents:
diff changeset
    81
                lessThan = true;
hgs
parents:
diff changeset
    82
            }
hgs
parents:
diff changeset
    83
        }
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
    else if(leftId.iId2 == KVcxMvcMediaTypeCategory ||
hgs
parents:
diff changeset
    86
            rightId.iId2 == KVcxMvcMediaTypeCategory)
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
        lessThan = (leftId.iId2 == KVcxMvcMediaTypeCategory);
hgs
parents:
diff changeset
    89
    }
hgs
parents:
diff changeset
    90
    else
hgs
parents:
diff changeset
    91
    {
hgs
parents:
diff changeset
    92
        proceedDataSorting = true;
hgs
parents:
diff changeset
    93
    }
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
    if(!proceedDataSorting)
hgs
parents:
diff changeset
    96
    {
hgs
parents:
diff changeset
    97
        return mWantedSortOrder == Qt::AscendingOrder ? lessThan : !lessThan;
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
    // It wasn't collection or they were in correct order, continue sorting with generic rules.
hgs
parents:
diff changeset
   101
    lessThan = VideoProxyModelGeneric::lessThan(left, right);
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
    return lessThan;
hgs
parents:
diff changeset
   104
}
hgs
parents:
diff changeset
   105
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   106
// VideoProxyModelCollections::filterAcceptsRow
hgs
parents:
diff changeset
   107
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
//
hgs
parents:
diff changeset
   109
bool VideoProxyModelCollections::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
    Q_UNUSED(source_parent);
hgs
parents:
diff changeset
   112
    
hgs
parents:
diff changeset
   113
    if(!sourceModel())
hgs
parents:
diff changeset
   114
    {
hgs
parents:
diff changeset
   115
        return false;
hgs
parents:
diff changeset
   116
    }
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    if(source_row < 0 || source_row >= sourceModel()->rowCount())
hgs
parents:
diff changeset
   119
    {
hgs
parents:
diff changeset
   120
        return false;
hgs
parents:
diff changeset
   121
    }
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
    TMPXItemId id = mModel->mediaIdAtIndex(source_row);
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    if(mLevel == VideoCollectionCommon::ELevelCategory && id.iId2 != KVcxMvcMediaTypeVideo)
hgs
parents:
diff changeset
   126
    {
hgs
parents:
diff changeset
   127
        return true;
hgs
parents:
diff changeset
   128
    }       
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    return false;
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
// End of file