ui/uiengine/model/favmediamodel/src/glxfavmediamodel.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:52:22 +0300
changeset 29 2c833fc9e98f
permissions -rw-r--r--
Revision: 201017 Kit: 201019

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   ?Description
*
*/



#include <glxfavmediamodel.h>
#include <glxmodelparm.h>
#include <glxtracer.h>
#include <glxfiltergeneraldefs.h>


GlxFavMediaModel::GlxFavMediaModel(GlxModelParm & modelParm)
{
    TRACER("GlxFavMediaModel::GlxFavMediaModel");
    mMLWrapper = new GlxMLWrapper(modelParm.collection(),0,EGlxFilterImage,modelParm.path());
    mMLWrapper->setContextMode( modelParm.contextMode() );      
    int err = connect(mMLWrapper, SIGNAL(insertItems(int, int)), this, SLOT(itemsAdded(int, int)));
        err = connect(mMLWrapper, SIGNAL(removeItems(int, int)), this, SLOT(itemsRemoved(int, int)));   
}

GlxFavMediaModel::~GlxFavMediaModel()
{
    TRACER("GlxFavMediaModel::~GlxFavMediaModel");
    int err =  disconnect(mMLWrapper, SIGNAL(insertItems(int, int)), this, SLOT(itemsAdded(int, int)));
    err = disconnect(mMLWrapper, SIGNAL(removeItems(int, int)), this, SLOT(itemsRemoved(int, int)));
    delete mMLWrapper;
}


int GlxFavMediaModel::rowCount(const QModelIndex &parent ) const
{
    TRACER("GlxFavMediaModel::rowCount");
    Q_UNUSED(parent);
    return (mMLWrapper->getItemCount());
}

int GlxFavMediaModel::columnCount(const QModelIndex &parent ) const
{
    TRACER("GlxFavMediaModel::columnCount");
    Q_UNUSED(parent);
    return 1;
}

QModelIndex GlxFavMediaModel::parent(const QModelIndex &child) const
{
    TRACER("GlxFavMediaModel::parent");
    Q_UNUSED(child);
    //returns always invalid model index
    return QModelIndex();
}


QVariant GlxFavMediaModel::data(const QModelIndex &index, int role) const
{
    TRACER("GlxFavMediaModel::data");
  
    if ((!index.isValid()) ) {
    return QVariant();
    }

    if (role == GlxFavorites){
    return rowCount();
    }
 
  return QVariant();
}


void GlxFavMediaModel::itemsAdded(int startIndex, int endIndex)
{
    TRACER("GlxFavMediaModel::itemsAdded");
    beginInsertRows(QModelIndex(), startIndex, endIndex);
    emit dataChanged(index(startIndex,0),index(startIndex,0));
    endInsertRows();
}

void GlxFavMediaModel::itemsRemoved(int startIndex, int endIndex)
{
    TRACER("GlxFavMediaModel::itemsRemoved");
    beginRemoveRows(QModelIndex(), startIndex, endIndex);
    emit dataChanged(index(startIndex,0),index(startIndex,0));
    endRemoveRows();    
}


QModelIndex GlxFavMediaModel::index(int row, int column, const QModelIndex &parent) const
{
    TRACER("GlxFavMediaModel::index");
    Q_UNUSED(parent)        
    if ( ( row < 0 )
        || ( row > rowCount() )
        || ( column < 0 )
        || ( column >= columnCount() ) ) {
        return QModelIndex();
    }
    
    return QAbstractItemModel::createIndex(row, column);           
}