ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp
changeset 40 112f0ac2d1f0
child 50 a0f57508af73
equal deleted inserted replaced
26:c499df2dbb33 40:112f0ac2d1f0
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 #include <glxmodelwrapper.h>
       
    19 #include <glxmodelparm.h>
       
    20 #include <QDebug>
       
    21 
       
    22 GlxModelWrapper::GlxModelWrapper(): mModel ( NULL),
       
    23     mOriginalRole(Qt::DecorationRole),
       
    24     mConvertRole(Qt::DecorationRole)
       
    25     {
       
    26 
       
    27     }
       
    28 
       
    29 void GlxModelWrapper::setModel(QAbstractItemModel *model)
       
    30     {
       
    31     if(model && mModel != model)
       
    32         {
       
    33         disConnectFromModel();
       
    34         mModel = model;
       
    35         connectToModel();
       
    36         resetTheModel();
       
    37         }	
       
    38     }
       
    39 
       
    40 
       
    41 void GlxModelWrapper::setRoles(int convertrole, int originalrole)
       
    42     {
       
    43 	mConvertRole  =   convertrole;
       
    44 	mOriginalRole =   originalrole;
       
    45 	}
       
    46 
       
    47 void GlxModelWrapper::scrollingStarted()
       
    48     {
       
    49  
       
    50     }
       
    51 
       
    52 void GlxModelWrapper::scrollingEnded()
       
    53     {
       
    54 
       
    55     }
       
    56 
       
    57 void GlxModelWrapper::connectToModel()
       
    58 	{
       
    59 	connect(mModel, SIGNAL(destroyed()),this, SLOT(modelDestroyed()));
       
    60 	connect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(dataChangedinModel(QModelIndex,QModelIndex)));
       
    61 	connect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),this,SLOT(rowsAboutToBeInserted(QModelIndex,int,int)));
       
    62     connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)),this,  SLOT(rowsInserted(QModelIndex,int,int)));
       
    63     connect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),this,SLOT(rowsAboutToBeRemoved(QModelIndex,int,int)));
       
    64     connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),this,SLOT(rowsRemoved(QModelIndex,int,int)));
       
    65 	}
       
    66 	
       
    67 void GlxModelWrapper::disConnectFromModel()
       
    68 	{
       
    69 	if(mModel)
       
    70 	    {
       
    71 	    disconnect(mModel, SIGNAL(destroyed()),this, SLOT(modelDestroyed()));
       
    72 		disconnect(mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(dataChangedinModel(QModelIndex,QModelIndex)));
       
    73 		disconnect(mModel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),this,SLOT(rowsAboutToBeInserted(QModelIndex,int,int)));
       
    74 	    disconnect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)),this,  SLOT(rowsInserted(QModelIndex,int,int)));
       
    75 	    disconnect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),this,SLOT(rowsAboutToBeRemoved(QModelIndex,int,int)));
       
    76 	    disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),this,SLOT(rowsRemoved(QModelIndex,int,int)));	
       
    77 		}
       
    78 	}
       
    79 	
       
    80 
       
    81 GlxModelWrapper::~GlxModelWrapper()
       
    82     {
       
    83 	disConnectFromModel();
       
    84     }
       
    85 
       
    86 int GlxModelWrapper::rowCount(const QModelIndex &parent ) const
       
    87     {
       
    88 	Q_UNUSED(parent);
       
    89 	if(mModel)
       
    90 		return (mModel->rowCount());
       
    91 	else
       
    92 		return 0;
       
    93     }
       
    94 
       
    95 int GlxModelWrapper::columnCount(const QModelIndex &parent ) const
       
    96     {
       
    97     Q_UNUSED(parent);
       
    98 	return 1; 
       
    99     }
       
   100 
       
   101 QModelIndex GlxModelWrapper::parent(const QModelIndex &child) const
       
   102     {
       
   103     Q_UNUSED(child);
       
   104     return QModelIndex();  // No need to Check mModel ,Should i Set mModel As parent
       
   105     }
       
   106 
       
   107 QVariant GlxModelWrapper::data(const QModelIndex &idx, int role) const
       
   108     {
       
   109 	if(mModel)
       
   110 		{
       
   111 		if(mOriginalRole == role)
       
   112 			{
       
   113 			return (mModel->data(idx,mConvertRole));
       
   114 			}
       
   115 		else
       
   116 			{
       
   117 			return (mModel->data(idx,role));		
       
   118 			}
       
   119 		}
       
   120 	else
       
   121 		{
       
   122 		return QVariant();	
       
   123 		}
       
   124     }
       
   125 
       
   126 bool GlxModelWrapper::setData ( const QModelIndex & idx, const QVariant & value, int role )
       
   127     {
       
   128     if(mModel)
       
   129     	{
       
   130     	return (mModel->setData(mModel->index(idx.row(),0),value,role));
       
   131     	}
       
   132     else
       
   133     	{
       
   134     	return FALSE;
       
   135     	}
       
   136     }
       
   137 
       
   138 QModelIndex GlxModelWrapper::index(int row, int column, const QModelIndex &parent) const
       
   139     {
       
   140     Q_UNUSED(parent);
       
   141     if ( ( row < 0 ) || ( row >= rowCount() )  || ( column < 0 )  || ( column >= columnCount() ) ) 
       
   142         {
       
   143         return QModelIndex();
       
   144         }
       
   145     return QAbstractItemModel::createIndex(row, column); 
       
   146     }
       
   147 
       
   148 QModelIndex GlxModelWrapper::basemodelindex(int row, int column, const QModelIndex &parent) const
       
   149     {
       
   150     Q_UNUSED(parent);
       
   151     if(mModel)
       
   152         {
       
   153         return (mModel->index(row,column));
       
   154         }
       
   155     else
       
   156         {
       
   157         return QModelIndex();
       
   158         }
       
   159     }
       
   160 
       
   161 void GlxModelWrapper::modelDestroyed()
       
   162     {
       
   163     disConnectFromModel();
       
   164     mModel = NULL;
       
   165     resetTheModel();
       
   166     }
       
   167 
       
   168 void GlxModelWrapper::resetTheModel()
       
   169     {
       
   170     beginResetModel();
       
   171     endResetModel();
       
   172     }
       
   173 
       
   174 void GlxModelWrapper::dataChangedinModel(QModelIndex startIndex, QModelIndex endIndex)
       
   175     {
       
   176     emit dataChanged(index(startIndex.row(),startIndex.column()),index(endIndex.row(),endIndex.column()));
       
   177     }
       
   178 
       
   179 void GlxModelWrapper::rowsAboutToBeInserted(const QModelIndex &parent,int start,int end)
       
   180     {
       
   181     Q_UNUSED(parent);
       
   182     Q_UNUSED(start);
       
   183     Q_UNUSED(end);
       
   184     }
       
   185 
       
   186 void GlxModelWrapper::rowsInserted(const QModelIndex &parent, int start, int end)
       
   187     {
       
   188     Q_UNUSED(parent);
       
   189     beginInsertRows(QModelIndex(), start, end);
       
   190     endInsertRows();
       
   191     }
       
   192 
       
   193 void GlxModelWrapper::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
       
   194     {
       
   195     Q_UNUSED(parent);
       
   196     Q_UNUSED(start);
       
   197     Q_UNUSED(end);
       
   198     }
       
   199 
       
   200 void GlxModelWrapper::rowsRemoved(const QModelIndex &parent, int start, int end)
       
   201     {
       
   202     Q_UNUSED(parent);
       
   203     beginRemoveRows(QModelIndex(), start, end);
       
   204     endRemoveRows();
       
   205     }
       
   206 
       
   207 
       
   208