ui/uiengine/model/mediamodel/src/glxmediamodel.cpp
author hgs
Wed, 06 Oct 2010 14:49:39 +0530
changeset 71 27f2d7aec52a
parent 69 45459746d5e8
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
69
hgs
parents: 65
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 65
diff changeset
     3
 * All rights reserved.
hgs
parents: 65
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 65
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 65
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 65
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 65
diff changeset
     8
 *
hgs
parents: 65
diff changeset
     9
 * Initial Contributors:
hgs
parents: 65
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 65
diff changeset
    11
 *
hgs
parents: 65
diff changeset
    12
 * Contributors:
hgs
parents: 65
diff changeset
    13
 *
hgs
parents: 65
diff changeset
    14
 * Description:   ?Description
hgs
parents: 65
diff changeset
    15
 *
hgs
parents: 65
diff changeset
    16
 */
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include <glxmediamodel.h>
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include <hbicon.h>
40
hgs
parents: 26
diff changeset
    20
#include <qimage.h>
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <glxmodelparm.h>
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <QCache>
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <QDebug>
40
hgs
parents: 26
diff changeset
    24
#include <glxmlwrapper.h>
45
hgs
parents: 44
diff changeset
    25
#include"glxdrmutilitywrapper.h"
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <glxfiltergeneraldefs.h>
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
45
hgs
parents: 44
diff changeset
    29
#include <glximageviewermanager.h>
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
//#define GLXPERFORMANCE_LOG  
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include <glxperformancemacro.h>
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
24
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
    33
#include "glxicondefs.h" //Contains the icon names/Ids
54
hgs
parents: 50
diff changeset
    34
#include "glxcollectionpluginall.hrh"
hgs
parents: 50
diff changeset
    35
#include "glxviewids.h"
hgs
parents: 50
diff changeset
    36
hgs
parents: 50
diff changeset
    37
#define DELTA_IMAGE 5
hgs
parents: 50
diff changeset
    38
#define INITIAL_POPULATE_IMAGE_COUNT 30
24
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
    39
69
hgs
parents: 65
diff changeset
    40
GlxMediaModel::GlxMediaModel( GlxModelParm & modelParm )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
{
69
hgs
parents: 65
diff changeset
    42
    qDebug( "GlxMediaModel::GlxMediaModel" );
hgs
parents: 65
diff changeset
    43
hgs
parents: 65
diff changeset
    44
    thumbnailPopulatedFlag = modelParm.collection() == KGlxCollectionPluginAllImplementationUid
hgs
parents: 65
diff changeset
    45
        ? false : true;
hgs
parents: 65
diff changeset
    46
    mPaintPage = modelParm.collection() == KGlxCollectionPluginAllImplementationUid ? true : false;
hgs
parents: 65
diff changeset
    47
    mMLWrapper = new GlxMLWrapper( modelParm.collection(), 0, modelParm.filterType(), NULL,
hgs
parents: 65
diff changeset
    48
        modelParm.fetcherFiterType() );
hgs
parents: 65
diff changeset
    49
    mMLWrapper->setContextMode( modelParm.contextMode() );
hgs
parents: 65
diff changeset
    50
    mContextMode = modelParm.contextMode();
hgs
parents: 65
diff changeset
    51
    mDRMUtilityWrapper = new GlxDRMUtilityWrapper();
hgs
parents: 65
diff changeset
    52
hgs
parents: 65
diff changeset
    53
    int err = connect( mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this,
hgs
parents: 65
diff changeset
    54
        SLOT(itemUpdated(int, GlxTBContextType)) );
hgs
parents: 65
diff changeset
    55
    qDebug( "updateItem() connection status %d", err );
hgs
parents: 65
diff changeset
    56
    err = connect( mMLWrapper, SIGNAL(itemCorrupted(int)), this, SLOT(itemCorrupted(int)) );
hgs
parents: 65
diff changeset
    57
    qDebug( "itemCorrupted() connection status %d", err );
hgs
parents: 65
diff changeset
    58
    err = connect( mMLWrapper, SIGNAL(insertItems(int, int)), this, SLOT(itemsAdded(int, int)) );
hgs
parents: 65
diff changeset
    59
    qDebug( "updateItem() connection status %d", err );
hgs
parents: 65
diff changeset
    60
    err = connect( mMLWrapper, SIGNAL(removeItems(int, int)), this, SLOT(itemsRemoved(int, int)) );
hgs
parents: 65
diff changeset
    61
    qDebug( "updateItem() connection status %d", err );
hgs
parents: 65
diff changeset
    62
    err = connect( this, SIGNAL(iconAvailable(int, HbIcon*, GlxTBContextType)), this,
hgs
parents: 65
diff changeset
    63
        SLOT(updateItemIcon(int, HbIcon*, GlxTBContextType)) );
hgs
parents: 65
diff changeset
    64
    qDebug( "iconAvailable() connection status %d", err );
hgs
parents: 65
diff changeset
    65
    err = connect( mMLWrapper, SIGNAL(updateAlbumTitle(QString)), this,
hgs
parents: 65
diff changeset
    66
        SLOT(albumTitleUpdated(QString)) );
hgs
parents: 65
diff changeset
    67
    qDebug( "updateAlbumTitle() connection status %d", err );
hgs
parents: 65
diff changeset
    68
    err = connect( mMLWrapper, SIGNAL(populated()), this, SLOT(modelpopulated()) );
hgs
parents: 65
diff changeset
    69
    err = connect( mMLWrapper, SIGNAL(updateDetails()), this, SLOT(updateDetailItems()) );
hgs
parents: 65
diff changeset
    70
hgs
parents: 65
diff changeset
    71
    itemIconCache.setMaxCost( 20 ); //Changed While Doing Media Wall
hgs
parents: 65
diff changeset
    72
    itemFsIconCache.setMaxCost( 5 );
hgs
parents: 65
diff changeset
    73
hgs
parents: 65
diff changeset
    74
    m_DefaultIcon = new HbIcon( GLXICON_DEFAULT );
hgs
parents: 65
diff changeset
    75
    m_CorruptIcon = new HbIcon( GLXICON_CORRUPT );
hgs
parents: 65
diff changeset
    76
    mFocusIndex = -1;
hgs
parents: 65
diff changeset
    77
    mSubState = -1;
hgs
parents: 65
diff changeset
    78
    mTempVisibleWindowIndex = 0;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
GlxMediaModel::~GlxMediaModel()
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    //itemadded.clear();
69
hgs
parents: 65
diff changeset
    84
    qDebug( "GlxMediaModel::~GlxMediaModel" );
hgs
parents: 65
diff changeset
    85
    itemIconCache.clear();
hgs
parents: 65
diff changeset
    86
    itemFsIconCache.clear();
hgs
parents: 65
diff changeset
    87
    delete m_DefaultIcon;
hgs
parents: 65
diff changeset
    88
    m_DefaultIcon = NULL;
hgs
parents: 65
diff changeset
    89
    delete m_CorruptIcon;
hgs
parents: 65
diff changeset
    90
    m_CorruptIcon = NULL;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    delete mMLWrapper;
69
hgs
parents: 65
diff changeset
    92
    delete mDRMUtilityWrapper;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
44
hgs
parents: 43
diff changeset
    95
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
    96
//setContextMode
hgs
parents: 43
diff changeset
    97
//------------------------------------------------------------------------------------------------------------
69
hgs
parents: 65
diff changeset
    98
void GlxMediaModel::setContextMode( GlxContextMode contextMode )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
{
69
hgs
parents: 65
diff changeset
   100
    if ( contextMode == GlxContextComment ) {
hgs
parents: 65
diff changeset
   101
        mMLWrapper->setContextMode( contextMode );
hgs
parents: 65
diff changeset
   102
    }
hgs
parents: 65
diff changeset
   103
    else {
hgs
parents: 65
diff changeset
   104
        if ( mContextMode != contextMode ) {
hgs
parents: 65
diff changeset
   105
hgs
parents: 65
diff changeset
   106
            itemFsIconCache.clear();
hgs
parents: 65
diff changeset
   107
            mMLWrapper->setContextMode( contextMode );
hgs
parents: 65
diff changeset
   108
            mContextMode = contextMode;
hgs
parents: 65
diff changeset
   109
            if ( mContextMode == GlxContextLsGrid || mContextMode == GlxContextPtGrid ) {
hgs
parents: 65
diff changeset
   110
                itemIconCache.clear();
hgs
parents: 65
diff changeset
   111
                //emit dataChanged( index( 0, 0), index( rowCount() - 1, 0) );  // Not Needed for HgWidget
hgs
parents: 65
diff changeset
   112
            }
44
hgs
parents: 43
diff changeset
   113
        }
69
hgs
parents: 65
diff changeset
   114
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
44
hgs
parents: 43
diff changeset
   117
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
   118
//removeContextMode
hgs
parents: 43
diff changeset
   119
//------------------------------------------------------------------------------------------------------------
69
hgs
parents: 65
diff changeset
   120
void GlxMediaModel::removeContextMode( GlxContextMode contextMode )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
{
69
hgs
parents: 65
diff changeset
   122
    mMLWrapper->removeContextMode( contextMode );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
69
hgs
parents: 65
diff changeset
   125
int GlxMediaModel::rowCount( const QModelIndex &parent ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
{
69
hgs
parents: 65
diff changeset
   127
    Q_UNUSED(parent);
hgs
parents: 65
diff changeset
   128
    qDebug( "GlxMediaModel::rowCount %d", mMLWrapper->getItemCount() );
hgs
parents: 65
diff changeset
   129
    return mMLWrapper->getItemCount();
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
69
hgs
parents: 65
diff changeset
   132
int GlxMediaModel::columnCount( const QModelIndex &parent ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
    Q_UNUSED(parent);
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
    return 1;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
69
hgs
parents: 65
diff changeset
   138
QModelIndex GlxMediaModel::parent( const QModelIndex &child ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
    Q_UNUSED(child);
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
    //returns always invalid model index
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
    return QModelIndex();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
69
hgs
parents: 65
diff changeset
   147
QVariant GlxMediaModel::itemImageData( const QModelIndex &index, int role ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
{
69
hgs
parents: 65
diff changeset
   149
    HbIcon* itemIcon = NULL;
hgs
parents: 65
diff changeset
   150
    QImage itemImage;
hgs
parents: 65
diff changeset
   151
    int itemIndex = index.row();
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   152
69
hgs
parents: 65
diff changeset
   153
    if ( role == Qt::DisplayRole ) {
hgs
parents: 65
diff changeset
   154
        return QVariant();
26
c499df2dbb33 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 24
diff changeset
   155
    }
c499df2dbb33 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 24
diff changeset
   156
40
hgs
parents: 26
diff changeset
   157
    if ( role == GlxHgVisibilityRole ) {
hgs
parents: 26
diff changeset
   158
        return TRUE;
hgs
parents: 26
diff changeset
   159
    }
69
hgs
parents: 65
diff changeset
   160
hgs
parents: 65
diff changeset
   161
    if ( role == GlxDefaultImage ) {
hgs
parents: 65
diff changeset
   162
        // this image Creation is Slow. But what to do, Q class's Does not undersatnd our Localised File names
hgs
parents: 65
diff changeset
   163
        return m_DefaultIcon->pixmap().toImage().convertToFormat( QImage::Format_ARGB32_Premultiplied );
hgs
parents: 65
diff changeset
   164
    }
hgs
parents: 65
diff changeset
   165
hgs
parents: 65
diff changeset
   166
    qDebug( "GlxMediaModel::data buffer concept index %d role %d", index.row(), role );
hgs
parents: 65
diff changeset
   167
    if ( ( !index.isValid() ) || ( index.row() >= rowCount() ) ) {
40
hgs
parents: 26
diff changeset
   168
        return QVariant();
hgs
parents: 26
diff changeset
   169
    }
hgs
parents: 26
diff changeset
   170
69
hgs
parents: 65
diff changeset
   171
    //retrieve Data from Media List     
50
hgs
parents: 45
diff changeset
   172
    if ( role == Qt::DecorationRole ) {
69
hgs
parents: 65
diff changeset
   173
        itemIcon = GetGridIconItem( itemIndex, GlxTBContextGrid );
hgs
parents: 65
diff changeset
   174
        if ( itemIcon == NULL || itemIcon->isNull() ) {
50
hgs
parents: 45
diff changeset
   175
            itemIcon = getCorruptDefaultIcon( index );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
        return *itemIcon;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
    }
69
hgs
parents: 65
diff changeset
   179
hgs
parents: 65
diff changeset
   180
    if ( role == GlxQImageSmall ) {
hgs
parents: 65
diff changeset
   181
        return mMLWrapper->retrieveItemImage( itemIndex, GlxTBContextGrid );
50
hgs
parents: 45
diff changeset
   182
    }
40
hgs
parents: 26
diff changeset
   183
69
hgs
parents: 65
diff changeset
   184
    if ( role == GlxFsImageRole ) {
hgs
parents: 65
diff changeset
   185
        return getFullScreenIcon( itemIndex );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    }
69
hgs
parents: 65
diff changeset
   187
    
hgs
parents: 65
diff changeset
   188
    if ( role == GlxQImageLarge ) {
hgs
parents: 65
diff changeset
   189
        return getFullScreenImage( itemIndex );
50
hgs
parents: 45
diff changeset
   190
    }
40
hgs
parents: 26
diff changeset
   191
    
69
hgs
parents: 65
diff changeset
   192
    if ( role == GlxHdmiBitmap ) {
hgs
parents: 65
diff changeset
   193
        return mMLWrapper->RetrieveBitmap( itemIndex );
hgs
parents: 65
diff changeset
   194
    } 
hgs
parents: 65
diff changeset
   195
    
hgs
parents: 65
diff changeset
   196
    return QVariant();
hgs
parents: 65
diff changeset
   197
}
hgs
parents: 65
diff changeset
   198
hgs
parents: 65
diff changeset
   199
QVariant GlxMediaModel::collectionProperty(  int role ) const
hgs
parents: 65
diff changeset
   200
{
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
    QModelIndex idx;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
    if ( GlxFocusIndexRole == role ) {
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
        idx = getFocusIndex();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
        return idx.row();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    }
50
hgs
parents: 45
diff changeset
   206
    
69
hgs
parents: 65
diff changeset
   207
    if ( role == GlxSubStateRole ) {
hgs
parents: 65
diff changeset
   208
        return mSubState;
hgs
parents: 65
diff changeset
   209
    }
hgs
parents: 65
diff changeset
   210
    
hgs
parents: 65
diff changeset
   211
    if ( role == GlxPopulated ) {
hgs
parents: 65
diff changeset
   212
        return mMLWrapper->IsPopulated();
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
    }
50
hgs
parents: 45
diff changeset
   214
    
69
hgs
parents: 65
diff changeset
   215
    if ( role == GlxViewTitle ) {
hgs
parents: 65
diff changeset
   216
        return mMLWrapper->retrieveViewTitle();
hgs
parents: 65
diff changeset
   217
    }     
hgs
parents: 65
diff changeset
   218
hgs
parents: 65
diff changeset
   219
    if ( role == GlxVisualWindowIndex ) {
hgs
parents: 65
diff changeset
   220
        return mMLWrapper->getVisibleWindowIndex();
62
hgs
parents: 58
diff changeset
   221
    }
69
hgs
parents: 65
diff changeset
   222
hgs
parents: 65
diff changeset
   223
    if ( role == GlxPaintPageFlag ) {
hgs
parents: 65
diff changeset
   224
        return mPaintPage;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
    }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
    
69
hgs
parents: 65
diff changeset
   227
    return QVariant();
hgs
parents: 65
diff changeset
   228
}
hgs
parents: 65
diff changeset
   229
hgs
parents: 65
diff changeset
   230
QVariant GlxMediaModel::itemProperty( const QModelIndex &index, int role ) const
hgs
parents: 65
diff changeset
   231
{
hgs
parents: 65
diff changeset
   232
    if ( ( !index.isValid() ) || ( index.row() >= rowCount() ) ) {
hgs
parents: 65
diff changeset
   233
        return QVariant();
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    
69
hgs
parents: 65
diff changeset
   236
    int itemIndex = index.row();
hgs
parents: 65
diff changeset
   237
hgs
parents: 65
diff changeset
   238
    if ( role == GlxFrameCount ) {
hgs
parents: 65
diff changeset
   239
        return ( mMLWrapper->retrieveItemFrameCount( itemIndex ) );
24
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
   240
    }
50
hgs
parents: 45
diff changeset
   241
hgs
parents: 45
diff changeset
   242
    if ( role == GlxImageCorruptRole ) {
hgs
parents: 45
diff changeset
   243
        return mMLWrapper->isCorruptedImage( itemIndex );
hgs
parents: 45
diff changeset
   244
    }
69
hgs
parents: 65
diff changeset
   245
hgs
parents: 65
diff changeset
   246
    if ( role == GlxUriRole ) {
hgs
parents: 65
diff changeset
   247
        return ( mMLWrapper->retrieveItemUri( itemIndex ) );
hgs
parents: 65
diff changeset
   248
    }
44
hgs
parents: 43
diff changeset
   249
    
69
hgs
parents: 65
diff changeset
   250
    if ( role == GlxSizeRole ) {
hgs
parents: 65
diff changeset
   251
        return mMLWrapper->retrieveItemSize( itemIndex );
hgs
parents: 65
diff changeset
   252
    }
hgs
parents: 65
diff changeset
   253
    
hgs
parents: 65
diff changeset
   254
    if ( role == GlxImageTitle ) {
hgs
parents: 65
diff changeset
   255
        return mMLWrapper->retrieveListTitle( itemIndex );
hgs
parents: 65
diff changeset
   256
    }
hgs
parents: 65
diff changeset
   257
hgs
parents: 65
diff changeset
   258
    if ( role == GlxDimensionsRole ) {
hgs
parents: 65
diff changeset
   259
        return ( mMLWrapper->retrieveItemDimension( itemIndex ) );
hgs
parents: 65
diff changeset
   260
    }
hgs
parents: 65
diff changeset
   261
hgs
parents: 65
diff changeset
   262
    if ( role == GlxDateRole ) {
hgs
parents: 65
diff changeset
   263
        return ( mMLWrapper->retrieveItemDate( itemIndex ) );
hgs
parents: 65
diff changeset
   264
    }
hgs
parents: 65
diff changeset
   265
hgs
parents: 65
diff changeset
   266
    if ( role == GlxTimeRole ) {
hgs
parents: 65
diff changeset
   267
        return mMLWrapper->retrieveItemTime( itemIndex );
44
hgs
parents: 43
diff changeset
   268
    }
69
hgs
parents: 65
diff changeset
   269
    
hgs
parents: 65
diff changeset
   270
    if ( role == GlxDescRole ) {
hgs
parents: 65
diff changeset
   271
        return mMLWrapper->retrieveListDesc( itemIndex );
hgs
parents: 65
diff changeset
   272
    }
hgs
parents: 65
diff changeset
   273
    
hgs
parents: 65
diff changeset
   274
    return QVariant(); 
44
hgs
parents: 43
diff changeset
   275
    
69
hgs
parents: 65
diff changeset
   276
}
hgs
parents: 65
diff changeset
   277
hgs
parents: 65
diff changeset
   278
QVariant GlxMediaModel::data( const QModelIndex &index, int role ) const
hgs
parents: 65
diff changeset
   279
{
hgs
parents: 65
diff changeset
   280
    if ( role < GlxItemImageDataEnd ) {
hgs
parents: 65
diff changeset
   281
        return itemImageData( index, role );
hgs
parents: 65
diff changeset
   282
    }
hgs
parents: 65
diff changeset
   283
    
hgs
parents: 65
diff changeset
   284
    if ( role < GlxCollectionPropertyEnd ) {
hgs
parents: 65
diff changeset
   285
        return collectionProperty( role );
hgs
parents: 65
diff changeset
   286
    }
hgs
parents: 65
diff changeset
   287
    
hgs
parents: 65
diff changeset
   288
    if ( role < GlxItemPropertyEnd ) {
hgs
parents: 65
diff changeset
   289
        return itemProperty( index, role);
hgs
parents: 65
diff changeset
   290
    }
hgs
parents: 65
diff changeset
   291
    
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
    return QVariant();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
//GetGridIconItem
69
hgs
parents: 65
diff changeset
   296
HbIcon* GlxMediaModel::GetGridIconItem( int itemIndex, GlxTBContextType tbContextType ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
{
69
hgs
parents: 65
diff changeset
   298
    HbIcon* itemIcon = itemIconCache[ itemIndex ]; //Initialize icon from the Cache will be NULL if Item not present
hgs
parents: 65
diff changeset
   299
    if ( !itemIcon ) {
hgs
parents: 65
diff changeset
   300
        itemIcon = mMLWrapper->retrieveItemIcon( itemIndex, tbContextType );
hgs
parents: 65
diff changeset
   301
        if ( itemIcon ) {
hgs
parents: 65
diff changeset
   302
            emit iconAvailable( itemIndex, itemIcon, GlxTBContextGrid );
hgs
parents: 65
diff changeset
   303
        }
hgs
parents: 65
diff changeset
   304
        itemIcon = itemIconCache[ itemIndex ];
hgs
parents: 65
diff changeset
   305
    }
hgs
parents: 65
diff changeset
   306
    return itemIcon;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
69
hgs
parents: 65
diff changeset
   310
HbIcon* GlxMediaModel::GetFsIconItem( int itemIndex, GlxTBContextType tbContextType ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
{
69
hgs
parents: 65
diff changeset
   312
    HbIcon* itemIcon = NULL; //Initialize icon from the Cache will be NULL if Item not present
45
hgs
parents: 44
diff changeset
   313
69
hgs
parents: 65
diff changeset
   314
    bool drmProtected = mMLWrapper->IsDrmProtected( itemIndex );
hgs
parents: 65
diff changeset
   315
    if ( drmProtected ) {
hgs
parents: 65
diff changeset
   316
        QString imagePath = mMLWrapper->retrieveItemUri( itemIndex );
hgs
parents: 65
diff changeset
   317
        bool rightValid = mMLWrapper->IsDrmValid( itemIndex );
hgs
parents: 65
diff changeset
   318
        if ( !rightValid ) {
45
hgs
parents: 44
diff changeset
   319
            //show error note here
69
hgs
parents: 65
diff changeset
   320
            if ( itemIndex == mFocusIndex ) {
hgs
parents: 65
diff changeset
   321
                mDRMUtilityWrapper->ShowRightsInfo( imagePath );
45
hgs
parents: 44
diff changeset
   322
            }
69
hgs
parents: 65
diff changeset
   323
            return itemIcon;
hgs
parents: 65
diff changeset
   324
        }
hgs
parents: 65
diff changeset
   325
        else {
45
hgs
parents: 44
diff changeset
   326
            //consumeDrmRights(imagePath);
69
hgs
parents: 65
diff changeset
   327
            mDRMUtilityWrapper->ConsumeRights( imagePath );
hgs
parents: 65
diff changeset
   328
            bool rightValid = mDRMUtilityWrapper->ItemRightsValidityCheck( imagePath, true );
hgs
parents: 65
diff changeset
   329
            mMLWrapper->setDrmValid( itemIndex, rightValid );
hgs
parents: 65
diff changeset
   330
        }
hgs
parents: 65
diff changeset
   331
    }
hgs
parents: 65
diff changeset
   332
    
hgs
parents: 65
diff changeset
   333
    itemIcon = itemFsIconCache[ itemIndex ]; //Initialize icon from the Cache will be NULL if Item not present
hgs
parents: 65
diff changeset
   334
    if ( !itemIcon ) {
hgs
parents: 65
diff changeset
   335
        itemIcon = mMLWrapper->retrieveItemIcon( itemIndex, tbContextType );
hgs
parents: 65
diff changeset
   336
        if ( itemIcon ) {
hgs
parents: 65
diff changeset
   337
            emit iconAvailable( itemIndex, itemIcon, tbContextType );
45
hgs
parents: 44
diff changeset
   338
        }
69
hgs
parents: 65
diff changeset
   339
        itemIcon = itemFsIconCache[ itemIndex ];
hgs
parents: 65
diff changeset
   340
    }
hgs
parents: 65
diff changeset
   341
    return itemIcon;
hgs
parents: 65
diff changeset
   342
}
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
69
hgs
parents: 65
diff changeset
   344
HbIcon GlxMediaModel::gridToFullscreenIcon( HbIcon * icon, int itemIndex ) const
hgs
parents: 65
diff changeset
   345
{
hgs
parents: 65
diff changeset
   346
    qDebug( "GlxMediaModel::gridToFullscreenIcon" );
hgs
parents: 65
diff changeset
   347
    QPixmap tempPixmap = icon->qicon().pixmap( 128, 128 );
hgs
parents: 65
diff changeset
   348
    QSize itemSize = mMLWrapper->retrieveItemDimension( itemIndex );
hgs
parents: 65
diff changeset
   349
    QSize sz = ( mContextMode == GlxContextLsFs ) ? QSize( 640, 360 ) : QSize( 360, 640 );
hgs
parents: 65
diff changeset
   350
    if ( !( ( itemSize.width() < sz.width() ) && ( itemSize.height() < sz.height() ) ) ) {
hgs
parents: 65
diff changeset
   351
        itemSize.scale( sz, Qt::KeepAspectRatio );
hgs
parents: 65
diff changeset
   352
    }
hgs
parents: 65
diff changeset
   353
    tempPixmap = tempPixmap.scaled( itemSize, Qt::IgnoreAspectRatio );
hgs
parents: 65
diff changeset
   354
    return HbIcon( QIcon( tempPixmap ) );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
69
hgs
parents: 65
diff changeset
   357
HbIcon GlxMediaModel::getFullScreenIcon( int itemIndex ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
{
69
hgs
parents: 65
diff changeset
   359
    HbIcon* itemIcon = NULL;
hgs
parents: 65
diff changeset
   360
    if ( mContextMode == GlxContextLsFs ) {
hgs
parents: 65
diff changeset
   361
        itemIcon = GetFsIconItem( itemIndex, GlxTBContextLsFs );
hgs
parents: 65
diff changeset
   362
    }
hgs
parents: 65
diff changeset
   363
    else if ( mContextMode == GlxContextPtFs ) {
hgs
parents: 65
diff changeset
   364
        itemIcon = GetFsIconItem( itemIndex, GlxTBContextPtFs );
hgs
parents: 65
diff changeset
   365
    }
hgs
parents: 65
diff changeset
   366
hgs
parents: 65
diff changeset
   367
    if ( itemIcon == NULL ) {
hgs
parents: 65
diff changeset
   368
        HbIcon* tempIcon = GetGridIconItem( itemIndex, GlxTBContextGrid );
hgs
parents: 65
diff changeset
   369
        if ( tempIcon && !tempIcon->isNull() ) {
hgs
parents: 65
diff changeset
   370
            HbIcon tmp = gridToFullscreenIcon( tempIcon, itemIndex );
hgs
parents: 65
diff changeset
   371
            if ( !tmp.isNull() ) {
hgs
parents: 65
diff changeset
   372
                return tmp;
hgs
parents: 65
diff changeset
   373
            }
hgs
parents: 65
diff changeset
   374
        }
hgs
parents: 65
diff changeset
   375
    }
hgs
parents: 65
diff changeset
   376
hgs
parents: 65
diff changeset
   377
    if ( itemIcon == NULL || itemIcon->isNull() ) {
hgs
parents: 65
diff changeset
   378
        itemIcon = getCorruptDefaultIcon( index( itemIndex, 0 ) );
hgs
parents: 65
diff changeset
   379
    }
hgs
parents: 65
diff changeset
   380
    return *itemIcon;
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
69
hgs
parents: 65
diff changeset
   383
QImage GlxMediaModel::getFullScreenImage( int itemIndex ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
{
69
hgs
parents: 65
diff changeset
   385
    QImage itemImage;
hgs
parents: 65
diff changeset
   386
    if ( mContextMode == GlxContextLsFs ) {
hgs
parents: 65
diff changeset
   387
        itemImage = mMLWrapper->retrieveItemImage( itemIndex, GlxTBContextLsFs );
hgs
parents: 65
diff changeset
   388
    }
hgs
parents: 65
diff changeset
   389
    else {
hgs
parents: 65
diff changeset
   390
        itemImage = mMLWrapper->retrieveItemImage( itemIndex, GlxTBContextPtFs );
hgs
parents: 65
diff changeset
   391
    }
hgs
parents: 65
diff changeset
   392
    if ( !itemImage.isNull() ) {
hgs
parents: 65
diff changeset
   393
        return itemImage;
hgs
parents: 65
diff changeset
   394
    }
hgs
parents: 65
diff changeset
   395
    else {
hgs
parents: 65
diff changeset
   396
        itemImage = mMLWrapper->retrieveItemImage( itemIndex, GlxTBContextGrid );
hgs
parents: 65
diff changeset
   397
        if ( !itemImage.isNull() ) {
hgs
parents: 65
diff changeset
   398
            QSize sz = ( mContextMode == GlxContextLsFs ) ? QSize( 640, 360 ) : QSize( 360, 640 );
hgs
parents: 65
diff changeset
   399
            itemImage = itemImage.scaled( sz, Qt::KeepAspectRatio );
hgs
parents: 65
diff changeset
   400
        }
hgs
parents: 65
diff changeset
   401
        return itemImage;
hgs
parents: 65
diff changeset
   402
    }    
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   405
void GlxMediaModel::itemUpdated( int itemIndex, GlxTBContextType tbContextType )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
{
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   407
    qDebug( "GlxMediaModel::itemUpdated %d", itemIndex );
69
hgs
parents: 65
diff changeset
   408
    //clear the grid and FS cache if they have any icons with them for that index
hgs
parents: 65
diff changeset
   409
    if ( tbContextType == GlxTBContextGrid ) {
hgs
parents: 65
diff changeset
   410
        if ( !thumbnailPopulatedFlag ) {
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   411
            thumbnailPopulatedCheck( itemIndex );
69
hgs
parents: 65
diff changeset
   412
        }
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   413
        itemIconCache.remove( itemIndex );
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   414
        emit dataChanged( index( itemIndex, 0 ), index( itemIndex, 0 ) );
69
hgs
parents: 65
diff changeset
   415
    }
hgs
parents: 65
diff changeset
   416
    if ( tbContextType == GlxTBContextLsFs || tbContextType == GlxTBContextPtFs ) {
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   417
        itemFsIconCache.remove( itemIndex );
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   418
        emit fullScreenDataChanged( index( itemIndex, 0 ), index( itemIndex, 0 ) );
69
hgs
parents: 65
diff changeset
   419
    }
hgs
parents: 65
diff changeset
   420
}
hgs
parents: 65
diff changeset
   421
hgs
parents: 65
diff changeset
   422
void GlxMediaModel::itemCorrupted( int itemIndex )
hgs
parents: 65
diff changeset
   423
{
hgs
parents: 65
diff changeset
   424
    qDebug( "GlxMediaModel::itemCorrupted %d", itemIndex );
54
hgs
parents: 50
diff changeset
   425
    if ( !thumbnailPopulatedFlag ) {
69
hgs
parents: 65
diff changeset
   426
        thumbnailPopulatedCheck( itemIndex );
54
hgs
parents: 50
diff changeset
   427
    }
69
hgs
parents: 65
diff changeset
   428
    emit dataChanged( index( itemIndex, 0 ), index( itemIndex, 0 ) );
71
27f2d7aec52a 201039_01
hgs
parents: 69
diff changeset
   429
    emit fullScreenDataChanged( index( itemIndex, 0 ), index( itemIndex, 0 ) );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   432
void GlxMediaModel::modelpopulated()
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   433
{
69
hgs
parents: 65
diff changeset
   434
    if ( mTempVisibleWindowIndex != -1 ) {
50
hgs
parents: 45
diff changeset
   435
        //Set the visible Window index only ff the index stored in the activity manager is not out of range
69
hgs
parents: 65
diff changeset
   436
        if ( rowCount() > mTempVisibleWindowIndex && mTempVisibleWindowIndex > 0 ) {
hgs
parents: 65
diff changeset
   437
            mMLWrapper->setVisibleWindowIndex( mTempVisibleWindowIndex );
50
hgs
parents: 45
diff changeset
   438
        }
hgs
parents: 45
diff changeset
   439
        else {
69
hgs
parents: 65
diff changeset
   440
            mMLWrapper->setVisibleWindowIndex( 0 );
50
hgs
parents: 45
diff changeset
   441
        }
45
hgs
parents: 44
diff changeset
   442
        mTempVisibleWindowIndex = -1;
50
hgs
parents: 45
diff changeset
   443
    }
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   444
    emit populated();
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   445
}
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   446
44
hgs
parents: 43
diff changeset
   447
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
   448
//updateDetailItems
hgs
parents: 43
diff changeset
   449
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
   450
void GlxMediaModel::updateDetailItems()
hgs
parents: 43
diff changeset
   451
{
69
hgs
parents: 65
diff changeset
   452
    qDebug( "GlxMediaModel::updateDetailItems" );
44
hgs
parents: 43
diff changeset
   453
    emit updateDetailsView();
hgs
parents: 43
diff changeset
   454
}
hgs
parents: 43
diff changeset
   455
69
hgs
parents: 65
diff changeset
   456
void GlxMediaModel::itemsAdded( int startIndex, int endIndex )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
{
69
hgs
parents: 65
diff changeset
   458
    qDebug( "GlxMediaModel::itemsAdded %d %d", startIndex, endIndex );
hgs
parents: 65
diff changeset
   459
    mFocusIndex = -1;
hgs
parents: 65
diff changeset
   460
    beginInsertRows( QModelIndex(), startIndex, endIndex );
hgs
parents: 65
diff changeset
   461
    itemIconCache.clear();
hgs
parents: 65
diff changeset
   462
    itemFsIconCache.clear();
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
    endInsertRows();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
69
hgs
parents: 65
diff changeset
   466
void GlxMediaModel::itemsRemoved( int startIndex, int endIndex )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
{
69
hgs
parents: 65
diff changeset
   468
    qDebug( "GlxMediaModel::itemsRemoved %d %d", startIndex, endIndex );
hgs
parents: 65
diff changeset
   469
    mFocusIndex = -1;
hgs
parents: 65
diff changeset
   470
    beginRemoveRows( QModelIndex(), startIndex, endIndex );
hgs
parents: 65
diff changeset
   471
    itemIconCache.clear();
hgs
parents: 65
diff changeset
   472
    itemFsIconCache.clear();
hgs
parents: 65
diff changeset
   473
    endRemoveRows();
hgs
parents: 65
diff changeset
   474
}
hgs
parents: 65
diff changeset
   475
hgs
parents: 65
diff changeset
   476
void GlxMediaModel::updateItemIcon( int itemIndex, HbIcon* itemIcon, GlxTBContextType tbContextType )
hgs
parents: 65
diff changeset
   477
{
hgs
parents: 65
diff changeset
   478
    qDebug( "GlxMediaModel::updateItemIcon %d", itemIndex );
hgs
parents: 65
diff changeset
   479
    if ( tbContextType == GlxTBContextGrid ) {
hgs
parents: 65
diff changeset
   480
        itemIconCache.insert( itemIndex, itemIcon );
hgs
parents: 65
diff changeset
   481
    }
hgs
parents: 65
diff changeset
   482
    else if ( tbContextType == GlxTBContextLsFs || tbContextType == GlxTBContextPtFs ) {
hgs
parents: 65
diff changeset
   483
        itemFsIconCache.insert( itemIndex, itemIcon );
hgs
parents: 65
diff changeset
   484
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
69
hgs
parents: 65
diff changeset
   487
void GlxMediaModel::albumTitleUpdated( QString aTitle )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
{
69
hgs
parents: 65
diff changeset
   489
    emit albumTitleAvailable( aTitle );
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   490
}
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
69
hgs
parents: 65
diff changeset
   492
void GlxMediaModel::setFocusIndex( const QModelIndex &index )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
{
69
hgs
parents: 65
diff changeset
   494
    qDebug( "GlxMediaModel::setFocusIndex%d", index.row() );
hgs
parents: 65
diff changeset
   495
hgs
parents: 65
diff changeset
   496
    int itemIndex = index.row();
hgs
parents: 65
diff changeset
   497
    if ( itemIndex < rowCount() && itemIndex >= 0 ) {
hgs
parents: 65
diff changeset
   498
        mMLWrapper->setFocusIndex( itemIndex );
hgs
parents: 65
diff changeset
   499
        mFocusIndex = itemIndex;
hgs
parents: 65
diff changeset
   500
    }
hgs
parents: 65
diff changeset
   501
    else if ( rowCount() > 0 ){
hgs
parents: 65
diff changeset
   502
       
hgs
parents: 65
diff changeset
   503
        mMLWrapper->setFocusIndex( 0 );
hgs
parents: 65
diff changeset
   504
        mFocusIndex = itemIndex = 0;
hgs
parents: 65
diff changeset
   505
    }
hgs
parents: 65
diff changeset
   506
hgs
parents: 65
diff changeset
   507
    if ( mSubState != IMAGEVIEWER_S ) {
hgs
parents: 65
diff changeset
   508
        if ( mMLWrapper->IsDrmProtected( itemIndex ) && ( !mMLWrapper->IsDrmValid( itemIndex ) ) ) {
hgs
parents: 65
diff changeset
   509
            QString imagePath = mMLWrapper->retrieveItemUri( itemIndex );
hgs
parents: 65
diff changeset
   510
            mDRMUtilityWrapper->ShowRightsInfo( imagePath );
hgs
parents: 65
diff changeset
   511
        }
hgs
parents: 65
diff changeset
   512
    }
hgs
parents: 65
diff changeset
   513
    else {
45
hgs
parents: 44
diff changeset
   514
        CGlxImageViewerManager* CGlxImageViewerManager = CGlxImageViewerManager::InstanceL();
hgs
parents: 44
diff changeset
   515
        const TDesC& title = CGlxImageViewerManager->ImageUri()->Des();
69
hgs
parents: 65
diff changeset
   516
        QString imagePath = QString::fromUtf16( title.Ptr(), title.Length() );
hgs
parents: 65
diff changeset
   517
        mDRMUtilityWrapper->ShowRightsInfo( imagePath );
hgs
parents: 65
diff changeset
   518
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
QModelIndex GlxMediaModel::getFocusIndex() const
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
{
69
hgs
parents: 65
diff changeset
   523
    int itemIndex = mFocusIndex;
hgs
parents: 65
diff changeset
   524
    if ( mFocusIndex == -1 ) {
hgs
parents: 65
diff changeset
   525
        itemIndex = mMLWrapper->getFocusIndex();
hgs
parents: 65
diff changeset
   526
    }
hgs
parents: 65
diff changeset
   527
hgs
parents: 65
diff changeset
   528
    return index( itemIndex, 0 );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
69
hgs
parents: 65
diff changeset
   531
void GlxMediaModel::setSelectedIndex( const QModelIndex &index )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
    int itemIndex = index.row();
69
hgs
parents: 65
diff changeset
   534
    qDebug( "GlxMediaModel::setSelectedIndex()%d", itemIndex );
hgs
parents: 65
diff changeset
   535
    mMLWrapper->setSelectedIndex( itemIndex );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
50
hgs
parents: 45
diff changeset
   538
HbIcon * GlxMediaModel::getCorruptDefaultIcon( const QModelIndex &index ) const
hgs
parents: 45
diff changeset
   539
{
hgs
parents: 45
diff changeset
   540
    if ( mMLWrapper->isCorruptedImage( index.row() ) ) {
69
hgs
parents: 65
diff changeset
   541
        return m_CorruptIcon;
50
hgs
parents: 45
diff changeset
   542
    }
69
hgs
parents: 65
diff changeset
   543
    return m_DefaultIcon;
50
hgs
parents: 45
diff changeset
   544
}
hgs
parents: 45
diff changeset
   545
54
hgs
parents: 50
diff changeset
   546
void GlxMediaModel::thumbnailPopulatedCheck( int index )
hgs
parents: 50
diff changeset
   547
{
69
hgs
parents: 65
diff changeset
   548
    int count = rowCount() - DELTA_IMAGE;
hgs
parents: 65
diff changeset
   549
    int maxRange = INITIAL_POPULATE_IMAGE_COUNT + DELTA_IMAGE;
hgs
parents: 65
diff changeset
   550
    if ( index >= count || ( index >= INITIAL_POPULATE_IMAGE_COUNT && index < maxRange ) ) {
54
hgs
parents: 50
diff changeset
   551
        thumbnailPopulatedFlag = TRUE;
hgs
parents: 50
diff changeset
   552
        emit thumbnailPopulated();
hgs
parents: 50
diff changeset
   553
    }
hgs
parents: 50
diff changeset
   554
}
hgs
parents: 50
diff changeset
   555
69
hgs
parents: 65
diff changeset
   556
bool GlxMediaModel::setData( const QModelIndex & idx, const QVariant & value, int role )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
    Q_UNUSED( idx )
69
hgs
parents: 65
diff changeset
   559
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
    if ( GlxContextRole == role ) {
69
hgs
parents: 65
diff changeset
   561
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   562
            setContextMode( (GlxContextMode) value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
    }
69
hgs
parents: 65
diff changeset
   566
44
hgs
parents: 43
diff changeset
   567
    if ( GlxRemoveContextRole == role ) {
69
hgs
parents: 65
diff changeset
   568
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   569
            removeContextMode( (GlxContextMode) value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
    }
69
hgs
parents: 65
diff changeset
   573
hgs
parents: 65
diff changeset
   574
    if ( GlxFocusIndexRole == role ) {
hgs
parents: 65
diff changeset
   575
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   576
            setFocusIndex( index( value.value<int> (), 0 ) );
hgs
parents: 65
diff changeset
   577
            return TRUE;
hgs
parents: 65
diff changeset
   578
        }
hgs
parents: 65
diff changeset
   579
    }
hgs
parents: 65
diff changeset
   580
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
    if ( GlxVisualWindowIndex == role ) {
69
hgs
parents: 65
diff changeset
   582
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   583
            mMLWrapper->setVisibleWindowIndex( value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
    }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
    if ( GlxSelectedIndexRole == role ) {
69
hgs
parents: 65
diff changeset
   589
        qDebug( "GlxMediaModel::setData::GlxSelectedIndexRole()::BEFORE%d", idx.row() );
hgs
parents: 65
diff changeset
   590
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   591
            qDebug( "GlxMediaModel::setData()::GlxSelectedIndexRole%d", idx.row() );
hgs
parents: 65
diff changeset
   592
            setSelectedIndex( index( value.value<int> (), 0 ) );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
    }
69
hgs
parents: 65
diff changeset
   596
hgs
parents: 65
diff changeset
   597
    if ( role == GlxSubStateRole && value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   598
        mSubState = value.value<int> ();
24
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
   599
        return TRUE;
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
   600
    }
45
hgs
parents: 44
diff changeset
   601
    if ( GlxTempVisualWindowIndex == role ) {
69
hgs
parents: 65
diff changeset
   602
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   603
            mTempVisibleWindowIndex = value.value<int> ();
45
hgs
parents: 44
diff changeset
   604
            return TRUE;
69
hgs
parents: 65
diff changeset
   605
        }
45
hgs
parents: 44
diff changeset
   606
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
    return FALSE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
69
hgs
parents: 65
diff changeset
   611
QModelIndex GlxMediaModel::index( int row, int column, const QModelIndex &parent ) const
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   613
    Q_UNUSED(parent)
69
hgs
parents: 65
diff changeset
   614
    qDebug( "GlxMediaModel::index row %d column %d", row, column );
hgs
parents: 65
diff changeset
   615
hgs
parents: 65
diff changeset
   616
    if ( ( row < 0 ) || ( row >= rowCount() ) || ( column < 0 ) || ( column >= columnCount() ) ) {
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
        return QModelIndex();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
    }
69
hgs
parents: 65
diff changeset
   619
hgs
parents: 65
diff changeset
   620
    return QAbstractItemModel::createIndex( row, column );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622