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