messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp
changeset 51 3507212d340e
parent 41 25fe1fe642e3
child 62 fdbe8253b596
--- a/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp	Tue Aug 03 21:34:40 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp	Fri Aug 06 23:19:50 2010 +0530
@@ -34,21 +34,19 @@
 #define LOC_OPEN    hbTrId("txt_common_menu_open")
 #define LOC_SAVE    hbTrId("txt_common_menu_save")
 
-const QString PIXMAP_ICON("qtg_small_image");
-const QString CORRUPTED_PIXMAP_ICON("qtg_large_corrupted");
-const QString VIDEO_MIMETYPE("video");
-const QString MSG_VIDEO_ICON("qtg_small_video");
-const QString VIDEO_OVERLAY_ICON("qtg_large_video_player");
+static const char PIXMAP_ICON[] = "qtg_small_image";
+static const char CORRUPTED_PIXMAP_ICON[] = "qtg_large_corrupted";
+static const char VIDEO_MIMETYPE[] = "video";
 
-const int WIDTH_RATIO = 4;
-const int HEIGHT_RATIO = 3;
+static const int WIDTH_RATIO = 4;
+static const int HEIGHT_RATIO = 3;
 
 //---------------------------------------------------------------
 // UniViewerPixmapWidget::UniViewerPixmapWidget
 // @see header file
 //---------------------------------------------------------------
 UniViewerPixmapWidget::UniViewerPixmapWidget(QGraphicsItem *parent) :
-    HbIconItem(parent), mViewerUtils(0), mThumbnailManager(0)
+    HbIconItem(parent), mInfo(0), mViewerUtils(0), mThumbnailManager(0)
 {
     this->grabGesture(Qt::TapGesture);
     init();
@@ -60,30 +58,54 @@
 //---------------------------------------------------------------
 UniViewerPixmapWidget::~UniViewerPixmapWidget()
 {
+    if (mInfo) {
+        delete mInfo;
+        mInfo = NULL;
+    }
 }
 
 //---------------------------------------------------------------
-// UniViewerPixmapWidget::setPixmap
+// UniViewerPixmapWidget::populate
 // @see header file
 //---------------------------------------------------------------
 void UniViewerPixmapWidget::populate(UniMessageInfo *info)
 {
     mMimeType = info->mimetype();
     mPixmapPath = info->path();
+
+    /**
+     * Create a copy of info for video content.
+     * mInfo will be deleted in the destructor.
+     */
     if (mMimeType.contains(VIDEO_MIMETYPE)) {
-        this->setIcon(MSG_VIDEO_ICON);
-        mThumbnailManager->getThumbnail(mPixmapPath);
-        this->ungrabGesture(Qt::TapGesture);
+        mInfo = new UniMessageInfo(*info);
     }
-    else if (info->isProtected()) {
-        this->setIconName(PIXMAP_ICON);
+
+    if (info->isProtected()) {
+        if (mMimeType.contains(VIDEO_MIMETYPE)) {
+            emit thumbnailFound(false, mInfo);
+        }
+        else {
+            this->setIconName(PIXMAP_ICON);
+        }
     }
     else if (info->isCorrupted()) {
-        this->setIconName(CORRUPTED_PIXMAP_ICON);
+        if (mMimeType.contains(VIDEO_MIMETYPE)) {
+            emit thumbnailFound(false, mInfo);
+        }
+        else {
+            this->setIconName(CORRUPTED_PIXMAP_ICON);
+        }
     }
     else {
-        QPixmap pixmap(mPixmapPath);
-        this->setIcon(HbIcon(pixmap));
+        if (mMimeType.contains(VIDEO_MIMETYPE)) {
+            mThumbnailManager->getThumbnail(mPixmapPath);
+            this->ungrabGesture(Qt::TapGesture);
+        }
+        else {
+            QPixmap pixmap(mPixmapPath);
+            this->setIcon(HbIcon(pixmap));
+        }
     }
 }
 
@@ -174,10 +196,13 @@
     Q_UNUSED(data)
     Q_UNUSED(id)
     this->grabGesture(Qt::TapGesture);
-    if (!error) {
+    if (error) {
+        emit thumbnailFound(false, mInfo);
+    }
+    else {
         this->setIcon(HbIcon(pixmap));
         this->hide();
-        emit setOverlayIcon(VIDEO_OVERLAY_ICON);
+        emit thumbnailFound(true, NULL);
     }
 }