emailuis/nmailuiengine/inc/nmmessagelistmodel.h
changeset 40 2c62ef3caffd
parent 23 2dc6caa42ec3
child 30 759dc5235cdb
equal deleted inserted replaced
39:b0b89ca206b5 40:2c62ef3caffd
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    18 #ifndef NMMESSAGELISTMODEL_H_
    18 #ifndef NMMESSAGELISTMODEL_H_
    19 #define NMMESSAGELISTMODEL_H_
    19 #define NMMESSAGELISTMODEL_H_
    20 
    20 
    21 #include <QStandardItemModel>
    21 #include <QStandardItemModel>
    22 
    22 
       
    23 #include "nmcommon.h"
       
    24 #include "nmmessagelistmodelitem.h"
    23 #include "nmuienginedef.h"
    25 #include "nmuienginedef.h"
    24 #include "nmcommon.h"
       
    25 
       
    26 #include "nmmessagelistmodelitem.h"
       
    27 #include "nmuiviewids.h"
    26 #include "nmuiviewids.h"
    28 
    27 
    29 class NmMessage;
    28 class NmMessage;
    30 class NmDataManager;
    29 class NmDataManager;
    31 class QModelIndex;
    30 class QModelIndex;
    32 class NmMessageEnvelope;
    31 class NmMessageEnvelope;
    33 
    32 
       
    33 
    34 class NMUIENGINE_EXPORT NmMessageListModel : public QStandardItemModel
    34 class NMUIENGINE_EXPORT NmMessageListModel : public QStandardItemModel
    35 {
    35 {
    36     Q_OBJECT
    36     Q_OBJECT
       
    37 
    37 public:
    38 public:
    38     NmMessageListModel(
    39 
    39       NmDataManager &dataManager,
    40     NmMessageListModel(NmDataManager &dataManager,
    40       QObject *parent = 0);
    41                        QObject *parent = 0);
       
    42 
    41     virtual ~NmMessageListModel();
    43     virtual ~NmMessageListModel();
       
    44 
    42     QVariant data(const QModelIndex &index,
    45     QVariant data(const QModelIndex &index,
    43                   int role = Qt::DisplayRole) const;
    46                   int role = Qt::DisplayRole) const;
    44     void refresh(
    47 
    45         const NmId mailboxId,
    48     void refresh(const NmId mailboxId,
    46         const NmId folderId,
    49                  const NmId folderId,
    47         const QList<NmMessageEnvelope*> &messageEnvelopeList);
    50                  const QList<NmMessageEnvelope*> &messageEnvelopeList);
       
    51 
    48     bool dividersActive();
    52     bool dividersActive();
    49     // This function is temporary, to be removed when
    53 
    50     // divider state can be modified with settings
    54     // This function is temporary, to be removed when divider state can be
       
    55     // modified with settings.
    51     void setDividers(bool active);
    56     void setDividers(bool active);
    52     void setEnvelopeProperties(
    57 
    53         NmEnvelopeProperties property,
    58     void setEnvelopeProperties(NmEnvelopeProperties property,
    54         const QList<NmId> &messageIds);
    59                                const QList<NmId> &messageIds);
       
    60 
    55     NmId currentMailboxId();
    61     NmId currentMailboxId();
       
    62 
       
    63     void setIgnoreFolderIds(bool ignore);
       
    64 
       
    65 
    56 public slots:
    66 public slots:
    57     void handleMessageEvent(
    67 
    58         NmMessageEvent event,
    68     void handleMessageEvent(NmMessageEvent event,
    59         const NmId &folderId,
    69                             const NmId &folderId,
    60         const QList<NmId> &messageIds);
    70                             const QList<NmId> &messageIds);
       
    71 
    61 
    72 
    62 private:
    73 private:
       
    74 
    63     bool messagesBelongUnderSameDivider(
    75     bool messagesBelongUnderSameDivider(
    64         const NmMessageEnvelope *message1,
    76         const NmMessageEnvelope *message1,
    65         const NmMessageEnvelope *message2) const;
    77         const NmMessageEnvelope *message2) const;
       
    78 
    66     void insertDividerIntoModel(
    79     void insertDividerIntoModel(
    67         NmMessageEnvelope *messageForDivider,
    80         NmMessageEnvelope *messageForDivider,
    68         int parentRow);
    81         int parentRow);
       
    82 
    69     void insertMessageIntoModel(
    83     void insertMessageIntoModel(
    70         NmMessageEnvelope *messageEnvelope,
    84         NmMessageEnvelope *messageEnvelope,
    71         int childRow,
    85         int childRow,
    72         bool emitSignal);
    86         bool emitSignal);
       
    87 
    73     void insertNewMessageIntoModel(
    88     void insertNewMessageIntoModel(
    74         const NmId &mailboxId,
    89         const NmId &mailboxId,
    75         const NmId &folderId,
    90         const NmId &folderId,
    76         const NmId &msgId);
    91         const NmId &msgId);
    77     int getInsertionIndex(
    92 
    78         const NmMessageEnvelope &envelope) const;
    93     int getInsertionIndex(const NmMessageEnvelope &envelope) const;
       
    94 
    79     int dividerInsertionIndex(int messageIndex);
    95     int dividerInsertionIndex(int messageIndex);
       
    96 
    80     NmMessageListModelItem *createTitleDividerItem(NmMessageEnvelope *messageForDivider);
    97     NmMessageListModelItem *createTitleDividerItem(NmMessageEnvelope *messageForDivider);
       
    98 
    81     NmMessageListModelItem *createMessageItem(NmMessageEnvelope *message);
    99     NmMessageListModelItem *createMessageItem(NmMessageEnvelope *message);
       
   100 
    82     void removeMessageFromModel(const NmId &msgId);
   101     void removeMessageFromModel(const NmId &msgId);
       
   102 
    83     void removeItem(int row, NmMessageListModelItem &item);
   103     void removeItem(int row, NmMessageListModelItem &item);
       
   104 
    84     NmMessageListModelItem *itemFromModel(const NmId &messageId);
   105     NmMessageListModelItem *itemFromModel(const NmId &messageId);
    85     bool changed(const NmMessageEnvelope &first, const NmMessageEnvelope &second);
   106 
       
   107     bool changed(const NmMessageEnvelope &first,
       
   108                  const NmMessageEnvelope &second);
       
   109 
    86     void updateMessageEnvelope(const NmId &mailboxId,
   110     void updateMessageEnvelope(const NmId &mailboxId,
    87             const NmId &folderId,
   111                                const NmId &folderId,
    88             const NmId &msgId);
   112                                const NmId &msgId);
       
   113 
    89     void updateEnvelope(NmEnvelopeProperties property, const NmId &msgId);
   114     void updateEnvelope(NmEnvelopeProperties property, const NmId &msgId);
    90 
   115 
       
   116 
    91 signals:
   117 signals:
       
   118 
    92     void setNewParam(NmUiStartParam *startParam);
   119     void setNewParam(NmUiStartParam *startParam);
    93     
   120 
    94 private:
   121 
    95     NmDataManager &mDataManager;         // not owned
   122 private: // Data
       
   123 
       
   124     NmDataManager &mDataManager;
    96     bool mDividersActive;
   125     bool mDividersActive;
    97     NmMessageListModelItem *mParentPtr;  // not owned
   126     NmMessageListModelItem *mParentPtr; // Not owned
    98     NmId mCurrentMailboxId;
   127     NmId mCurrentMailboxId;
    99     NmId mCurrentFolderId;
   128     NmId mCurrentFolderId;
   100 
   129     NmFolderType mCurrentFolderType;
       
   130     bool mIgnoreFolderIds;
   101 };
   131 };
   102 
   132 
   103 #endif /* NMMESSAGELISTMODEL_H_*/
   133 #endif /* NMMESSAGELISTMODEL_H_*/