videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp
changeset 62 0e1e938beb1a
parent 52 e3cecb93e76a
--- a/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp	Thu Sep 02 20:28:16 2010 +0300
+++ b/videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp	Fri Sep 17 08:30:05 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 24.1.3 %
+// Version : %version: 24.1.5 %
 
 // INCLUDE FILES
 #include <qapplication.h>
@@ -30,7 +30,7 @@
 
 #include "videothumbnaildata_p.h"
 #include "videocollectionwrapper.h"
-#include "videosortfilterproxymodel.h"
+#include "videoproxymodelgeneric.h"
 #include "videothumbnailfetcher.h"
 #include "videocollectiontrace.h"
 
@@ -182,10 +182,6 @@
 	FUNC_LOG;
     if(!mSignalsConnected)
     {
-        VideoSortFilterProxyModel *model = 
-                VideoCollectionWrapper::instance().getModel(VideoCollectionCommon::EModelTypeAllVideos);
-        if(!model)
-            return -1;
         if(!connect(mThumbnailFetcher, SIGNAL(thumbnailReady( QPixmap , const TMPXItemId &, int )),
                     this, SLOT(thumbnailReadySlot( QPixmap , const TMPXItemId &, int))) ||
             !connect(mThumbnailFetcher, SIGNAL(allThumbnailsFetched()),
@@ -228,6 +224,7 @@
 int VideoThumbnailDataPrivate::startFetchingThumbnails(const QList<QModelIndex> &indexes, int priority)
 {
 	FUNC_LOG;
+	
     if(!mCurrentModel || !mThumbnailFetcher)
     {
         return -1;
@@ -410,19 +407,26 @@
 //
 const QIcon* VideoThumbnailDataPrivate::defaultThumbnail(const TMPXItemId &mediaId)
 {
+    FUNC_LOG;
+    
+    if(!mBackgroundFetchingEnabled)
+    {
+        return 0;
+    }
+    
     const TMPXItemId defaultIdVideo(KMaxTUint32-1, KVcxMvcMediaTypeVideo);
     const TMPXItemId defaultIdAlbum(KMaxTUint32-1, KVcxMvcMediaTypeAlbum);
     const TMPXItemId defaultIdDownloads(KVcxMvcCategoryIdDownloads, KVcxMvcMediaTypeCategory);
     const TMPXItemId defaultIdCaptured(KVcxMvcCategoryIdCaptured, KVcxMvcMediaTypeCategory);
 
     // Default thumbnail for video
-    if(mediaId.iId2 == KVcxMvcMediaTypeVideo) 
+    if(mediaId.iId2 == KVcxMvcMediaTypeVideo)
     {
         if(!mDefaultThumbnails.contains(defaultIdVideo))
         {
             mDefaultThumbnails[defaultIdVideo] = loadIcon("qtg_large_video");
         }
-        return &mDefaultThumbnails[defaultIdVideo].qicon();
+        return mDefaultThumbnails[defaultIdVideo];
     }
     else
     {
@@ -433,7 +437,7 @@
             {
                 mDefaultThumbnails[defaultIdAlbum] = loadIcon("qtg_large_video_collection");
             }
-            return &mDefaultThumbnails[defaultIdAlbum].qicon();
+            return mDefaultThumbnails[defaultIdAlbum];
         }
 
         // Thumbnails for default collections.
@@ -445,7 +449,7 @@
                 {
                     mDefaultThumbnails[defaultIdDownloads] = loadIcon("qtg_large_video_download");
                 }
-                return &mDefaultThumbnails[defaultIdDownloads].qicon();
+                return mDefaultThumbnails[defaultIdDownloads];
             }
             
             case KVcxMvcCategoryIdCaptured:
@@ -454,16 +458,12 @@
                 {
                     mDefaultThumbnails[defaultIdCaptured] = loadIcon("qtg_large_video_capture");
                 }
-                return &mDefaultThumbnails[defaultIdCaptured].qicon();
+                return mDefaultThumbnails[defaultIdCaptured];
             }
 
             default:
             {
-                if(!mDefaultThumbnails.contains(defaultIdAlbum))
-                {
-                    mDefaultThumbnails[defaultIdAlbum] = loadIcon("qtg_large_video_collection");
-                }
-                return &mDefaultThumbnails[defaultIdAlbum].qicon();
+                return 0;
             }
         }
     }
@@ -473,50 +473,30 @@
 // VideoThumbnailDataPrivate::loadIcon()
 // -----------------------------------------------------------------------------
 //
-HbIcon VideoThumbnailDataPrivate::loadIcon(QString iconName)
-{
-    HbIcon icon(iconName);
+QIcon *VideoThumbnailDataPrivate::loadIcon(QString iconName)
+{   
+    FUNC_LOG;
     
-    if(!icon.isNull())
+    HbIcon resource(iconName);
+    QIcon *icon = 0;
+    
+    if(!resource.isNull())
     {
+        // Set matching height, width is adjusted automaticly.
+        resource.setHeight(DEFAULT_THUMBNAIL_HEIGHT);
+        
         QPixmap dest = QPixmap(DEFAULT_THUMBNAIL_WIDTH, DEFAULT_THUMBNAIL_HEIGHT);
-
-        // Scale the icon into the thumbnail area.
-        QPixmap source = icon.pixmap();
-        // Smooth scaling is very expensive (size^2). Therefore we reduce the size
-        // to 2x of the destination size and using fast transformation before doing final smooth scaling.
-        if(source.size().width() > (6*dest.width()) || source.size().height() > (6*dest.height()))
-        {
-            QSize intermediate_size = QSize( dest.width() * 2, dest.height() * 2 );
-            source = source.scaled(intermediate_size, Qt::KeepAspectRatio, Qt::FastTransformation );
-        }
-        QPixmap scaled = source.scaled(dest.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
-
-        // Center the icon.
-        int xDiff = 0;
-        int yDiff = 0;
-        if(dest.width() > scaled.width())
-        {
-            xDiff = (dest.width() - scaled.width()) / 2;
-        }
-        if(dest.height() > scaled.height())
-        {
-            yDiff = (dest.height() - scaled.height()) / 2;
-        }
         
-        // Paint it.
         QPainter painter(&dest);
         painter.setCompositionMode(QPainter::CompositionMode_Source);
-        painter.fillRect(dest.rect(), Qt::transparent);
-        painter.drawPixmap(xDiff, yDiff, scaled.width(), scaled.height(), scaled);
+        painter.fillRect(dest.rect(), Qt::transparent);        
+        resource.paint(&painter, dest.rect());
         painter.end();
         
-        return HbIcon(dest);
+        icon = new QIcon(dest);
     }
-    else
-    {
-        return HbIcon();
-    }
+    
+    return icon;
 }
 
 // -----------------------------------------------------------------------------
@@ -590,6 +570,13 @@
     // Clear data.
     mReadyThumbnailMediaIds.clear();
     mThumbnailData.clear();
+    
+    QHash<TMPXItemId, QIcon *>::const_iterator iter = mDefaultThumbnails.constBegin();
+    while(iter != mDefaultThumbnails.constEnd())
+    {
+        delete *iter;
+        iter++;
+    }
     mDefaultThumbnails.clear();
 }
 
@@ -597,7 +584,7 @@
 // VideoThumbnailDataPrivate::startBackgroundFetching()
 // -----------------------------------------------------------------------------
 //
-void VideoThumbnailDataPrivate::startBackgroundFetching(VideoSortFilterProxyModel *model, int fetchIndex)
+void VideoThumbnailDataPrivate::startBackgroundFetching(VideoProxyModelGeneric *model, int fetchIndex)
 {
 	FUNC_LOG;