76 // MsgListViewItem::updateChildItems |
78 // MsgListViewItem::updateChildItems |
77 // @see header |
79 // @see header |
78 //--------------------------------------------------------------- |
80 //--------------------------------------------------------------- |
79 void MsgListViewItem::updateChildItems() |
81 void MsgListViewItem::updateChildItems() |
80 { |
82 { |
81 if (!mAddressLabelItem) |
83 initItems(); |
82 { |
84 |
83 mAddressLabelItem = new HbTextItem(this); |
85 setTimestampAndPreviewText(); |
84 HbStyle::setItemName(mAddressLabelItem, "addressLabel"); |
|
85 } |
|
86 if (!mTimestampItem) |
|
87 { |
|
88 mTimestampItem = new HbTextItem(this); |
|
89 HbStyle::setItemName(mTimestampItem, "timeLabel"); |
|
90 } |
|
91 if (!mPreviewLabelItem) |
|
92 { |
|
93 mPreviewLabelItem = new HbTextItem(this); |
|
94 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
|
95 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
|
96 } |
|
97 if (!mUnreadCountItem) |
|
98 { |
|
99 mUnreadCountItem = new HbTextItem(this); |
|
100 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
|
101 } |
|
102 if (!mNewMsgIndicatorItem) |
|
103 { |
|
104 mNewMsgIndicatorItem = new HbFrameItem(this); |
|
105 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
|
106 |
|
107 mNewMsgIndicatorItem->frameDrawer().setFrameType( |
|
108 HbFrameDrawer::ThreePiecesVertical); |
|
109 } |
|
110 |
|
111 // Set the message text depending upon the message type |
|
112 int messageType = modelIndex().data(MessageType).toInt(); |
|
113 int messageSubType = modelIndex().data(MessageSubType).toInt(); |
|
114 int messageState = modelIndex().data(SendingState).toInt(); |
|
115 int messageDirection = modelIndex().data(Direction).toInt(); |
|
116 QString prevText; |
|
117 prevText = previewText(messageType, messageSubType, messageState,messageDirection); |
|
118 prevText.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
|
119 prevText.replace('\r', QChar::LineSeparator); |
|
120 mPreviewLabelItem->setText(prevText); |
|
121 |
86 |
122 // Address label |
87 // Address label |
123 QString contactName; |
88 QString contactName; |
|
89 int messageType = modelIndex().data(MessageType).toInt(); |
124 if(messageType == ConvergedMessage::BT) |
90 if(messageType == ConvergedMessage::BT) |
125 { |
91 { |
126 contactName = LOC_RECEIVED_FILES; |
92 contactName = LOC_RECEIVED_FILES; |
127 } |
93 } |
128 else |
94 else |
129 { |
95 { |
130 QString displayName = modelIndex().data(DisplayName).toString(); |
96 QString displayName = modelIndex().data(DisplayName).toString(); |
131 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
97 QString contactAddress = modelIndex().data(ConversationAddress).toString(); |
132 |
98 contactName.append(displayName); |
133 if (displayName.isEmpty()) |
|
134 { |
|
135 contactName.append(contactAddress); |
|
136 } |
|
137 else |
|
138 { |
|
139 contactName.append(displayName); |
|
140 } |
|
141 } |
99 } |
142 mAddressLabelItem->setText(contactName); |
100 mAddressLabelItem->setText(contactName); |
143 |
101 |
144 // Unread message count |
102 // Unread message count |
145 int unreadCount = modelIndex().data(UnreadCount).toInt(); |
103 int unreadCount = modelIndex().data(UnreadCount).toInt(); |
146 |
104 |
147 if (unreadCount > 0) |
105 if (unreadCount > 0) |
148 { |
106 { |
149 QString unRead(tr("(%n)", "", unreadCount)); |
107 QString unRead(tr("(%n)", "", unreadCount)); |
150 mUnreadCountItem->setText(unRead); |
108 mUnreadCountItem->setText(unRead); |
151 mUnReadMsg = true; |
109 if(!mUnReadMsg) |
152 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME); |
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 } |
153 } |
117 } |
154 else |
118 else |
155 { |
119 { |
156 mUnreadCountItem->setText(QString()); |
120 mUnreadCountItem->setText(QString()); |
157 mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString()); |
121 if(mUnReadMsg) |
158 mUnReadMsg = false; |
122 { |
159 repolish(); |
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 } |
160 } |
129 } |
161 |
130 |
162 HbListViewItem::updateChildItems(); |
131 HbListViewItem::updateChildItems(); |
163 } |
132 } |
164 |
133 |
165 //--------------------------------------------------------------- |
134 //--------------------------------------------------------------- |
166 // MsgListViewItem::previewText |
135 // MsgListViewItem::initItems |
167 // @see header |
136 // @see header |
168 //--------------------------------------------------------------- |
137 //--------------------------------------------------------------- |
169 QString MsgListViewItem::previewText(int msgType, |
138 void MsgListViewItem::initItems() |
170 int msgSubType, |
139 { |
171 int msgState, |
140 if (!mAddressLabelItem) { |
172 int msgDirection) |
141 mAddressLabelItem = new HbTextItem(this); |
|
142 HbStyle::setItemName(mAddressLabelItem, "addressLabel"); |
|
143 } |
|
144 if (!mTimestampItem) { |
|
145 mTimestampItem = new HbTextItem(this); |
|
146 HbStyle::setItemName(mTimestampItem, "timeLabel"); |
|
147 } |
|
148 if (!mPreviewLabelItem) { |
|
149 mPreviewLabelItem = new HbTextItem(this); |
|
150 mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap); |
|
151 HbStyle::setItemName(mPreviewLabelItem, "previewLabel"); |
|
152 } |
|
153 if (!mUnreadCountItem) { |
|
154 mUnreadCountItem = new HbTextItem(this); |
|
155 HbStyle::setItemName(mUnreadCountItem, "unreadCount"); |
|
156 } |
|
157 if (!mNewMsgIndicatorItem) { |
|
158 mNewMsgIndicatorItem = new HbFrameItem(this); |
|
159 HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator"); |
|
160 |
|
161 mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
|
162 } |
|
163 if (!mPresenceIndicatorItem) { |
|
164 mPresenceIndicatorItem = new HbIconItem(this); |
|
165 HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator"); |
|
166 } |
|
167 } |
|
168 //--------------------------------------------------------------- |
|
169 // MsgListViewItem::defaultPreviewText |
|
170 // @see header |
|
171 //--------------------------------------------------------------- |
|
172 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType) |
173 { |
173 { |
174 QString bodyText(modelIndex().data(BodyText).toString()); |
174 QString bodyText(modelIndex().data(BodyText).toString()); |
175 QString previewText; |
175 QString previewText; |
176 // Set the message text & icons, depending upon the message type |
176 // Set the message text & icons, depending upon the message type |
177 if (msgType == ConvergedMessage::BioMsg) { |
177 if (msgType == ConvergedMessage::BioMsg) { |
|
178 |
178 if (msgSubType == ConvergedMessage::RingingTone) { |
179 if (msgSubType == ConvergedMessage::RingingTone) { |
179 previewText = LOC_RINGING_TONE; |
180 previewText = LOC_RINGING_TONE; |
180 } |
181 } |
181 else if (msgSubType == ConvergedMessage::VCard) { |
182 else if (msgSubType == ConvergedMessage::VCard) { |
182 previewText = LOC_BUSINESS_CARD; |
183 previewText = LOC_BUSINESS_CARD; |
183 previewText.append(QChar::LineSeparator); |
184 previewText.append(QChar::LineSeparator); |
184 previewText.append(bodyText); |
185 previewText.append(bodyText); |
185 } |
186 } |
186 else if (msgSubType == ConvergedMessage::Provisioning) { |
187 else if (msgSubType == ConvergedMessage::Provisioning) { |
187 previewText = bodyText; |
188 previewText = bodyText; |
188 } |
189 } |
|
190 else if (msgSubType == ConvergedMessage::NokiaService) { |
|
191 previewText = bodyText; |
|
192 } |
189 else { |
193 else { |
190 previewText = LOC_UNSUPPORTED_MSG_TYPE; |
194 previewText = LOC_UNSUPPORTED_MSG_TYPE; |
191 } |
195 } |
|
196 |
|
197 mPresenceIndicatorItem->setVisible(false); |
192 } |
198 } |
193 else if (msgType == ConvergedMessage::BT) { |
199 else if (msgType == ConvergedMessage::BT) { |
194 |
200 |
195 if (msgSubType == ConvergedMessage::VCard) { |
201 if (msgSubType == ConvergedMessage::VCard) { |
196 previewText = LOC_BUSINESS_CARD; |
202 previewText = LOC_BUSINESS_CARD; |
197 previewText.append(QChar::LineSeparator); |
203 previewText.append(QChar::LineSeparator); |
198 previewText.append(bodyText); |
204 previewText.append(bodyText); |
199 } |
205 } |
200 else { |
206 else { |
201 previewText = bodyText; |
207 previewText = bodyText; |
202 } |
208 } |
203 if (!mPresenceIndicatorItem) { |
209 |
204 mPresenceIndicatorItem = new HbIconItem(this); |
210 mPresenceIndicatorItem->setIconName(BT_ICON); |
205 HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator"); |
211 mPresenceIndicatorItem->setVisible(true); |
206 mPresenceIndicatorItem->setIconName(BT_ICON); |
|
207 } |
|
208 } |
212 } |
209 else { |
213 else { |
210 previewText = textBySendState(msgState,msgDirection); |
214 // All message types except BIO & BT. |
|
215 previewText = modelIndex().data(BodyText).toString(); |
|
216 mPresenceIndicatorItem->setVisible(false); |
211 } |
217 } |
212 return previewText; |
218 return previewText; |
213 } |
219 } |
214 |
220 |
215 |
221 |
216 //--------------------------------------------------------------- |
222 //--------------------------------------------------------------- |
217 // MsgListViewItem::textBySendState |
223 // MsgListViewItem::setTimestampAndPreviewText |
218 // @see header |
224 // @see header |
219 //--------------------------------------------------------------- |
225 //--------------------------------------------------------------- |
220 QString MsgListViewItem::textBySendState(int sendState,int msgDirection) |
226 void MsgListViewItem::setTimestampAndPreviewText() |
221 { |
227 { |
222 QString previewText; |
228 // Get timestamp |
223 QDateTime dateTime; |
229 QDateTime dateTime; |
224 dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt()); |
230 dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt()); |
225 QString dateString; |
231 QString dateString; |
226 if (dateTime.date() == QDateTime::currentDateTime().date()) { |
232 if (dateTime.date() == QDateTime::currentDateTime().date()) { |
227 dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT); |
233 dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT); |
228 } |
234 } |
229 else { |
235 else { |
230 dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT); |
236 dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT); |
231 } |
237 } |
232 |
238 |
233 if (msgDirection == ConvergedMessage::Outgoing) |
239 // Set preview text & time based on direction |
234 { |
240 int msgType = modelIndex().data(MessageType).toInt(); |
235 switch (sendState) |
241 int msgSubType = modelIndex().data(MessageSubType).toInt(); |
236 { |
242 int sendState = modelIndex().data(SendingState).toInt(); |
237 case ConvergedMessage::Resend: |
243 int msgDirection = modelIndex().data(Direction).toInt(); |
238 { |
244 QString previewText; |
239 |
245 if (ConvergedMessage::Incoming == msgDirection) { |
240 QString resendString = LOC_MSG_RESEND_AT + dateString; |
246 previewText = defaultPreviewText(msgType, msgSubType); |
241 previewText = resendString; |
247 } |
242 dateString = QString(""); |
248 else if (msgDirection == ConvergedMessage::Outgoing) { |
243 if (!mPresenceIndicatorItem) |
249 |
244 { |
250 switch (sendState) { |
245 mPresenceIndicatorItem = new HbIconItem(this); |
251 case ConvergedMessage::Resend: |
246 } |
252 { |
247 HbStyle::setItemName(mPresenceIndicatorItem, |
253 previewText = LOC_MSG_RESEND_AT + dateString; |
248 "presenceIndicator"); |
254 dateString = QString(); |
249 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
255 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
250 mPresenceIndicatorItem->setVisible(true); |
256 mPresenceIndicatorItem->setVisible(true); |
251 break; |
257 break; |
252 } |
258 } |
253 |
259 case ConvergedMessage::Sending: |
254 case ConvergedMessage::Sending: |
260 case ConvergedMessage::Suspended: |
255 case ConvergedMessage::Suspended: |
261 case ConvergedMessage::Scheduled: |
256 case ConvergedMessage::Scheduled: |
262 case ConvergedMessage::Waiting: |
257 case ConvergedMessage::Waiting: |
263 { |
258 { |
264 previewText = QString(LOC_MSG_OUTGOING); |
259 previewText = QString(LOC_MSG_OUTGOING); |
265 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
260 if (!mPresenceIndicatorItem) |
266 mPresenceIndicatorItem->setVisible(true); |
261 { |
267 break; |
262 mPresenceIndicatorItem = new HbIconItem(this); |
268 } |
263 } |
269 case ConvergedMessage::Failed: |
264 HbStyle::setItemName(mPresenceIndicatorItem, |
270 { |
265 "presenceIndicator"); |
271 previewText = QString(LOC_MSG_SEND_FAILED); |
266 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON); |
272 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON); |
267 mPresenceIndicatorItem->setVisible(true); |
273 mPresenceIndicatorItem->setVisible(true); |
268 break; |
274 break; |
269 } |
275 } |
270 case ConvergedMessage::Failed: |
276 default: |
271 { |
277 { |
272 previewText = QString(LOC_MSG_SEND_FAILED); |
278 // Successful case |
273 if (!mPresenceIndicatorItem) |
279 previewText = defaultPreviewText(msgType, msgSubType); |
274 { |
280 break; |
275 mPresenceIndicatorItem = new HbIconItem(this); |
281 } |
276 } |
282 } |
277 HbStyle::setItemName(mPresenceIndicatorItem, |
283 } |
278 "presenceIndicator"); |
284 previewText.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
279 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON); |
285 previewText.replace('\r', QChar::LineSeparator); |
280 mPresenceIndicatorItem->setVisible(true); |
286 mPreviewLabelItem->setText(previewText); |
281 break; |
|
282 } |
|
283 default: |
|
284 QString postFix = QString(""); |
|
285 previewText = modelIndex().data(BodyText).toString(); |
|
286 previewText += (QChar(QChar::LineSeparator) + postFix); |
|
287 |
|
288 if (!mPresenceIndicatorItem) |
|
289 { |
|
290 mPresenceIndicatorItem = new HbIconItem(this); |
|
291 } |
|
292 |
|
293 HbStyle::setItemName(mPresenceIndicatorItem, |
|
294 "presenceIndicator"); |
|
295 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON); |
|
296 mPresenceIndicatorItem->setVisible(false); |
|
297 |
|
298 break; |
|
299 } |
|
300 } |
|
301 else |
|
302 { |
|
303 previewText = modelIndex().data(BodyText).toString(); |
|
304 } |
|
305 mTimestampItem->setText(dateString); |
287 mTimestampItem->setText(dateString); |
306 return previewText; |
|
307 } |
288 } |
308 |
289 |
309 //--------------------------------------------------------------- |
290 //--------------------------------------------------------------- |
310 // MsgListViewItem::paint. |
291 // MsgListViewItem::paint. |
311 // @see header |
292 // @see header |