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