30 #include <fbs.h> |
30 #include <fbs.h> |
31 #include <sqldb.h> |
31 #include <sqldb.h> |
32 #include <QBool> |
32 #include <QBool> |
33 #include <QCoreApplication> |
33 #include <QCoreApplication> |
34 #include <HbEvent> |
34 #include <HbEvent> |
|
35 #include <HbMainWindow> |
|
36 #include <HbInstance> |
35 |
37 |
36 #include "debugtraces.h" |
38 #include "debugtraces.h" |
37 |
39 |
38 #include "convergedmessage.h" |
40 #include "convergedmessage.h" |
39 #include "conversationsengine.h" |
41 #include "conversationsengine.h" |
40 |
42 |
41 // Icons |
43 // Icons |
42 const QString MSG_HIGH_PRIORITY_ICON("qtg_small_priority_high"); |
44 const QString MSG_HIGH_PRIORITY_ICON("qtg_small_priority_high"); |
43 const QString MSG_LOW_PRIORITY_ICON("qtg_small_priority_low"); |
45 const QString MSG_LOW_PRIORITY_ICON("qtg_small_priority_low"); |
44 const QString MSG_ATTACH_ICON("qtg_small_attachment"); |
46 const QString MSG_ATTACH_ICON("qtg_small_attachment"); |
45 const QString MSG_AUDIO_ICON("qtg_large_music_player"); |
47 const QString MSG_AUDIO_PLAY_ICON("qtg_small_sound"); |
46 const QString MSG_VIDEO_ICON("qtg_large_video_player"); |
|
47 const QString MSG_AUDIO_PLAY_ICON("qtg_large_music_player"); |
|
48 |
48 |
49 |
49 |
50 // Frames |
50 // Frames |
51 const QString CV_RECEIVED_NORMAL_FR("qtg_fr_convlist_received_normal"); |
51 const QString CV_RECEIVED_NORMAL_FR("qtg_fr_convlist_received_normal"); |
52 const QString CV_RECEIVED_PRESSED_FR("qtg_fr_convlist_received_pressed"); |
52 const QString CV_RECEIVED_PRESSED_FR("qtg_fr_convlist_received_pressed"); |
53 const QString CV_RECEIVED_HIGHLIGHT_FR("qtg_fr_convlist_received_highlight"); |
53 const QString CV_RECEIVED_HIGHLIGHT_FR("qtg_fr_convlist_received_highlight"); |
54 const QString CV_SENT_NORMAL_FR("qtg_fr_convlist_sent_normal"); |
54 const QString CV_SENT_NORMAL_FR("qtg_fr_convlist_sent_normal"); |
55 const QString CV_SENT_PRESSED_FR("qtg_fr_convlist_sent_pressed"); |
55 const QString CV_SENT_PRESSED_FR("qtg_fr_convlist_sent_pressed"); |
56 const QString CV_SENT_HIGHLIGHT_FR("qtg_fr_convlist_sent_highlight"); |
56 const QString CV_SENT_HIGHLIGHT_FR("qtg_fr_convlist_sent_highlight"); |
57 const QString NEW_ITEM_FRAME("qtg_fr_list_new_item"); |
57 const QString NEW_ITEM_FRAME("qtg_fr_list_new_item"); |
58 |
|
59 //selecet preview-icon query |
|
60 _LIT(KSelectPreviewIconStmt,"SELECT message_id, preview_icon FROM conversation_messages WHERE message_id = :message_id "); |
|
61 |
58 |
62 //--------------------------------------------------------------- |
59 //--------------------------------------------------------------- |
63 // MsgConversationWidget::MsgConversationWidget |
60 // MsgConversationWidget::MsgConversationWidget |
64 // @see header file |
61 // @see header file |
65 //--------------------------------------------------------------- |
62 //--------------------------------------------------------------- |
116 HbStyle::setItemName(mBubbleFrameItem, "bubble"); |
113 HbStyle::setItemName(mBubbleFrameItem, "bubble"); |
117 |
114 |
118 mNewFrameItem = new HbFrameItem(this); |
115 mNewFrameItem = new HbFrameItem(this); |
119 mNewFrameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
116 mNewFrameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical); |
120 HbStyle::setItemName(mNewFrameItem, "newItemIcon"); |
117 HbStyle::setItemName(mNewFrameItem, "newItemIcon"); |
|
118 mSubjectTextItem = new HbTextItem(this); |
|
119 mSubjectTextItem->setTextWrapping(Hb::TextWordWrap); |
|
120 HbStyle::setItemName(mSubjectTextItem, "subject"); |
|
121 mBodyTextItem = new HbTextItem(this); |
|
122 mBodyTextItem->setTextWrapping(Hb::TextWordWrap); |
|
123 HbStyle::setItemName(mBodyTextItem, "bodyText"); |
|
124 mPreviewIconItem = new HbIconItem(this); |
|
125 HbStyle::setItemName(mPreviewIconItem, "preview"); |
|
126 mPriorityIconItem = new HbIconItem(this); |
|
127 HbStyle::setItemName(mPriorityIconItem, "priority"); |
|
128 mAttachmentIconItem = new HbIconItem(this); |
|
129 HbStyle::setItemName(mAttachmentIconItem, "attachment"); |
|
130 mPlayIconItem = new HbIconItem(this); |
|
131 HbStyle::setItemName(mPlayIconItem, "playIcon"); |
|
132 mTimeStampTextItem = new HbTextItem(this); |
|
133 HbStyle::setItemName(mTimeStampTextItem, "timeStamp"); |
121 |
134 |
|
135 HbMainWindow *mainWindow = hbInstance->allMainWindows()[0]; |
|
136 connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, |
|
137 SLOT(orientationchanged(Qt::Orientation)),Qt::UniqueConnection); |
|
138 polishEvent(); |
122 } |
139 } |
123 |
140 |
124 //--------------------------------------------------------------- |
141 //--------------------------------------------------------------- |
125 // MsgConversationWidget::setSubject |
142 // MsgConversationWidget::setSubject |
126 // @see header file |
143 // @see header file |
127 //--------------------------------------------------------------- |
144 //--------------------------------------------------------------- |
128 void MsgConversationWidget::setSubject(const QString &subject) |
145 void MsgConversationWidget::setSubject(const QString &subject) |
129 { |
146 { |
130 if (!mSubjectTextItem) |
|
131 { |
|
132 mSubjectTextItem = new HbTextItem(this); |
|
133 mSubjectTextItem->setTextWrapping(Hb::TextWordWrap); |
|
134 } |
|
135 HbStyle::setItemName(mSubjectTextItem, "subject"); |
147 HbStyle::setItemName(mSubjectTextItem, "subject"); |
136 mSubjectTextItem->setText(subject); |
148 mSubjectTextItem->setText(subject); |
137 mSubjectTextItem->show(); |
149 mSubjectTextItem->show(); |
138 } |
150 } |
139 |
151 |
141 // MsgConversationWidget::setBodyText |
153 // MsgConversationWidget::setBodyText |
142 // @see header file |
154 // @see header file |
143 //--------------------------------------------------------------- |
155 //--------------------------------------------------------------- |
144 void MsgConversationWidget::setBodyText(const QString &body) |
156 void MsgConversationWidget::setBodyText(const QString &body) |
145 { |
157 { |
146 if (!mBodyTextItem) |
|
147 { |
|
148 mBodyTextItem = new HbTextItem(this); |
|
149 mBodyTextItem->setTextWrapping(Hb::TextWordWrap); |
|
150 } |
|
151 HbStyle::setItemName(mBodyTextItem, "bodyText"); |
158 HbStyle::setItemName(mBodyTextItem, "bodyText"); |
152 |
159 |
153 mBodyTextItem->setText(body); |
160 mBodyTextItem->setText(body); |
154 mBodyTextItem->show(); |
161 mBodyTextItem->show(); |
155 } |
162 } |
156 |
163 |
157 //--------------------------------------------------------------- |
164 //--------------------------------------------------------------- |
158 // MsgConversationWidget::setPreviewIconPath |
165 // MsgConversationWidget::setPreviewIcon |
159 // @see header file |
166 // @see header file |
160 //--------------------------------------------------------------- |
167 //--------------------------------------------------------------- |
161 void MsgConversationWidget::setPreviewIconPath(const QString &filePath,int msgId) |
168 void MsgConversationWidget::setPreviewIcon(HbIcon& icon) |
162 { |
169 { |
163 if (!mPreviewIconItem) |
170 QCRITICAL_WRITE("MsgConversationWidget::setPreviewIcon start.") |
164 { |
171 |
165 mPreviewIconItem = new HbIconItem(this); |
|
166 mPreviewIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop); |
|
167 } |
|
168 |
172 |
169 HbStyle::setItemName(mPreviewIconItem, "preview"); |
173 HbStyle::setItemName(mPreviewIconItem, "preview"); |
170 //sql query to get preview-icon from DB |
174 |
171 TBool isOpen = EFalse; |
175 mPreviewIconItem->setIcon(icon); |
172 bool imagePreviewed = false; |
176 mPreviewIconItem->setPreferredSize(icon.size()); |
173 |
177 mPreviewIconItem->show(); |
174 //get DB handle and check if it is open |
178 |
175 RSqlDatabase& sqlDb = ConversationsEngine::instance()->getDBHandle(isOpen); |
179 QCRITICAL_WRITE("MsgConversationWidget::setPreviewIcon end.") |
176 if (isOpen) |
180 } |
177 { |
181 |
178 RSqlStatement sqlSelectPreviewIconStmt; |
|
179 TInt err = sqlSelectPreviewIconStmt.Prepare(sqlDb, |
|
180 KSelectPreviewIconStmt); |
|
181 |
|
182 QCRITICAL_WRITE_FORMAT("Error from Prepare()", err) |
|
183 |
|
184 if (err == KErrNone) |
|
185 { |
|
186 //msg_id |
|
187 TInt msgIdIndex = sqlSelectPreviewIconStmt.ParameterIndex( |
|
188 _L(":message_id")); |
|
189 sqlSelectPreviewIconStmt.BindInt(msgIdIndex, msgId); |
|
190 |
|
191 // get preview-icon from DB |
|
192 err = sqlSelectPreviewIconStmt.Next(); |
|
193 QCRITICAL_WRITE_FORMAT("Error from Next()", err) |
|
194 |
|
195 if (err == KSqlAtRow) |
|
196 { |
|
197 TInt previewIconIndex = sqlSelectPreviewIconStmt.ColumnIndex( |
|
198 _L("preview_icon")); |
|
199 |
|
200 RSqlColumnReadStream stream; |
|
201 |
|
202 //Get data from binary column BLOB |
|
203 err = stream.ColumnBinary(sqlSelectPreviewIconStmt, |
|
204 previewIconIndex); |
|
205 |
|
206 QCRITICAL_WRITE_FORMAT("Error from ColumnBinary()", err) |
|
207 |
|
208 if (err == KErrNone) |
|
209 { |
|
210 CFbsBitmap *bitmap = new CFbsBitmap; |
|
211 TRAPD(err,bitmap->InternalizeL(stream)); |
|
212 QCRITICAL_WRITE_FORMAT("Error from bitmap InternalizeL()", err) |
|
213 |
|
214 //convert bitmap to pixmap |
|
215 if (err == KErrNone) |
|
216 { |
|
217 TSize size = bitmap->SizeInPixels(); |
|
218 int bytesPerLine = bitmap->ScanLineLength(size.iWidth, |
|
219 bitmap->DisplayMode()); |
|
220 const uchar* dataPtr = |
|
221 (const uchar*) bitmap->DataAddress(); |
|
222 |
|
223 QPixmap pixmap = QPixmap::fromImage(QImage(dataPtr, |
|
224 size.iWidth, size.iHeight, bytesPerLine, |
|
225 QImage::Format_RGB16)); |
|
226 |
|
227 mPreviewIconItem->setIcon(HbIcon(pixmap)); |
|
228 mPreviewIconItem->setPreferredSize(pixmap.size()); |
|
229 mPreviewIconItem->setEnabled(true); |
|
230 mPreviewIconItem->show(); |
|
231 imagePreviewed = true; |
|
232 |
|
233 QCRITICAL_WRITE("Bitmap Conversion completed") |
|
234 } |
|
235 //remove bitmap |
|
236 delete bitmap; |
|
237 } |
|
238 //close stream |
|
239 stream.Close(); |
|
240 } |
|
241 } |
|
242 sqlSelectPreviewIconStmt.Close(); |
|
243 } |
|
244 |
|
245 // if not found in db, set from file path |
|
246 if(!imagePreviewed) |
|
247 { |
|
248 QPixmap pixmap(filePath); |
|
249 QPixmap scaledPixmap =pixmap.scaled(100,100,Qt::IgnoreAspectRatio); |
|
250 mPreviewIconItem->setIcon(HbIcon(scaledPixmap)); |
|
251 mPreviewIconItem->setPreferredSize(scaledPixmap.size()); |
|
252 mPreviewIconItem->setEnabled(true); |
|
253 mPreviewIconItem->show(); |
|
254 } |
|
255 |
|
256 QCRITICAL_WRITE("MsgConversationWidget::setPreviewIconPath end.") |
|
257 |
|
258 } |
|
259 |
182 |
260 //--------------------------------------------------------------- |
183 //--------------------------------------------------------------- |
261 // MsgConversationWidget::setPriority |
184 // MsgConversationWidget::setPriority |
262 // @see header file |
185 // @see header file |
263 //--------------------------------------------------------------- |
186 //--------------------------------------------------------------- |
364 //--------------------------------------------------------------- |
279 //--------------------------------------------------------------- |
365 void MsgConversationWidget::displayAudioIcon(const QString &iconPath) |
280 void MsgConversationWidget::displayAudioIcon(const QString &iconPath) |
366 { |
281 { |
367 if (hasAudio()) |
282 if (hasAudio()) |
368 { |
283 { |
369 if (hasImage()) |
284 if (!hasImage()) |
370 { |
285 { |
371 if (!mPlayIconItem) |
286 HbStyle::setItemName(mPreviewIconItem, "preview"); |
|
287 if(iconPath.isEmpty()) |
372 { |
288 { |
373 mPlayIconItem = new HbIconItem(this); |
289 qreal iconSize = 0; |
|
290 style()->parameter("hb-param-graphic-size-primary-small",iconSize); |
|
291 HbIcon icon(MSG_AUDIO_PLAY_ICON); |
|
292 icon.setHeight(iconSize); |
|
293 icon.setWidth(iconSize); |
|
294 mPreviewIconItem->setIcon(icon); |
374 } |
295 } |
|
296 else |
|
297 { |
|
298 mPreviewIconItem->setIconName(iconPath); |
|
299 } |
|
300 mPreviewIconItem->show(); |
|
301 } |
|
302 else |
|
303 { |
375 HbStyle::setItemName(mPlayIconItem, "playIcon"); |
304 HbStyle::setItemName(mPlayIconItem, "playIcon"); |
376 mPlayIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath); |
305 mPlayIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath); |
377 mPlayIconItem->show(); |
306 mPlayIconItem->show(); |
378 } |
307 } |
379 else |
|
380 { |
|
381 if (!mAudioIconItem) |
|
382 { |
|
383 mAudioIconItem = new HbIconItem(this); |
|
384 } |
|
385 HbStyle::setItemName(mAudioIconItem, "audioIcon"); |
|
386 mAudioIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath); |
|
387 mAudioIconItem->show(); |
|
388 |
|
389 } |
|
390 } |
308 } |
391 } |
309 } |
392 |
310 |
393 //--------------------------------------------------------------- |
311 //--------------------------------------------------------------- |
394 // MsgConversationWidget::setVideo |
312 // MsgConversationWidget::setVideo |
395 // @see header file |
313 // @see header file |
396 //--------------------------------------------------------------- |
314 //--------------------------------------------------------------- |
397 void MsgConversationWidget::setVideo(bool video) |
315 void MsgConversationWidget::setVideo(bool video) |
398 { |
316 { |
399 mHasVideo = video; |
317 mHasVideo = video; |
400 |
|
401 if (video) |
|
402 { |
|
403 if (!mVideoIconItem) |
|
404 { |
|
405 mVideoIconItem = new HbIconItem(this); |
|
406 } |
|
407 HbStyle::setItemName(mVideoIconItem, "video"); |
|
408 mVideoIconItem->setIcon(HbIcon(MSG_VIDEO_ICON)); |
|
409 mVideoIconItem->show(); |
|
410 |
|
411 } |
|
412 } |
318 } |
413 |
319 |
414 //--------------------------------------------------------------- |
320 //--------------------------------------------------------------- |
415 // MsgConversationWidget::hasVideo |
321 // MsgConversationWidget::hasVideo |
416 // @see header file |
322 // @see header file |
738 |
640 |
739 if(mPriorityIconItem){ |
641 if(mPriorityIconItem){ |
740 HbStyle::setItemName(mPriorityIconItem, ""); |
642 HbStyle::setItemName(mPriorityIconItem, ""); |
741 mPriorityIconItem->hide(); |
643 mPriorityIconItem->hide(); |
742 } |
644 } |
743 |
645 |
744 if(mAudioIconItem){ |
|
745 HbStyle::setItemName(mAudioIconItem, ""); |
|
746 mAudioIconItem->hide(); |
|
747 } |
|
748 |
|
749 if(mVideoIconItem){ |
|
750 HbStyle::setItemName(mVideoIconItem, ""); |
|
751 mVideoIconItem->hide(); |
|
752 } |
|
753 |
|
754 if(mPlayIconItem){ |
646 if(mPlayIconItem){ |
755 HbStyle::setItemName(mPlayIconItem, ""); |
647 HbStyle::setItemName(mPlayIconItem, ""); |
756 mPlayIconItem->hide(); |
648 mPlayIconItem->hide(); |
757 } |
649 } |
758 |
650 |
759 if(mPreviewIconItem){ |
651 if(mPreviewIconItem){ |
760 HbStyle::setItemName(mPreviewIconItem, ""); |
652 HbStyle::setItemName(mPreviewIconItem, ""); |
761 mPreviewIconItem->hide(); |
653 mPreviewIconItem->hide(); |
762 } |
654 } |
763 } |
655 } |
|
656 |
|
657 //--------------------------------------------------------------- |
|
658 // MsgConversationWidget::orientationchanged |
|
659 // @see header file |
|
660 //--------------------------------------------------------------- |
|
661 void MsgConversationWidget::orientationchanged(Qt::Orientation orientation) |
|
662 { |
|
663 QDEBUG_WRITE("MsgConversationWidget:orientationchanged start.") |
|
664 |
|
665 repolish(); |
764 |
666 |
765 void MsgConversationWidget::repolishWidget() |
667 QDEBUG_WRITE("MsgConversationWidget:orientationchanged end.") |
|
668 } |
|
669 |
|
670 //--------------------------------------------------------------- |
|
671 // MsgConversationWidget::polish |
|
672 // @see header file |
|
673 //--------------------------------------------------------------- |
|
674 void MsgConversationWidget::polish(HbStyleParameters ¶ms) |
|
675 { |
|
676 QString bubbleOrig = HbStyle::itemName(mBubbleFrameItem); |
|
677 QString newItemIconOrig = HbStyle::itemName(mNewFrameItem); |
|
678 QString subjectOrig = HbStyle::itemName(mSubjectTextItem); |
|
679 QString bodyTextOrig = HbStyle::itemName(mBodyTextItem); |
|
680 QString previewOrig = HbStyle::itemName(mPreviewIconItem); |
|
681 QString priorityOrig = HbStyle::itemName(mPriorityIconItem); |
|
682 QString attachmentOrig = HbStyle::itemName(mAttachmentIconItem); |
|
683 QString timeStampOrig = HbStyle::itemName(mTimeStampTextItem); |
|
684 QString playIconOrig = HbStyle::itemName(mPlayIconItem); |
|
685 |
|
686 // Make sure that all the sub-items are polished in every polish. |
|
687 HbStyle::setItemName(mBubbleFrameItem, "bubble"); |
|
688 HbStyle::setItemName(mNewFrameItem, "newItemIcon"); |
|
689 HbStyle::setItemName(mSubjectTextItem, "subject"); |
|
690 HbStyle::setItemName(mBodyTextItem, "bodyText"); |
|
691 HbStyle::setItemName(mPreviewIconItem, "preview"); |
|
692 HbStyle::setItemName(mPriorityIconItem, "priority"); |
|
693 HbStyle::setItemName(mAttachmentIconItem, "attachment"); |
|
694 HbStyle::setItemName(mTimeStampTextItem, "timeStamp"); |
|
695 HbStyle::setItemName(mPlayIconItem, "playIcon"); |
|
696 |
|
697 HbWidget::polish(params); |
|
698 |
|
699 HbStyle::setItemName(mBubbleFrameItem, bubbleOrig); |
|
700 HbStyle::setItemName(mNewFrameItem, newItemIconOrig); |
|
701 HbStyle::setItemName(mSubjectTextItem, subjectOrig); |
|
702 HbStyle::setItemName(mBodyTextItem, bodyTextOrig); |
|
703 HbStyle::setItemName(mPreviewIconItem, previewOrig); |
|
704 HbStyle::setItemName(mPriorityIconItem, priorityOrig); |
|
705 HbStyle::setItemName(mAttachmentIconItem, attachmentOrig); |
|
706 HbStyle::setItemName(mTimeStampTextItem, timeStampOrig); |
|
707 HbStyle::setItemName(mPlayIconItem, playIconOrig); |
|
708 } |
|
709 |
|
710 //--------------------------------------------------------------- |
|
711 // MsgConversationWidget::repolishWidget |
|
712 // @see header file |
|
713 //--------------------------------------------------------------- |
|
714 void MsgConversationWidget::repolishWidget() |
766 { |
715 { |
767 QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged)); |
|
768 repolish(); |
716 repolish(); |
769 } |
717 } |
770 |
718 |
|
719 |
771 // EOF |
720 // EOF |