diff -r 64e38f08e49c -r 47d84de1c893 emailuis/nmhswidget/src/nmhswidgetlistmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/nmhswidget/src/nmhswidgetlistmodel.cpp Mon Oct 04 00:05:37 2010 +0300 @@ -0,0 +1,99 @@ +/* +* 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: +* +*/ + +#include +#include +#include "nmhswidgetlistmodel.h" +#include "nmhswidgetlistmodelitem.h" + +/*! + \class NmHsWidgetListModel + \brief The NmHsWidgetListModel class represents data model for message list. + @alpha + + The NmHsWidgetListModel class uses NmHsWidgetListModelItem class to represent data returned in its' + data method to get all information needed for one list row for a widget by calling the method + once. +*/ + +/*! + Constructor + */ +NmHsWidgetListModel::NmHsWidgetListModel(QObject *parent) +:QStandardItemModel(parent) +{ + NM_FUNCTION; +} + +/*! + Destructor + */ +NmHsWidgetListModel::~NmHsWidgetListModel() +{ + NM_FUNCTION; + + clear(); +} + +/*! + Returns data specified by \a index. Only Qt::DisplayRole is supported in \a role. + The refresh method must have been called before this method can return any real data. + */ +QVariant NmHsWidgetListModel::data(const QModelIndex &index, int role) const +{ + NM_FUNCTION; + + QVariant qVariant; + if (index.isValid() && Qt::DisplayRole == role) { + NmHsWidgetListModelItem *item = static_cast(itemFromIndex(index)); + NmMessageEnvelope *mailbox = item->itemMetaData(); + qVariant = QVariant::fromValue(mailbox); + } + return qVariant; +} + +/*! + This refreshes the data of the model. + NOTE: safe guard any call to this function with try-catch. + */ +void NmHsWidgetListModel::refresh( + QList &envelopeList) +{ + NM_FUNCTION; + + clear(); + foreach(NmMessageEnvelope *env, envelopeList){ + NmHsWidgetListModelItem *item = createMessageListModelItem(env); + appendRow(item); + } +} + + +/*! + Create mailbox item + \param mailbox + */ +NmHsWidgetListModelItem* NmHsWidgetListModel::createMessageListModelItem(const NmMessageEnvelope* envelope) +{ + NM_FUNCTION; + + NmMessageEnvelope *newMeta = new NmMessageEnvelope(*envelope); + NmHsWidgetListModelItem *item = new NmHsWidgetListModelItem(); + item->setItemMetaData(newMeta); + item->setData(Hb::StandardItem, Hb::ItemTypeRole); + return item; +}