36 #include "debugtraces.h" |
37 #include "debugtraces.h" |
37 |
38 |
38 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone") |
39 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone") |
39 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed") |
40 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed") |
40 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message") |
41 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message") |
41 #define LOC_MSG_RESEND_AT hbTrId("Resend at ") |
42 #define LOC_MSG_RESEND_AT hbTrId("txt_messaging_list_listview_resend_at_time") |
42 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card") |
43 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card") |
43 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event") |
44 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event") |
44 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type") |
45 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type") |
45 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files") |
46 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files") |
46 |
47 |
59 mNewMsgIndicatorItem(NULL), |
60 mNewMsgIndicatorItem(NULL), |
60 mAddressLabelItem(NULL), |
61 mAddressLabelItem(NULL), |
61 mTimestampItem(NULL), |
62 mTimestampItem(NULL), |
62 mPreviewLabelItem(NULL), |
63 mPreviewLabelItem(NULL), |
63 mUnreadCountItem(NULL), |
64 mUnreadCountItem(NULL), |
64 mPresenceIndicatorItem(NULL) |
65 mMsgCommonIndicatorItem(NULL) |
65 { |
66 { |
66 } |
67 } |
67 |
68 |
68 //--------------------------------------------------------------- |
69 //--------------------------------------------------------------- |
69 // HbAbstractViewItem::createItem |
70 // HbAbstractViewItem::createItem |
97 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
98 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
98 contactName.append(displayName); |
99 contactName.append(displayName); |
99 } |
100 } |
100 mAddressLabelItem->setText(contactName); |
101 mAddressLabelItem->setText(contactName); |
101 |
102 |
102 // Unread message count |
|
103 int unreadCount = modelIndex().data(UnreadCount).toInt(); |
|
104 |
|
105 if (unreadCount > 0) |
|
106 { |
|
107 QString unRead(tr("(%n)", "", unreadCount)); |
|
108 mUnreadCountItem->setText(unRead); |
|
109 if(!mUnReadMsg) |
|
110 { |
|
111 mUnReadMsg = true; |
|
112 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME); |
|
113 repolish(); |
|
114 // Needed for colour group changes to be visible |
|
115 QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged)); |
|
116 } |
|
117 } |
|
118 else |
|
119 { |
|
120 mUnreadCountItem->setText(QString()); |
|
121 if(mUnReadMsg) |
|
122 { |
|
123 mUnReadMsg = false; |
|
124 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString()); |
|
125 repolish(); |
|
126 // Needed for colour group changes to be visible |
|
127 QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged)); |
|
128 } |
|
129 } |
|
130 |
|
131 HbListViewItem::updateChildItems(); |
103 HbListViewItem::updateChildItems(); |
132 } |
104 } |
133 |
105 |
134 //--------------------------------------------------------------- |
106 //--------------------------------------------------------------- |
135 // MsgListViewItem::initItems |
107 // MsgListViewItem::initItems |
149 mPreviewLabelItem = new HbTextItem(this); |
121 mPreviewLabelItem = new HbTextItem(this); |
150 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
122 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
151 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
123 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
152 } |
124 } |
153 if (!mUnreadCountItem) { |
125 if (!mUnreadCountItem) { |
154 mUnreadCountItem = new HbTextItem(this); |
126 mUnreadCountItem = new HbTextItem(this); |
155 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
127 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
156 } |
128 } |
157 if (!mNewMsgIndicatorItem) { |
129 if (!mNewMsgIndicatorItem) { |
158 mNewMsgIndicatorItem = new HbFrameItem(this); |
130 mNewMsgIndicatorItem = new HbFrameItem(this); |
159 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
131 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
160 |
132 |
161 mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
133 mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
162 } |
134 } |
163 if (!mPresenceIndicatorItem) { |
135 if (!mMsgCommonIndicatorItem) { |
164 mPresenceIndicatorItem = new HbIconItem(this); |
136 mMsgCommonIndicatorItem = new HbIconItem(this); |
165 HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator"); |
137 HbStyle::setItemName(mMsgCommonIndicatorItem, "msgCommonIndicator"); |
166 } |
138 } |
167 } |
139 mUnreadCountItem->hide(); |
|
140 mMsgCommonIndicatorItem->hide(); |
|
141 |
|
142 HbMainWindow *mainWindow = hbInstance->allMainWindows()[0]; |
|
143 |
|
144 connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, |
|
145 SLOT(orientationchanged(Qt::Orientation)), Qt::UniqueConnection); |
|
146 } |
|
147 |
168 //--------------------------------------------------------------- |
148 //--------------------------------------------------------------- |
169 // MsgListViewItem::defaultPreviewText |
149 // MsgListViewItem::defaultPreviewText |
170 // @see header |
150 // @see header |
171 //--------------------------------------------------------------- |
151 //--------------------------------------------------------------- |
172 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType) |
152 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType) |
191 previewText = bodyText; |
171 previewText = bodyText; |
192 } |
172 } |
193 else { |
173 else { |
194 previewText = LOC_UNSUPPORTED_MSG_TYPE; |
174 previewText = LOC_UNSUPPORTED_MSG_TYPE; |
195 } |
175 } |
196 |
|
197 mPresenceIndicatorItem->setVisible(false); |
|
198 } |
176 } |
199 else if (msgType == ConvergedMessage::BT) { |
177 else if (msgType == ConvergedMessage::BT) { |
200 |
178 |
201 if (msgSubType == ConvergedMessage::VCard) { |
179 if (msgSubType == ConvergedMessage::VCard) { |
202 previewText = LOC_BUSINESS_CARD; |
180 previewText = LOC_BUSINESS_CARD; |
204 previewText.append(bodyText); |
182 previewText.append(bodyText); |
205 } |
183 } |
206 else { |
184 else { |
207 previewText = bodyText; |
185 previewText = bodyText; |
208 } |
186 } |
209 |
187 |
210 mPresenceIndicatorItem->setIconName(BT_ICON); |
188 setCommonIndicator(BT_ICON); |
211 mPresenceIndicatorItem->setVisible(true); |
|
212 } |
189 } |
213 else { |
190 else { |
214 // All message types except BIO & BT. |
191 // All message types except BIO & BT. |
215 previewText = modelIndex().data(BodyText).toString(); |
192 previewText = modelIndex().data(BodyText).toString(); |
216 mPresenceIndicatorItem->setVisible(false); |
|
217 } |
193 } |
218 return previewText; |
194 return previewText; |
219 } |
195 } |
220 |
196 |
221 |
197 |
241 int msgSubType = modelIndex().data(MessageSubType).toInt(); |
217 int msgSubType = modelIndex().data(MessageSubType).toInt(); |
242 int sendState = modelIndex().data(SendingState).toInt(); |
218 int sendState = modelIndex().data(SendingState).toInt(); |
243 int msgDirection = modelIndex().data(Direction).toInt(); |
219 int msgDirection = modelIndex().data(Direction).toInt(); |
244 QString previewText; |
220 QString previewText; |
245 if (ConvergedMessage::Incoming == msgDirection) { |
221 if (ConvergedMessage::Incoming == msgDirection) { |
246 previewText = defaultPreviewText(msgType, msgSubType); |
222 if( ConvergedMessage::BT != msgType) |
|
223 { |
|
224 setUnreadCountStatus(); |
|
225 } |
|
226 previewText = defaultPreviewText(msgType, msgSubType); |
247 } |
227 } |
248 else if (msgDirection == ConvergedMessage::Outgoing) { |
228 else if (msgDirection == ConvergedMessage::Outgoing) { |
249 |
229 |
|
230 setUnreadCountStatus(); |
|
231 |
250 switch (sendState) { |
232 switch (sendState) { |
251 case ConvergedMessage::Resend: |
233 case ConvergedMessage::Resend: |
252 { |
234 { |
253 previewText = LOC_MSG_RESEND_AT + dateString; |
235 previewText = LOC_MSG_RESEND_AT + dateString; |
254 dateString = QString(); |
236 dateString = QString(); |
255 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
237 setCommonIndicator(MSG_OUTGOING_ICON); |
256 mPresenceIndicatorItem->setVisible(true); |
|
257 break; |
238 break; |
258 } |
239 } |
259 case ConvergedMessage::Sending: |
240 case ConvergedMessage::Sending: |
260 case ConvergedMessage::Suspended: |
241 case ConvergedMessage::Suspended: |
261 case ConvergedMessage::Scheduled: |
242 case ConvergedMessage::Scheduled: |
262 case ConvergedMessage::Waiting: |
243 case ConvergedMessage::Waiting: |
263 { |
244 { |
264 previewText = QString(LOC_MSG_OUTGOING); |
245 previewText = QString(LOC_MSG_OUTGOING); |
265 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
246 setCommonIndicator(MSG_OUTGOING_ICON); |
266 mPresenceIndicatorItem->setVisible(true); |
|
267 break; |
247 break; |
268 } |
248 } |
269 case ConvergedMessage::Failed: |
249 case ConvergedMessage::Failed: |
270 { |
250 { |
271 previewText = QString(LOC_MSG_SEND_FAILED); |
251 previewText = QString(LOC_MSG_SEND_FAILED); |
272 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON); |
252 setCommonIndicator(MSG_FAILED_ICON); |
273 mPresenceIndicatorItem->setVisible(true); |
|
274 break; |
253 break; |
275 } |
254 } |
276 default: |
255 default: |
277 { |
256 { |
278 // Successful case |
257 // Successful case |
|
258 if( ConvergedMessage::BT != msgType) |
|
259 { |
|
260 setUnreadCountStatus(); |
|
261 } |
|
262 |
279 previewText = defaultPreviewText(msgType, msgSubType); |
263 previewText = defaultPreviewText(msgType, msgSubType); |
280 break; |
264 break; |
281 } |
265 } |
282 } |
266 } |
283 } |
267 } |
315 bool MsgListViewItem::hasUnReadMsg() |
299 bool MsgListViewItem::hasUnReadMsg() |
316 { |
300 { |
317 return mUnReadMsg; |
301 return mUnReadMsg; |
318 } |
302 } |
319 |
303 |
|
304 //--------------------------------------------------------------- |
|
305 // MsgListViewItem::setUnreadCountStatus |
|
306 // @see header file |
|
307 //--------------------------------------------------------------- |
|
308 void MsgListViewItem::setUnreadCountStatus() |
|
309 { |
|
310 // Unread message count |
|
311 int unreadCount = modelIndex().data(UnreadCount).toInt(); |
|
312 |
|
313 if (unreadCount > 0) |
|
314 { |
|
315 QString unRead(tr("(%n)", "", unreadCount)); |
|
316 |
|
317 mMsgCommonIndicatorItem->hide(); |
|
318 mUnreadCountItem->setText(unRead); |
|
319 mUnreadCountItem->show(); |
|
320 |
|
321 if (!mUnReadMsg) |
|
322 { |
|
323 mUnReadMsg = true; |
|
324 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName( |
|
325 NEW_ITEM_FRAME); |
|
326 repolish(); |
|
327 // Needed for colour group changes to be visible |
|
328 QCoreApplication::postEvent(this, new HbEvent( |
|
329 HbEvent::ThemeChanged)); |
|
330 } |
|
331 } |
|
332 else |
|
333 { |
|
334 if (mUnReadMsg) |
|
335 { |
|
336 mUnReadMsg = false; |
|
337 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName( |
|
338 QString()); |
|
339 repolish(); |
|
340 // Needed for colour group changes to be visible |
|
341 QCoreApplication::postEvent(this, new HbEvent( |
|
342 HbEvent::ThemeChanged)); |
|
343 } |
|
344 } |
|
345 } |
|
346 |
|
347 //--------------------------------------------------------------- |
|
348 // MsgListViewItem::setCommonIndicator |
|
349 // @see header file |
|
350 //--------------------------------------------------------------- |
|
351 void MsgListViewItem::setCommonIndicator(const QString& string) |
|
352 { |
|
353 mUnreadCountItem->hide(); |
|
354 mMsgCommonIndicatorItem->setIconName(string); |
|
355 mMsgCommonIndicatorItem->show(); |
|
356 } |
|
357 |
|
358 //--------------------------------------------------------------- |
|
359 // MsgListViewItem::orientationchanged |
|
360 // @see header file |
|
361 //--------------------------------------------------------------- |
|
362 void MsgListViewItem::orientationchanged(Qt::Orientation orientation) |
|
363 { |
|
364 Q_UNUSED(orientation) |
|
365 repolish(); |
|
366 } |
|
367 |
320 //EOF |
368 //EOF |