diff -r 011f79704660 -r cdd802add233 emailuis/nmailuiengine/inc/nmmessagelistmodel.h --- a/emailuis/nmailuiengine/inc/nmmessagelistmodel.h Fri Jun 11 16:23:29 2010 +0100 +++ b/emailuis/nmailuiengine/inc/nmmessagelistmodel.h Thu Jul 22 16:30:28 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 - 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" @@ -20,10 +20,9 @@ #include +#include "nmcommon.h" +#include "nmmessagelistmodelitem.h" #include "nmuienginedef.h" -#include "nmcommon.h" - -#include "nmmessagelistmodelitem.h" #include "nmuiviewids.h" class NmMessage; @@ -31,73 +30,105 @@ class QModelIndex; class NmMessageEnvelope; + class NMUIENGINE_EXPORT NmMessageListModel : public QStandardItemModel { Q_OBJECT + public: - NmMessageListModel( - NmDataManager &dataManager, - QObject *parent = 0); + + NmMessageListModel(NmDataManager &dataManager, + QObject *parent = 0); + virtual ~NmMessageListModel(); + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - void refresh( - const NmId mailboxId, - const NmId folderId, - const QList &messageEnvelopeList); + + void refresh(const NmId mailboxId, + const NmId folderId, + const QList &messageEnvelopeList); + bool dividersActive(); - // This function is temporary, to be removed when - // divider state can be modified with settings + + // This function is temporary, to be removed when divider state can be + // modified with settings. void setDividers(bool active); - void setEnvelopeProperties( - NmEnvelopeProperties property, - const QList &messageIds); + + void setEnvelopeProperties(NmEnvelopeProperties property, + const QList &messageIds); + NmId currentMailboxId(); + + void setIgnoreFolderIds(bool ignore); + + public slots: - void handleMessageEvent( - NmMessageEvent event, - const NmId &folderId, - const QList &messageIds); + + void handleMessageEvent(NmMessageEvent event, + const NmId &folderId, + const QList &messageIds, + const NmId &mailboxId); + private: + bool messagesBelongUnderSameDivider( const NmMessageEnvelope *message1, const NmMessageEnvelope *message2) const; + void insertDividerIntoModel( NmMessageEnvelope *messageForDivider, int parentRow); + void insertMessageIntoModel( NmMessageEnvelope *messageEnvelope, int childRow, bool emitSignal); + void insertNewMessageIntoModel( const NmId &mailboxId, const NmId &folderId, const NmId &msgId); - int getInsertionIndex( - const NmMessageEnvelope &envelope) const; + + int getInsertionIndex(const NmMessageEnvelope &envelope) const; + int dividerInsertionIndex(int messageIndex); + NmMessageListModelItem *createTitleDividerItem(NmMessageEnvelope *messageForDivider); + NmMessageListModelItem *createMessageItem(NmMessageEnvelope *message); + void removeMessageFromModel(const NmId &msgId); + void removeItem(int row, NmMessageListModelItem &item); + NmMessageListModelItem *itemFromModel(const NmId &messageId); - bool changed(const NmMessageEnvelope &first, const NmMessageEnvelope &second); + + bool changed(const NmMessageEnvelope &first, + const NmMessageEnvelope &second); + void updateMessageEnvelope(const NmId &mailboxId, - const NmId &folderId, - const NmId &msgId); + const NmId &folderId, + const NmId &msgId); + void updateEnvelope(NmEnvelopeProperties property, const NmId &msgId); + signals: + void setNewParam(NmUiStartParam *startParam); - -private: - NmDataManager &mDataManager; // not owned + + +private: // Data + + NmDataManager &mDataManager; bool mDividersActive; - NmMessageListModelItem *mParentPtr; // not owned + NmMessageListModelItem *mParentPtr; // Not owned NmId mCurrentMailboxId; NmId mCurrentFolderId; - + NmFolderType mCurrentFolderType; + bool mIgnoreFolderIds; }; #endif /* NMMESSAGELISTMODEL_H_*/