ui/uiengine/model/mediamodel/src/glxmediamodel.cpp
author hgs
Mon, 27 Sep 2010 15:13:20 +0530
changeset 69 45459746d5e8
parent 65 ccee5c4b0de4
child 71 27f2d7aec52a
permissions -rw-r--r--
201039
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
69
hgs
parents: 65
diff changeset
   405
void GlxMediaModel::itemUpdated( int mlIndex, GlxTBContextType tbContextType )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
{
69
hgs
parents: 65
diff changeset
   407
    qDebug( "GlxMediaModel::itemUpdated %d", mlIndex );
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 ) {
hgs
parents: 65
diff changeset
   411
            thumbnailPopulatedCheck( mlIndex );
hgs
parents: 65
diff changeset
   412
        }
hgs
parents: 65
diff changeset
   413
        itemIconCache.remove( mlIndex );
hgs
parents: 65
diff changeset
   414
    }
hgs
parents: 65
diff changeset
   415
    if ( tbContextType == GlxTBContextLsFs || tbContextType == GlxTBContextPtFs ) {
hgs
parents: 65
diff changeset
   416
        itemFsIconCache.remove( mlIndex );
hgs
parents: 65
diff changeset
   417
    }
hgs
parents: 65
diff changeset
   418
    emit dataChanged( index( mlIndex, 0 ), index( mlIndex, 0 ) );
hgs
parents: 65
diff changeset
   419
}
hgs
parents: 65
diff changeset
   420
hgs
parents: 65
diff changeset
   421
void GlxMediaModel::itemCorrupted( int itemIndex )
hgs
parents: 65
diff changeset
   422
{
hgs
parents: 65
diff changeset
   423
    qDebug( "GlxMediaModel::itemCorrupted %d", itemIndex );
54
hgs
parents: 50
diff changeset
   424
    if ( !thumbnailPopulatedFlag ) {
69
hgs
parents: 65
diff changeset
   425
        thumbnailPopulatedCheck( itemIndex );
54
hgs
parents: 50
diff changeset
   426
    }
69
hgs
parents: 65
diff changeset
   427
    emit dataChanged( index( itemIndex, 0 ), index( itemIndex, 0 ) );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   430
void GlxMediaModel::modelpopulated()
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   431
{
69
hgs
parents: 65
diff changeset
   432
    if ( mTempVisibleWindowIndex != -1 ) {
50
hgs
parents: 45
diff changeset
   433
        //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
   434
        if ( rowCount() > mTempVisibleWindowIndex && mTempVisibleWindowIndex > 0 ) {
hgs
parents: 65
diff changeset
   435
            mMLWrapper->setVisibleWindowIndex( mTempVisibleWindowIndex );
50
hgs
parents: 45
diff changeset
   436
        }
hgs
parents: 45
diff changeset
   437
        else {
69
hgs
parents: 65
diff changeset
   438
            mMLWrapper->setVisibleWindowIndex( 0 );
50
hgs
parents: 45
diff changeset
   439
        }
45
hgs
parents: 44
diff changeset
   440
        mTempVisibleWindowIndex = -1;
50
hgs
parents: 45
diff changeset
   441
    }
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   442
    emit populated();
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   443
}
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   444
44
hgs
parents: 43
diff changeset
   445
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
   446
//updateDetailItems
hgs
parents: 43
diff changeset
   447
//------------------------------------------------------------------------------------------------------------
hgs
parents: 43
diff changeset
   448
void GlxMediaModel::updateDetailItems()
hgs
parents: 43
diff changeset
   449
{
69
hgs
parents: 65
diff changeset
   450
    qDebug( "GlxMediaModel::updateDetailItems" );
44
hgs
parents: 43
diff changeset
   451
    emit updateDetailsView();
hgs
parents: 43
diff changeset
   452
}
hgs
parents: 43
diff changeset
   453
69
hgs
parents: 65
diff changeset
   454
void GlxMediaModel::itemsAdded( int startIndex, int endIndex )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
{
69
hgs
parents: 65
diff changeset
   456
    qDebug( "GlxMediaModel::itemsAdded %d %d", startIndex, endIndex );
hgs
parents: 65
diff changeset
   457
    mFocusIndex = -1;
hgs
parents: 65
diff changeset
   458
    beginInsertRows( QModelIndex(), startIndex, endIndex );
hgs
parents: 65
diff changeset
   459
    itemIconCache.clear();
hgs
parents: 65
diff changeset
   460
    itemFsIconCache.clear();
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
    endInsertRows();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
69
hgs
parents: 65
diff changeset
   464
void GlxMediaModel::itemsRemoved( int startIndex, int endIndex )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
{
69
hgs
parents: 65
diff changeset
   466
    qDebug( "GlxMediaModel::itemsRemoved %d %d", startIndex, endIndex );
hgs
parents: 65
diff changeset
   467
    mFocusIndex = -1;
hgs
parents: 65
diff changeset
   468
    beginRemoveRows( QModelIndex(), startIndex, endIndex );
hgs
parents: 65
diff changeset
   469
    itemIconCache.clear();
hgs
parents: 65
diff changeset
   470
    itemFsIconCache.clear();
hgs
parents: 65
diff changeset
   471
    endRemoveRows();
hgs
parents: 65
diff changeset
   472
}
hgs
parents: 65
diff changeset
   473
hgs
parents: 65
diff changeset
   474
void GlxMediaModel::updateItemIcon( int itemIndex, HbIcon* itemIcon, GlxTBContextType tbContextType )
hgs
parents: 65
diff changeset
   475
{
hgs
parents: 65
diff changeset
   476
    qDebug( "GlxMediaModel::updateItemIcon %d", itemIndex );
hgs
parents: 65
diff changeset
   477
    if ( tbContextType == GlxTBContextGrid ) {
hgs
parents: 65
diff changeset
   478
        itemIconCache.insert( itemIndex, itemIcon );
hgs
parents: 65
diff changeset
   479
    }
hgs
parents: 65
diff changeset
   480
    else if ( tbContextType == GlxTBContextLsFs || tbContextType == GlxTBContextPtFs ) {
hgs
parents: 65
diff changeset
   481
        itemFsIconCache.insert( itemIndex, itemIcon );
hgs
parents: 65
diff changeset
   482
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
69
hgs
parents: 65
diff changeset
   485
void GlxMediaModel::albumTitleUpdated( QString aTitle )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
{
69
hgs
parents: 65
diff changeset
   487
    emit albumTitleAvailable( aTitle );
42
5e1df1b52eb3 201019_01
hgs
parents: 40
diff changeset
   488
}
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
69
hgs
parents: 65
diff changeset
   490
void GlxMediaModel::setFocusIndex( const QModelIndex &index )
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
    qDebug( "GlxMediaModel::setFocusIndex%d", index.row() );
hgs
parents: 65
diff changeset
   493
hgs
parents: 65
diff changeset
   494
    int itemIndex = index.row();
hgs
parents: 65
diff changeset
   495
    if ( itemIndex < rowCount() && itemIndex >= 0 ) {
hgs
parents: 65
diff changeset
   496
        mMLWrapper->setFocusIndex( itemIndex );
hgs
parents: 65
diff changeset
   497
        mFocusIndex = itemIndex;
hgs
parents: 65
diff changeset
   498
    }
hgs
parents: 65
diff changeset
   499
    else if ( rowCount() > 0 ){
hgs
parents: 65
diff changeset
   500
       
hgs
parents: 65
diff changeset
   501
        mMLWrapper->setFocusIndex( 0 );
hgs
parents: 65
diff changeset
   502
        mFocusIndex = itemIndex = 0;
hgs
parents: 65
diff changeset
   503
    }
hgs
parents: 65
diff changeset
   504
hgs
parents: 65
diff changeset
   505
    if ( mSubState != IMAGEVIEWER_S ) {
hgs
parents: 65
diff changeset
   506
        if ( mMLWrapper->IsDrmProtected( itemIndex ) && ( !mMLWrapper->IsDrmValid( itemIndex ) ) ) {
hgs
parents: 65
diff changeset
   507
            QString imagePath = mMLWrapper->retrieveItemUri( itemIndex );
hgs
parents: 65
diff changeset
   508
            mDRMUtilityWrapper->ShowRightsInfo( imagePath );
hgs
parents: 65
diff changeset
   509
        }
hgs
parents: 65
diff changeset
   510
    }
hgs
parents: 65
diff changeset
   511
    else {
45
hgs
parents: 44
diff changeset
   512
        CGlxImageViewerManager* CGlxImageViewerManager = CGlxImageViewerManager::InstanceL();
hgs
parents: 44
diff changeset
   513
        const TDesC& title = CGlxImageViewerManager->ImageUri()->Des();
69
hgs
parents: 65
diff changeset
   514
        QString imagePath = QString::fromUtf16( title.Ptr(), title.Length() );
hgs
parents: 65
diff changeset
   515
        mDRMUtilityWrapper->ShowRightsInfo( imagePath );
hgs
parents: 65
diff changeset
   516
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
QModelIndex GlxMediaModel::getFocusIndex() const
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
{
69
hgs
parents: 65
diff changeset
   521
    int itemIndex = mFocusIndex;
hgs
parents: 65
diff changeset
   522
    if ( mFocusIndex == -1 ) {
hgs
parents: 65
diff changeset
   523
        itemIndex = mMLWrapper->getFocusIndex();
hgs
parents: 65
diff changeset
   524
    }
hgs
parents: 65
diff changeset
   525
hgs
parents: 65
diff changeset
   526
    return index( itemIndex, 0 );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
69
hgs
parents: 65
diff changeset
   529
void GlxMediaModel::setSelectedIndex( const QModelIndex &index )
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
    int itemIndex = index.row();
69
hgs
parents: 65
diff changeset
   532
    qDebug( "GlxMediaModel::setSelectedIndex()%d", itemIndex );
hgs
parents: 65
diff changeset
   533
    mMLWrapper->setSelectedIndex( itemIndex );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
50
hgs
parents: 45
diff changeset
   536
HbIcon * GlxMediaModel::getCorruptDefaultIcon( const QModelIndex &index ) const
hgs
parents: 45
diff changeset
   537
{
hgs
parents: 45
diff changeset
   538
    if ( mMLWrapper->isCorruptedImage( index.row() ) ) {
69
hgs
parents: 65
diff changeset
   539
        return m_CorruptIcon;
50
hgs
parents: 45
diff changeset
   540
    }
69
hgs
parents: 65
diff changeset
   541
    return m_DefaultIcon;
50
hgs
parents: 45
diff changeset
   542
}
hgs
parents: 45
diff changeset
   543
54
hgs
parents: 50
diff changeset
   544
void GlxMediaModel::thumbnailPopulatedCheck( int index )
hgs
parents: 50
diff changeset
   545
{
69
hgs
parents: 65
diff changeset
   546
    int count = rowCount() - DELTA_IMAGE;
hgs
parents: 65
diff changeset
   547
    int maxRange = INITIAL_POPULATE_IMAGE_COUNT + DELTA_IMAGE;
hgs
parents: 65
diff changeset
   548
    if ( index >= count || ( index >= INITIAL_POPULATE_IMAGE_COUNT && index < maxRange ) ) {
54
hgs
parents: 50
diff changeset
   549
        thumbnailPopulatedFlag = TRUE;
hgs
parents: 50
diff changeset
   550
        emit thumbnailPopulated();
hgs
parents: 50
diff changeset
   551
    }
hgs
parents: 50
diff changeset
   552
}
hgs
parents: 50
diff changeset
   553
69
hgs
parents: 65
diff changeset
   554
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
   555
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
    Q_UNUSED( idx )
69
hgs
parents: 65
diff changeset
   557
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
    if ( GlxContextRole == role ) {
69
hgs
parents: 65
diff changeset
   559
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   560
            setContextMode( (GlxContextMode) value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
    }
69
hgs
parents: 65
diff changeset
   564
44
hgs
parents: 43
diff changeset
   565
    if ( GlxRemoveContextRole == role ) {
69
hgs
parents: 65
diff changeset
   566
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   567
            removeContextMode( (GlxContextMode) value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
    }
69
hgs
parents: 65
diff changeset
   571
hgs
parents: 65
diff changeset
   572
    if ( GlxFocusIndexRole == role ) {
hgs
parents: 65
diff changeset
   573
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   574
            setFocusIndex( index( value.value<int> (), 0 ) );
hgs
parents: 65
diff changeset
   575
            return TRUE;
hgs
parents: 65
diff changeset
   576
        }
hgs
parents: 65
diff changeset
   577
    }
hgs
parents: 65
diff changeset
   578
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
    if ( GlxVisualWindowIndex == role ) {
69
hgs
parents: 65
diff changeset
   580
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   581
            mMLWrapper->setVisibleWindowIndex( value.value<int> () );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
    }
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
    if ( GlxSelectedIndexRole == role ) {
69
hgs
parents: 65
diff changeset
   587
        qDebug( "GlxMediaModel::setData::GlxSelectedIndexRole()::BEFORE%d", idx.row() );
hgs
parents: 65
diff changeset
   588
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   589
            qDebug( "GlxMediaModel::setData()::GlxSelectedIndexRole%d", idx.row() );
hgs
parents: 65
diff changeset
   590
            setSelectedIndex( index( value.value<int> (), 0 ) );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
            return TRUE;
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
        }
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
    }
69
hgs
parents: 65
diff changeset
   594
hgs
parents: 65
diff changeset
   595
    if ( role == GlxSubStateRole && value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   596
        mSubState = value.value<int> ();
24
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
   597
        return TRUE;
99ad1390cd33 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 23
diff changeset
   598
    }
45
hgs
parents: 44
diff changeset
   599
    if ( GlxTempVisualWindowIndex == role ) {
69
hgs
parents: 65
diff changeset
   600
        if ( value.isValid() && value.canConvert<int> () ) {
hgs
parents: 65
diff changeset
   601
            mTempVisibleWindowIndex = value.value<int> ();
45
hgs
parents: 44
diff changeset
   602
            return TRUE;
69
hgs
parents: 65
diff changeset
   603
        }
45
hgs
parents: 44
diff changeset
   604
    }
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
    return FALSE;
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
69
hgs
parents: 65
diff changeset
   609
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
   610
{
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   611
    Q_UNUSED(parent)
69
hgs
parents: 65
diff changeset
   612
    qDebug( "GlxMediaModel::index row %d column %d", row, column );
hgs
parents: 65
diff changeset
   613
hgs
parents: 65
diff changeset
   614
    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
   615
        return QModelIndex();
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
    }
69
hgs
parents: 65
diff changeset
   617
hgs
parents: 65
diff changeset
   618
    return QAbstractItemModel::createIndex( row, column );
23
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   619
}
74c9f037fd5d Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   620