videocollection/videocollectionwrapper/src/videothumbnaildata_p.cpp
changeset 38 ff53afa8ad05
parent 37 4eb2df7f7cbe
child 44 518105d52e45
equal deleted inserted replaced
37:4eb2df7f7cbe 38:ff53afa8ad05
    13 *
    13 *
    14 * Description:  VideoThumbnailDataPrivate class implementation
    14 * Description:  VideoThumbnailDataPrivate class implementation
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 // Version : %version: 21 %
    18 // Version : %version: 24 %
    19 
    19 
    20 // INCLUDE FILES
    20 // INCLUDE FILES
    21 #include <qapplication.h>
    21 #include <qapplication.h>
    22 #include <qpixmap.h>
    22 #include <qpixmap.h>
    23 #include <qtimer.h>
    23 #include <qtimer.h>
       
    24 #include <qpainter.h>
    24 #include <mpxmediageneraldefs.h>
    25 #include <mpxmediageneraldefs.h>
    25 #include <hbicon.h>
    26 #include <hbicon.h>
    26 
    27 
    27 #include <vcxmyvideosdefs.h>
    28 #include <vcxmyvideosdefs.h>
    28 #include <videocollectioncommon.h>
    29 #include <videocollectioncommon.h>
    43 // are signaled.
    44 // are signaled.
    44 const int THUMBNAIL_READY_SIGNAL_TIMEOUT = 50;
    45 const int THUMBNAIL_READY_SIGNAL_TIMEOUT = 50;
    45 // Priority for background thumbnail fetches.
    46 // Priority for background thumbnail fetches.
    46 const int BACKGROUND_FETCH_PRIORITY = 3000;
    47 const int BACKGROUND_FETCH_PRIORITY = 3000;
    47 
    48 
       
    49 // Size for default thumbnail, these match with large thumbnail in lists. 
       
    50 const int DEFAULT_THUMBNAIL_WIDTH = 114;
       
    51 const int DEFAULT_THUMBNAIL_HEIGHT = 64;
       
    52 
    48 /**
    53 /**
    49  * global qHash function required fo creating hash values for TMPXItemId -keys
    54  * global qHash function required fo creating hash values for TMPXItemId -keys
    50  */
    55  */
    51 inline uint qHash(TMPXItemId key) 
    56 inline uint qHash(TMPXItemId key) 
    52 { 
    57 {
    53     QPair<uint, uint> keyPair(key.iId1, key.iId2); 
    58     QPair<uint, uint> keyPair(key.iId1, key.iId2);
    54 
    59 
    55     return qHash(keyPair);
    60     return qHash(keyPair);
    56 }
    61 }
    57 
    62 
    58 // ================= MEMBER FUNCTIONS =======================
    63 // ================= MEMBER FUNCTIONS =======================
   428     // Default thumbnail for video
   433     // Default thumbnail for video
   429     if(mediaId.iId2 == KVcxMvcMediaTypeVideo) 
   434     if(mediaId.iId2 == KVcxMvcMediaTypeVideo) 
   430     {
   435     {
   431         if(!mDefaultThumbnails.contains(defaultIdVideo))
   436         if(!mDefaultThumbnails.contains(defaultIdVideo))
   432         {
   437         {
   433             mDefaultThumbnails[defaultIdVideo] = HbIcon(":/icons/default_thumbnail_video.svg");
   438             mDefaultThumbnails[defaultIdVideo] = loadIcon("qtg_large_video");
   434         }
   439         }
   435         return &mDefaultThumbnails[defaultIdVideo].qicon();
   440         return &mDefaultThumbnails[defaultIdVideo].qicon();
   436     }
   441     }
   437     else
   442     else
   438     {
   443     {
   439         // Default thumbnail for user defined album.
   444         // Default thumbnail for user defined album.
   440         if(mediaId.iId2 == KVcxMvcMediaTypeAlbum)
   445         if(mediaId.iId2 == KVcxMvcMediaTypeAlbum)
   441         {
   446         {
   442             if(!mDefaultThumbnails.contains(defaultIdAlbum))
   447             if(!mDefaultThumbnails.contains(defaultIdAlbum))
   443             {
   448             {
   444                 mDefaultThumbnails[defaultIdAlbum] = HbIcon("qtg_large_video_collection");
   449                 mDefaultThumbnails[defaultIdAlbum] = loadIcon("qtg_large_video_collection");
   445             }
   450             }
   446             return &mDefaultThumbnails[defaultIdAlbum].qicon();
   451             return &mDefaultThumbnails[defaultIdAlbum].qicon();
   447         }
   452         }
   448 
   453 
   449         // Thumbnails for default collections.
   454         // Thumbnails for default collections.
   451         {
   456         {
   452             case KVcxMvcCategoryIdDownloads:
   457             case KVcxMvcCategoryIdDownloads:
   453             {
   458             {
   454                 if(!mDefaultThumbnails.contains(defaultIdDownloads))
   459                 if(!mDefaultThumbnails.contains(defaultIdDownloads))
   455                 {
   460                 {
   456                     mDefaultThumbnails[defaultIdDownloads] = HbIcon("qtg_large_video_download");
   461                     mDefaultThumbnails[defaultIdDownloads] = loadIcon("qtg_large_video_download");
   457                 }
   462                 }
   458                 return &mDefaultThumbnails[defaultIdDownloads].qicon();
   463                 return &mDefaultThumbnails[defaultIdDownloads].qicon();
   459             }
   464             }
   460             
   465             
   461             case KVcxMvcCategoryIdCaptured:
   466             case KVcxMvcCategoryIdCaptured:
   462             {
   467             {
   463                 if(!mDefaultThumbnails.contains(defaultIdCaptured))
   468                 if(!mDefaultThumbnails.contains(defaultIdCaptured))
   464                 {
   469                 {
   465                     mDefaultThumbnails[defaultIdCaptured] = HbIcon("qtg_large_video_capture");
   470                     mDefaultThumbnails[defaultIdCaptured] = loadIcon("qtg_large_video_capture");
   466                 }
   471                 }
   467                 return &mDefaultThumbnails[defaultIdCaptured].qicon();
   472                 return &mDefaultThumbnails[defaultIdCaptured].qicon();
   468             }
   473             }
   469 
   474 
   470             default:
   475             default:
   471             {
   476             {
   472                 if(!mDefaultThumbnails.contains(defaultIdAlbum))
   477                 if(!mDefaultThumbnails.contains(defaultIdAlbum))
   473                 {
   478                 {
   474                     mDefaultThumbnails[defaultIdAlbum] = HbIcon("qtg_large_video_collection");
   479                     mDefaultThumbnails[defaultIdAlbum] = loadIcon("qtg_large_video_collection");
   475                 }
   480                 }
   476                 return &mDefaultThumbnails[defaultIdAlbum].qicon();
   481                 return &mDefaultThumbnails[defaultIdAlbum].qicon();
   477             }
   482             }
   478         }
   483         }
       
   484     }
       
   485 }
       
   486 
       
   487 // -----------------------------------------------------------------------------
       
   488 // VideoThumbnailDataPrivate::loadIcon()
       
   489 // -----------------------------------------------------------------------------
       
   490 //
       
   491 HbIcon VideoThumbnailDataPrivate::loadIcon(QString iconName)
       
   492 {
       
   493     HbIcon icon(iconName);
       
   494     
       
   495     if(!icon.isNull())
       
   496     {
       
   497         QPixmap dest = QPixmap(DEFAULT_THUMBNAIL_WIDTH, DEFAULT_THUMBNAIL_HEIGHT);
       
   498 
       
   499         // Scale the icon into the thumbnail area.
       
   500         QPixmap source = icon.pixmap();
       
   501         // Smooth scaling is very expensive (size^2). Therefore we reduce the size
       
   502         // to 2x of the destination size and using fast transformation before doing final smooth scaling.
       
   503         if(source.size().width() > (6*dest.width()) || source.size().height() > (6*dest.height()))
       
   504         {
       
   505             QSize intermediate_size = QSize( dest.width() * 2, dest.height() * 2 );
       
   506             source = source.scaled(intermediate_size, Qt::KeepAspectRatio, Qt::FastTransformation );
       
   507         }
       
   508         QPixmap scaled = source.scaled(dest.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
       
   509 
       
   510         // Center the icon.
       
   511         int xDiff = 0;
       
   512         int yDiff = 0;
       
   513         if(dest.width() > scaled.width())
       
   514         {
       
   515             xDiff = (dest.width() - scaled.width()) / 2;
       
   516         }
       
   517         if(dest.height() > scaled.height())
       
   518         {
       
   519             yDiff = (dest.height() - scaled.height()) / 2;
       
   520         }
       
   521         
       
   522         // Paint it.
       
   523         QPainter painter(&dest);
       
   524         painter.setCompositionMode(QPainter::CompositionMode_Source);
       
   525         painter.fillRect(dest.rect(), Qt::transparent);
       
   526         painter.drawPixmap(xDiff, yDiff, scaled.width(), scaled.height(), scaled);
       
   527         painter.end();
       
   528         
       
   529         return HbIcon(dest);
       
   530     }
       
   531     else
       
   532     {
       
   533         return HbIcon();
   479     }
   534     }
   480 }
   535 }
   481 
   536 
   482 // -----------------------------------------------------------------------------
   537 // -----------------------------------------------------------------------------
   483 // VideoThumbnailDataPrivate::removeThumbnail()
   538 // VideoThumbnailDataPrivate::removeThumbnail()