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_*/ |