36 #include "debugtraces.h" |
39 #include "debugtraces.h" |
37 |
40 |
38 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone") |
41 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone") |
39 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed") |
42 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed") |
40 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message") |
43 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message") |
41 #define LOC_MSG_RESEND_AT hbTrId("Resend at ") |
44 #define LOC_MSG_RESEND_AT hbTrId("txt_messaging_list_listview_resend_at_time") |
42 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card") |
45 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card") |
43 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event") |
46 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event") |
44 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type") |
47 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type") |
45 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files") |
48 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files") |
|
49 #define LOC_MULTIMEDIA_MSG hbTrId("txt_messaging_list_multimedia_message") |
46 |
50 |
47 const QString NEW_ITEM_FRAME("qtg_fr_list_new_item"); |
51 const QString NEW_ITEM_FRAME("qtg_fr_list_new_item"); |
48 const QString BT_ICON("qtg_large_bluetooth"); |
52 const QString BT_ICON("qtg_large_bluetooth"); |
49 const QString MSG_OUTGOING_ICON("qtg_mono_outbox"); |
53 const QString MSG_OUTGOING_ICON("qtg_mono_outbox"); |
50 const QString MSG_FAILED_ICON("qtg_mono_failed"); |
54 const QString MSG_FAILED_ICON("qtg_mono_failed"); |
|
55 |
|
56 // @see hbi18ndef.h |
|
57 static const char DATE_FORMAT[] = r_qtn_date_short_with_zero; |
|
58 static const char TIME_FORMAT[] = r_qtn_time_usual_with_zero; |
51 |
59 |
52 //--------------------------------------------------------------- |
60 //--------------------------------------------------------------- |
53 // MsgListViewItem::MsgListViewItem |
61 // MsgListViewItem::MsgListViewItem |
54 // Constructor |
62 // Constructor |
55 //--------------------------------------------------------------- |
63 //--------------------------------------------------------------- |
59 mNewMsgIndicatorItem(NULL), |
67 mNewMsgIndicatorItem(NULL), |
60 mAddressLabelItem(NULL), |
68 mAddressLabelItem(NULL), |
61 mTimestampItem(NULL), |
69 mTimestampItem(NULL), |
62 mPreviewLabelItem(NULL), |
70 mPreviewLabelItem(NULL), |
63 mUnreadCountItem(NULL), |
71 mUnreadCountItem(NULL), |
64 mPresenceIndicatorItem(NULL) |
72 mMsgCommonIndicatorItem(NULL) |
65 { |
73 { |
66 } |
74 } |
67 |
75 |
68 //--------------------------------------------------------------- |
76 //--------------------------------------------------------------- |
69 // HbAbstractViewItem::createItem |
77 // HbAbstractViewItem::createItem |
97 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
105 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
98 contactName.append(displayName); |
106 contactName.append(displayName); |
99 } |
107 } |
100 mAddressLabelItem->setText(contactName); |
108 mAddressLabelItem->setText(contactName); |
101 |
109 |
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(); |
110 HbListViewItem::updateChildItems(); |
132 } |
111 } |
133 |
112 |
134 //--------------------------------------------------------------- |
113 //--------------------------------------------------------------- |
135 // MsgListViewItem::initItems |
114 // MsgListViewItem::initItems |
149 mPreviewLabelItem = new HbTextItem(this); |
128 mPreviewLabelItem = new HbTextItem(this); |
150 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
129 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
151 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
130 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
152 } |
131 } |
153 if (!mUnreadCountItem) { |
132 if (!mUnreadCountItem) { |
154 mUnreadCountItem = new HbTextItem(this); |
133 mUnreadCountItem = new HbTextItem(this); |
155 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
134 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
156 } |
135 } |
157 if (!mNewMsgIndicatorItem) { |
136 if (!mNewMsgIndicatorItem) { |
158 mNewMsgIndicatorItem = new HbFrameItem(this); |
137 mNewMsgIndicatorItem = new HbFrameItem(this); |
159 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
138 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
160 |
139 |
161 mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
140 mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
162 } |
141 } |
163 if (!mPresenceIndicatorItem) { |
142 if (!mMsgCommonIndicatorItem) { |
164 mPresenceIndicatorItem = new HbIconItem(this); |
143 mMsgCommonIndicatorItem = new HbIconItem(this); |
165 HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator"); |
144 HbStyle::setItemName(mMsgCommonIndicatorItem, "msgCommonIndicator"); |
166 } |
145 } |
167 } |
146 mUnreadCountItem->hide(); |
|
147 mMsgCommonIndicatorItem->hide(); |
|
148 |
|
149 HbMainWindow *mainWindow = hbInstance->allMainWindows()[0]; |
|
150 |
|
151 connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, |
|
152 SLOT(orientationchanged(Qt::Orientation)), Qt::UniqueConnection); |
|
153 } |
|
154 |
168 //--------------------------------------------------------------- |
155 //--------------------------------------------------------------- |
169 // MsgListViewItem::defaultPreviewText |
156 // MsgListViewItem::defaultPreviewText |
170 // @see header |
157 // @see header |
171 //--------------------------------------------------------------- |
158 //--------------------------------------------------------------- |
172 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType) |
159 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType) |
226 void MsgListViewItem::setTimestampAndPreviewText() |
212 void MsgListViewItem::setTimestampAndPreviewText() |
227 { |
213 { |
228 // Get timestamp |
214 // Get timestamp |
229 QDateTime dateTime; |
215 QDateTime dateTime; |
230 dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt()); |
216 dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt()); |
231 QString dateString; |
217 |
|
218 HbExtendedLocale locale = HbExtendedLocale::system(); |
|
219 QString dateTimeString; |
232 if (dateTime.date() == QDateTime::currentDateTime().date()) { |
220 if (dateTime.date() == QDateTime::currentDateTime().date()) { |
233 dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT); |
221 dateTimeString = locale.format(dateTime.time(), TIME_FORMAT); |
234 } |
222 } |
235 else { |
223 else { |
236 dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT); |
224 dateTimeString = locale.format(dateTime.date(), DATE_FORMAT); |
237 } |
225 } |
238 |
226 |
239 // Set preview text & time based on direction |
227 // Set preview text & time based on direction |
240 int msgType = modelIndex().data(MessageType).toInt(); |
228 int msgType = modelIndex().data(MessageType).toInt(); |
241 int msgSubType = modelIndex().data(MessageSubType).toInt(); |
229 int msgSubType = modelIndex().data(MessageSubType).toInt(); |
242 int sendState = modelIndex().data(SendingState).toInt(); |
230 int sendState = modelIndex().data(SendingState).toInt(); |
243 int msgDirection = modelIndex().data(Direction).toInt(); |
231 int msgDirection = modelIndex().data(Direction).toInt(); |
244 QString previewText; |
232 QString previewText; |
245 if (ConvergedMessage::Incoming == msgDirection) { |
233 if (ConvergedMessage::Incoming == msgDirection) { |
246 previewText = defaultPreviewText(msgType, msgSubType); |
234 if( ConvergedMessage::BT != msgType) |
|
235 { |
|
236 setUnreadCountStatus(); |
|
237 } |
|
238 previewText = defaultPreviewText(msgType, msgSubType); |
247 } |
239 } |
248 else if (msgDirection == ConvergedMessage::Outgoing) { |
240 else if (msgDirection == ConvergedMessage::Outgoing) { |
249 |
241 |
|
242 setUnreadCountStatus(); |
|
243 |
250 switch (sendState) { |
244 switch (sendState) { |
251 case ConvergedMessage::Resend: |
245 case ConvergedMessage::Resend: |
252 { |
246 { |
253 previewText = LOC_MSG_RESEND_AT + dateString; |
247 previewText = LOC_MSG_RESEND_AT + dateTimeString; |
254 dateString = QString(); |
248 dateTimeString = QString(); |
255 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
249 setCommonIndicator(MSG_OUTGOING_ICON); |
256 mPresenceIndicatorItem->setVisible(true); |
|
257 break; |
250 break; |
258 } |
251 } |
259 case ConvergedMessage::Sending: |
252 case ConvergedMessage::Sending: |
260 case ConvergedMessage::Suspended: |
253 case ConvergedMessage::Suspended: |
261 case ConvergedMessage::Scheduled: |
254 case ConvergedMessage::Scheduled: |
262 case ConvergedMessage::Waiting: |
255 case ConvergedMessage::Waiting: |
263 { |
256 { |
264 previewText = QString(LOC_MSG_OUTGOING); |
257 previewText = QString(LOC_MSG_OUTGOING); |
265 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
258 setCommonIndicator(MSG_OUTGOING_ICON); |
266 mPresenceIndicatorItem->setVisible(true); |
|
267 break; |
259 break; |
268 } |
260 } |
269 case ConvergedMessage::Failed: |
261 case ConvergedMessage::Failed: |
270 { |
262 { |
271 previewText = QString(LOC_MSG_SEND_FAILED); |
263 previewText = QString(LOC_MSG_SEND_FAILED); |
272 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON); |
264 setCommonIndicator(MSG_FAILED_ICON); |
273 mPresenceIndicatorItem->setVisible(true); |
|
274 break; |
265 break; |
275 } |
266 } |
276 default: |
267 default: |
277 { |
268 { |
278 // Successful case |
269 // Successful case |
|
270 if( ConvergedMessage::BT != msgType) |
|
271 { |
|
272 setUnreadCountStatus(); |
|
273 } |
|
274 |
279 previewText = defaultPreviewText(msgType, msgSubType); |
275 previewText = defaultPreviewText(msgType, msgSubType); |
280 break; |
276 break; |
281 } |
277 } |
282 } |
278 } |
283 } |
279 } |
284 previewText.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
280 previewText.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
285 previewText.replace('\r', QChar::LineSeparator); |
281 previewText.replace('\r', QChar::LineSeparator); |
286 mPreviewLabelItem->setText(previewText); |
282 mPreviewLabelItem->setText(previewText); |
287 mTimestampItem->setText(dateString); |
283 mTimestampItem->setText(dateTimeString); |
288 } |
284 } |
289 |
285 |
290 //--------------------------------------------------------------- |
286 //--------------------------------------------------------------- |
291 // MsgListViewItem::paint. |
287 // MsgListViewItem::paint. |
292 // @see header |
288 // @see header |
315 bool MsgListViewItem::hasUnReadMsg() |
311 bool MsgListViewItem::hasUnReadMsg() |
316 { |
312 { |
317 return mUnReadMsg; |
313 return mUnReadMsg; |
318 } |
314 } |
319 |
315 |
|
316 //--------------------------------------------------------------- |
|
317 // MsgListViewItem::setUnreadCountStatus |
|
318 // @see header file |
|
319 //--------------------------------------------------------------- |
|
320 void MsgListViewItem::setUnreadCountStatus() |
|
321 { |
|
322 // Unread message count |
|
323 int unreadCount = modelIndex().data(UnreadCount).toInt(); |
|
324 |
|
325 if (unreadCount > 0) |
|
326 { |
|
327 QString unRead(tr("(%n)", "", unreadCount)); |
|
328 |
|
329 mMsgCommonIndicatorItem->hide(); |
|
330 mUnreadCountItem->setText(unRead); |
|
331 mUnreadCountItem->show(); |
|
332 |
|
333 if (!mUnReadMsg) |
|
334 { |
|
335 mUnReadMsg = true; |
|
336 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName( |
|
337 NEW_ITEM_FRAME); |
|
338 repolish(); |
|
339 // Needed for colour group changes to be visible |
|
340 QCoreApplication::postEvent(this, new HbEvent( |
|
341 HbEvent::ThemeChanged)); |
|
342 } |
|
343 } |
|
344 else |
|
345 { |
|
346 if (mUnReadMsg) |
|
347 { |
|
348 mUnReadMsg = false; |
|
349 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName( |
|
350 QString()); |
|
351 repolish(); |
|
352 // Needed for colour group changes to be visible |
|
353 QCoreApplication::postEvent(this, new HbEvent( |
|
354 HbEvent::ThemeChanged)); |
|
355 } |
|
356 } |
|
357 } |
|
358 |
|
359 //--------------------------------------------------------------- |
|
360 // MsgListViewItem::setCommonIndicator |
|
361 // @see header file |
|
362 //--------------------------------------------------------------- |
|
363 void MsgListViewItem::setCommonIndicator(const QString& string) |
|
364 { |
|
365 mUnreadCountItem->hide(); |
|
366 mMsgCommonIndicatorItem->setIconName(string); |
|
367 mMsgCommonIndicatorItem->show(); |
|
368 } |
|
369 |
|
370 //--------------------------------------------------------------- |
|
371 // MsgListViewItem::orientationchanged |
|
372 // @see header file |
|
373 //--------------------------------------------------------------- |
|
374 void MsgListViewItem::orientationchanged(Qt::Orientation orientation) |
|
375 { |
|
376 Q_UNUSED(orientation) |
|
377 repolish(); |
|
378 } |
|
379 |
320 //EOF |
380 //EOF |