--- a/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp Tue Jul 06 14:12:40 2010 +0300
+++ b/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp Wed Aug 18 09:45:25 2010 +0300
@@ -34,68 +34,78 @@
#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");
+static const char PIXMAP_ICON[] = "qtg_small_image";
+static const char CORRUPTED_PIXMAP_ICON[] = "qtg_large_corrupted";
+static const char VIDEO_MIMETYPE[] = "video";
+
+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();
}
//---------------------------------------------------------------
-// UniViewerPixmapWidget::init
-// @see header file
-//---------------------------------------------------------------
-void UniViewerPixmapWidget::init()
-{
- mThumbnailManager = new ThumbnailManager(this);
- mThumbnailManager->setMode(ThumbnailManager::Default);
- mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
- mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
-
- connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)), this,
- SLOT(thumbnailReady(QPixmap, void*, int, int)));
-
-}
-
-//---------------------------------------------------------------
// UniViewerPixmapWidget::~UniViewerPixmapWidget
// @see header file
//---------------------------------------------------------------
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));
+ }
}
}
@@ -168,6 +178,49 @@
{
}
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::regrabGesture
+// @see header file
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::regrabGesture()
+{
+ this->grabGesture(Qt::TapGesture);
+}
+
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::thumbnailReady
+// @see header
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::thumbnailReady(const QPixmap& pixmap, void *data, int id, int error)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(id)
+ this->grabGesture(Qt::TapGesture);
+ if (error) {
+ emit thumbnailFound(false, mInfo);
+ }
+ else {
+ this->setIcon(HbIcon(pixmap));
+ this->hide();
+ emit thumbnailFound(true, NULL);
+ }
+}
+
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::init
+// @see header file
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::init()
+{
+ mThumbnailManager = new ThumbnailManager(this);
+ mThumbnailManager->setMode(ThumbnailManager::CropToAspectRatio);
+ mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
+ mThumbnailManager->setThumbnailSize(getThumbnailSize());
+
+ connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)), this,
+ SLOT(thumbnailReady(QPixmap, void*, int, int)));
+}
+
//----------------------------------------------------------------------------
// UniViewerPixmapWidget::handleShortTap
// @see header file
@@ -197,27 +250,23 @@
}
//---------------------------------------------------------------
-// UniViewerPixmapWidget::regrabGesture
+// UniViewerPixmapWidget::getThumbnailSize
// @see header file
//---------------------------------------------------------------
-void UniViewerPixmapWidget::regrabGesture()
+QSize UniViewerPixmapWidget::getThumbnailSize()
{
- this->grabGesture(Qt::TapGesture);
+ QSize thumbnailSize(1, 1);
+ HbWidget *parent = qobject_cast<HbWidget *>(this->parentWidget());
+
+ if (parent) {
+ qreal thumbnailWidth = 0.0;
+ qreal thumbnailHeight = 0.0;
+ parent->style()->parameter("hb-param-screen-short-edge", thumbnailWidth);
+ thumbnailHeight = (thumbnailWidth * HEIGHT_RATIO) / WIDTH_RATIO;
+ thumbnailSize.setHeight(qRound(thumbnailHeight));
+ thumbnailSize.setWidth(qRound(thumbnailWidth));
+ }
+ return thumbnailSize;
}
-//---------------------------------------------------------------
-// UniViewerPixmapWidget::thumbnailReady
-// @see header
-//---------------------------------------------------------------
-void UniViewerPixmapWidget::thumbnailReady(const QPixmap& pixmap, void *data, int id, int error)
-{
- Q_UNUSED(data)
- Q_UNUSED(id)
- this->grabGesture(Qt::TapGesture);
- if (!error) {
- this->setIcon(HbIcon(pixmap));
- this->hide();
- this->updateGeometry();
- }
-}
// EOF