diff -r 459da34cdb45 -r 83cc6bae1de8 emailservices/nmutilities/src/nmcontacthistorymodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/nmutilities/src/nmcontacthistorymodel.cpp Wed Sep 15 12:09:55 2010 +0300 @@ -0,0 +1,113 @@ +/* +* Copyright (c) 2010 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: Public implementation of Contact History Model API +* +*/ + +#include + +#include "nmcontacthistorymodel.h" +#include "nmcontacthistorymodel_p.h" + +// -------------------------------------------------------------------------- +// Start of implementation (NmContactHistoryModel) +// -------------------------------------------------------------------------- +/*! + Constructor for NmContactHistoryModel + + \param modelType ModelType to be used, Email / Messaging +*/ +NmContactHistoryModel::NmContactHistoryModel( + const NmContactHistoryModelType modelType) +{ + d_ptr = new NmContactHistoryModelPrivate(modelType); + Q_CHECK_PTR(d_ptr); + + QObject::connect(d_ptr, SIGNAL(queryCompleted(int)), this, + SLOT(handleQueryCompleted(int))); +} + +/*! + Destructor of NmContactHistoryModel + */ +NmContactHistoryModel::~NmContactHistoryModel() +{ + delete d_ptr; +} + +/*! + Queries contact databases from private implementation + + \param query String to be queried. +*/ +void NmContactHistoryModel::query(const QString &query) +{ + d_ptr->queryDatabases(query); +} + +/*! + Signaled once query is completed, emits modelCompleted. + Private Slot. + + \param err, 0 if building model was success +*/ +void NmContactHistoryModel::handleQueryCompleted(int err) +{ + + int lastUpdateIndex = (d_ptr->mPrivateItemList.count())-1; + + if (lastUpdateIndex != -1) + { + // Notify views that we are about to change model data. + beginInsertRows(QModelIndex(),0,lastUpdateIndex); + d_ptr->refreshDataModel(); + endInsertRows(); + + // Emit dataChanged(); + bool validIndex = hasIndex ( lastUpdateIndex, 0 ); + + if (validIndex) + { + dataChanged(index(0,0), index(lastUpdateIndex,0)); + } + } + + emit modelCompleted(err); +} + +/*! + Returns the number of rows under the given parent. + + From QAbstractItemModel +*/ +int NmContactHistoryModel::rowCount(const QModelIndex &parent) const +{ + return d_ptr->rowCount(parent); +} + +/*! + Returns the data stored under the given role for the item referred + to by the index. + + From QAbstractItemModel +*/ +QVariant NmContactHistoryModel::data(const QModelIndex &index, int role) const +{ + return d_ptr->data(index, role); +} + +// -------------------------------------------------------------------------- +// End of implementation (NmContactHistoryModel) +// -------------------------------------------------------------------------- +