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 const NmId &mailboxId); |
|
72 |
61 |
73 |
62 private: |
74 private: |
|
75 |
63 bool messagesBelongUnderSameDivider( |
76 bool messagesBelongUnderSameDivider( |
64 const NmMessageEnvelope *message1, |
77 const NmMessageEnvelope *message1, |
65 const NmMessageEnvelope *message2) const; |
78 const NmMessageEnvelope *message2) const; |
|
79 |
66 void insertDividerIntoModel( |
80 void insertDividerIntoModel( |
67 NmMessageEnvelope *messageForDivider, |
81 NmMessageEnvelope *messageForDivider, |
68 int parentRow); |
82 int parentRow); |
|
83 |
69 void insertMessageIntoModel( |
84 void insertMessageIntoModel( |
70 NmMessageEnvelope *messageEnvelope, |
85 NmMessageEnvelope *messageEnvelope, |
71 int childRow, |
86 int childRow, |
72 bool emitSignal); |
87 bool emitSignal); |
|
88 |
73 void insertNewMessageIntoModel( |
89 void insertNewMessageIntoModel( |
74 const NmId &mailboxId, |
90 const NmId &mailboxId, |
75 const NmId &folderId, |
91 const NmId &folderId, |
76 const NmId &msgId); |
92 const NmId &msgId); |
77 int getInsertionIndex( |
93 |
78 const NmMessageEnvelope &envelope) const; |
94 int getInsertionIndex(const NmMessageEnvelope &envelope) const; |
|
95 |
79 int dividerInsertionIndex(int messageIndex); |
96 int dividerInsertionIndex(int messageIndex); |
|
97 |
80 NmMessageListModelItem *createTitleDividerItem(NmMessageEnvelope *messageForDivider); |
98 NmMessageListModelItem *createTitleDividerItem(NmMessageEnvelope *messageForDivider); |
|
99 |
81 NmMessageListModelItem *createMessageItem(NmMessageEnvelope *message); |
100 NmMessageListModelItem *createMessageItem(NmMessageEnvelope *message); |
|
101 |
82 void removeMessageFromModel(const NmId &msgId); |
102 void removeMessageFromModel(const NmId &msgId); |
|
103 |
83 void removeItem(int row, NmMessageListModelItem &item); |
104 void removeItem(int row, NmMessageListModelItem &item); |
|
105 |
84 NmMessageListModelItem *itemFromModel(const NmId &messageId); |
106 NmMessageListModelItem *itemFromModel(const NmId &messageId); |
85 bool changed(const NmMessageEnvelope &first, const NmMessageEnvelope &second); |
107 |
|
108 bool changed(const NmMessageEnvelope &first, |
|
109 const NmMessageEnvelope &second); |
|
110 |
86 void updateMessageEnvelope(const NmId &mailboxId, |
111 void updateMessageEnvelope(const NmId &mailboxId, |
87 const NmId &folderId, |
112 const NmId &folderId, |
88 const NmId &msgId); |
113 const NmId &msgId); |
|
114 |
89 void updateEnvelope(NmEnvelopeProperties property, const NmId &msgId); |
115 void updateEnvelope(NmEnvelopeProperties property, const NmId &msgId); |
90 |
116 |
|
117 |
91 signals: |
118 signals: |
|
119 |
92 void setNewParam(NmUiStartParam *startParam); |
120 void setNewParam(NmUiStartParam *startParam); |
93 |
121 |
94 private: |
122 |
95 NmDataManager &mDataManager; // not owned |
123 private: // Data |
|
124 |
|
125 NmDataManager &mDataManager; |
96 bool mDividersActive; |
126 bool mDividersActive; |
97 NmMessageListModelItem *mParentPtr; // not owned |
127 NmMessageListModelItem *mParentPtr; // Not owned |
98 NmId mCurrentMailboxId; |
128 NmId mCurrentMailboxId; |
99 NmId mCurrentFolderId; |
129 NmId mCurrentFolderId; |
100 |
130 NmFolderType mCurrentFolderType; |
|
131 bool mIgnoreFolderIds; |
101 }; |
132 }; |
102 |
133 |
103 #endif /* NMMESSAGELISTMODEL_H_*/ |
134 #endif /* NMMESSAGELISTMODEL_H_*/ |