31 const QString IMAGE_MIMETYPE("image"); |
32 const QString IMAGE_MIMETYPE("image"); |
32 const QString AUDIO_MIMETYPE("audio"); |
33 const QString AUDIO_MIMETYPE("audio"); |
33 const QString VIDEO_MIMETYPE("video"); |
34 const QString VIDEO_MIMETYPE("video"); |
34 const QString TEXT_MIMETYPE("text"); |
35 const QString TEXT_MIMETYPE("text"); |
35 |
36 |
|
37 static const char VIDEO_ICON[] = "qtg_large_video_player"; |
|
38 |
36 //--------------------------------------------------------------- |
39 //--------------------------------------------------------------- |
37 //UniViewerBodyWidget::UniViewerBodyWidget |
40 //UniViewerBodyWidget::UniViewerBodyWidget |
38 // @see header file |
41 // @see header file |
39 //--------------------------------------------------------------- |
42 //--------------------------------------------------------------- |
40 UniViewerBodyWidget::UniViewerBodyWidget(QGraphicsItem *parent) : |
43 UniViewerBodyWidget::UniViewerBodyWidget(QGraphicsItem *parent) : |
41 HbWidget(parent), mHasText(false), mHasPixmap(false), mTextItem(0), mSlideCounter(0), |
44 HbWidget(parent), mHasText(false), mHasPixmap(false), mTextItem(0), mSlideCounter(0), |
42 mPixmapItem(0), mAudioItem(0) |
45 mPixmapItem(0), mAudioItem(0), mOverlayItem(0) |
43 { |
46 { |
44 this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); |
47 this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); |
45 } |
48 } |
46 |
49 |
47 //--------------------------------------------------------------- |
50 //--------------------------------------------------------------- |
48 //UniViewerBodyWidget::~UniViewerBodyWidget |
51 //UniViewerBodyWidget::~UniViewerBodyWidget |
49 // @see header file |
52 // @see header file |
50 //--------------------------------------------------------------- |
53 //--------------------------------------------------------------- |
51 UniViewerBodyWidget::~UniViewerBodyWidget() |
54 UniViewerBodyWidget::~UniViewerBodyWidget() |
52 { |
55 { |
53 } |
|
54 |
|
55 //--------------------------------------------------------------- |
|
56 //UniViewerBodyWidget::setImage |
|
57 // @see header file |
|
58 //--------------------------------------------------------------- |
|
59 void UniViewerBodyWidget::setPixmap(UniMessageInfo *info) |
|
60 { |
|
61 setHasPixmap(true); |
|
62 //create image item instance |
|
63 if (!mPixmapItem) { |
|
64 mPixmapItem = new UniViewerPixmapWidget(this); |
|
65 HbStyle::setItemName(mPixmapItem, "pixmap"); |
|
66 } |
|
67 mPixmapItem->hide(); |
|
68 mPixmapItem->populate(info); |
|
69 |
|
70 this->repolish(); |
|
71 } |
|
72 |
|
73 //--------------------------------------------------------------- |
|
74 //UniViewerBodyWidget::setAudio |
|
75 // @see header file |
|
76 //--------------------------------------------------------------- |
|
77 void UniViewerBodyWidget::setAudio(UniMessageInfo *info) |
|
78 { |
|
79 if (!mAudioItem) { |
|
80 mAudioItem = new UniViewerAudioWidget(this); |
|
81 HbStyle::setItemName(mAudioItem, "audioItem"); |
|
82 } |
|
83 mAudioItem->hide(); |
|
84 mAudioItem->populate(info); |
|
85 |
|
86 this->repolish(); |
|
87 } |
|
88 |
|
89 //--------------------------------------------------------------- |
|
90 //UniViewerBodyWidget::setVideo |
|
91 // @see header file |
|
92 //--------------------------------------------------------------- |
|
93 void UniViewerBodyWidget::setVideo(UniMessageInfo *info) |
|
94 { |
|
95 setHasPixmap(true); |
|
96 //create image item instance |
|
97 if (!mPixmapItem) { |
|
98 mPixmapItem = new UniViewerPixmapWidget(this); |
|
99 HbStyle::setItemName(mPixmapItem, "pixmap"); |
|
100 } |
|
101 mPixmapItem->hide(); |
|
102 mPixmapItem->populate(info); |
|
103 |
|
104 this->repolish(); |
|
105 } |
|
106 |
|
107 //--------------------------------------------------------------- |
|
108 //UniViewerBodyWidget::setText |
|
109 // @see header file |
|
110 //--------------------------------------------------------------- |
|
111 void UniViewerBodyWidget::setText(QString text) |
|
112 { |
|
113 setHasText(true); |
|
114 |
|
115 if (!mTextItem) { |
|
116 mTextItem = new UniViewerTextItem(this); |
|
117 HbStyle::setItemName(mTextItem, "textItem"); |
|
118 connect(mTextItem, SIGNAL(sendMessage(const QString&)), this, |
|
119 SIGNAL(sendMessage(const QString&))); |
|
120 } |
|
121 mTextItem->hide(); |
|
122 text.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
|
123 text.replace('\r', QChar::LineSeparator); |
|
124 mTextItem->setText(text); |
|
125 this->repolish(); |
|
126 } |
|
127 |
|
128 //--------------------------------------------------------------- |
|
129 // UniViewerBodyWidget::setSlideCounter |
|
130 // @see header file |
|
131 //--------------------------------------------------------------- |
|
132 void UniViewerBodyWidget::setSlideCounter(QString &slideCounter) |
|
133 { |
|
134 if (!mSlideCounter) { |
|
135 mSlideCounter = new HbTextItem(this); |
|
136 HbStyle::setItemName(mSlideCounter, "slideCounter"); |
|
137 } |
|
138 |
|
139 mSlideCounter->hide(); |
|
140 mSlideCounter->setText(slideCounter); |
|
141 this->repolish(); |
|
142 } |
56 } |
143 |
57 |
144 //--------------------------------------------------------------- |
58 //--------------------------------------------------------------- |
145 // UniViewerBodyWidget::setHasText |
59 // UniViewerBodyWidget::setHasText |
146 // @see header file |
60 // @see header file |
193 QString mimeType = info->mimetype(); |
107 QString mimeType = info->mimetype(); |
194 |
108 |
195 if (mimeType.contains(TEXT_MIMETYPE)) { |
109 if (mimeType.contains(TEXT_MIMETYPE)) { |
196 QFile file(info->path()); |
110 QFile file(info->path()); |
197 if (file.open(QIODevice::ReadOnly)) { |
111 if (file.open(QIODevice::ReadOnly)) { |
198 QString textContent(file.readAll()); |
112 QString textContent; |
|
113 QByteArray textArray; |
|
114 textArray = file.readAll(); |
|
115 char *data = new char[textArray.size()+1]; |
|
116 strcpy(data,textArray.data()); |
|
117 //This is needed since MMS text content |
|
118 //is stored in UTF8 format |
|
119 textContent = textContent.fromUtf8(data,strlen(data)); |
|
120 file.close(); |
|
121 delete []data; |
199 setText(textContent); |
122 setText(textContent); |
200 } |
123 } |
201 } |
124 } |
202 else if (mimeType.contains(AUDIO_MIMETYPE)) { |
125 else if (mimeType.contains(AUDIO_MIMETYPE)) { |
203 setAudio(info); |
126 setAudio(info); |
236 mTextItem->setParent(NULL); |
159 mTextItem->setParent(NULL); |
237 delete mTextItem; |
160 delete mTextItem; |
238 mTextItem = NULL; |
161 mTextItem = NULL; |
239 } |
162 } |
240 |
163 |
|
164 if (mOverlayItem) { |
|
165 mOverlayItem->setParent(NULL); |
|
166 delete mOverlayItem; |
|
167 mOverlayItem = NULL; |
|
168 } |
|
169 |
241 setHasText(false); |
170 setHasText(false); |
242 setHasPixmap(false); |
171 setHasPixmap(false); |
243 repolish(); |
172 repolish(); |
|
173 } |
|
174 |
|
175 //--------------------------------------------------------------- |
|
176 // UniViewerBodyWidget::setText |
|
177 // @see header file |
|
178 //--------------------------------------------------------------- |
|
179 void UniViewerBodyWidget::setText(QString text) |
|
180 { |
|
181 setHasText(true); |
|
182 |
|
183 if (!mTextItem) { |
|
184 mTextItem = new UniViewerTextItem(this); |
|
185 mTextItem->setObjectName("textItem"); |
|
186 HbStyle::setItemName(mTextItem, "textItem"); |
|
187 connect(mTextItem, SIGNAL(sendMessage(const QString&)), this, |
|
188 SIGNAL(sendMessage(const QString&))); |
|
189 } |
|
190 mTextItem->hide(); |
|
191 text.replace(QChar::ParagraphSeparator, QChar::LineSeparator); |
|
192 text.replace('\r', QChar::LineSeparator); |
|
193 mTextItem->setText(text); |
|
194 |
|
195 this->repolish(); |
244 } |
196 } |
245 |
197 |
246 //--------------------------------------------------------------- |
198 //--------------------------------------------------------------- |
247 //UniViewerBodyWidget::sizeHint |
199 //UniViewerBodyWidget::sizeHint |
248 // @see header file |
200 // @see header file |
387 szHint.rheight() = qMax(maxHeight, szHint.height()); |
343 szHint.rheight() = qMax(maxHeight, szHint.height()); |
388 |
344 |
389 return szHint; |
345 return szHint; |
390 } |
346 } |
391 |
347 |
|
348 //--------------------------------------------------------------- |
|
349 //UniViewerBodyWidget::setPixmap |
|
350 // @see header file |
|
351 //--------------------------------------------------------------- |
|
352 void UniViewerBodyWidget::setPixmap(UniMessageInfo *info) |
|
353 { |
|
354 setHasPixmap(true); |
|
355 //create image item instance |
|
356 if (!mPixmapItem) { |
|
357 mPixmapItem = new UniViewerPixmapWidget(this); |
|
358 HbStyle::setItemName(mPixmapItem, "pixmap"); |
|
359 } |
|
360 mPixmapItem->hide(); |
|
361 mPixmapItem->populate(info); |
|
362 |
|
363 this->repolish(); |
|
364 } |
|
365 |
|
366 //--------------------------------------------------------------- |
|
367 //UniViewerBodyWidget::setAudio |
|
368 // @see header file |
|
369 //--------------------------------------------------------------- |
|
370 void UniViewerBodyWidget::setAudio(UniMessageInfo *info) |
|
371 { |
|
372 if (!mAudioItem) { |
|
373 mAudioItem = new UniViewerAudioWidget(this); |
|
374 HbStyle::setItemName(mAudioItem, "audioItem"); |
|
375 } |
|
376 mAudioItem->hide(); |
|
377 mAudioItem->populate(info); |
|
378 |
|
379 this->repolish(); |
|
380 } |
|
381 |
|
382 //--------------------------------------------------------------- |
|
383 //UniViewerBodyWidget::setVideo |
|
384 // @see header file |
|
385 //--------------------------------------------------------------- |
|
386 void UniViewerBodyWidget::setVideo(UniMessageInfo *info) |
|
387 { |
|
388 setHasPixmap(true); |
|
389 //create image item instance |
|
390 if (!mPixmapItem) { |
|
391 mPixmapItem = new UniViewerPixmapWidget(this); |
|
392 HbStyle::setItemName(mPixmapItem, "pixmap"); |
|
393 connect(mPixmapItem, SIGNAL(thumbnailFound(bool, UniMessageInfo*)), this, |
|
394 SLOT(onThumbnailFound(bool, UniMessageInfo*))); |
|
395 } |
|
396 mPixmapItem->hide(); |
|
397 mPixmapItem->populate(info); |
|
398 |
|
399 this->repolish(); |
|
400 } |
|
401 |
|
402 //--------------------------------------------------------------- |
|
403 // UniViewerBodyWidget::setSlideCounter |
|
404 // @see header file |
|
405 //--------------------------------------------------------------- |
|
406 void UniViewerBodyWidget::setSlideCounter(QString &slideCounter) |
|
407 { |
|
408 if (!mSlideCounter) { |
|
409 mSlideCounter = new HbTextItem(this); |
|
410 HbStyle::setItemName(mSlideCounter, "slideCounter"); |
|
411 } |
|
412 |
|
413 mSlideCounter->hide(); |
|
414 mSlideCounter->setText(slideCounter); |
|
415 |
|
416 this->repolish(); |
|
417 } |
|
418 |
|
419 //--------------------------------------------------------------- |
|
420 // UniViewerBodyWidget::setOverlayIcon |
|
421 // @see header file |
|
422 //--------------------------------------------------------------- |
|
423 void UniViewerBodyWidget::setOverlayIcon(const QString &iconName) |
|
424 { |
|
425 if (!mOverlayItem) { |
|
426 mOverlayItem = new HbIconItem(this); |
|
427 HbStyle::setItemName(mOverlayItem, "overlayItem"); |
|
428 } |
|
429 |
|
430 mOverlayItem->hide(); |
|
431 mOverlayItem->setIconName(iconName); |
|
432 |
|
433 this->repolish(); |
|
434 } |
|
435 |
|
436 //--------------------------------------------------------------- |
|
437 // UniViewerBodyWidget::onThumbnailFound |
|
438 // @see header file |
|
439 //--------------------------------------------------------------- |
|
440 void UniViewerBodyWidget::onThumbnailFound(bool result, UniMessageInfo *info) |
|
441 { |
|
442 if (result) { |
|
443 // Thumbnail generation success |
|
444 setOverlayIcon(VIDEO_ICON); |
|
445 } |
|
446 else { |
|
447 // Show video content in audio widget. |
|
448 setAudio(info); |
|
449 |
|
450 // Remove the pixmap widget. |
|
451 setHasPixmap(false); |
|
452 if (mPixmapItem) { |
|
453 HbStyle::setItemName(mPixmapItem, ""); |
|
454 mPixmapItem->hide(); |
|
455 } |
|
456 } |
|
457 } |
|
458 |
392 // EOF |
459 // EOF |