ui/views/fullscreenview/src/glxcoverflow.cpp
changeset 62 36d93b4dc635
parent 58 383b67fbdb11
child 71 27f2d7aec52a
equal deleted inserted replaced
58:383b67fbdb11 62:36d93b4dc635
    32 #include "glxviewids.h"
    32 #include "glxviewids.h"
    33 
    33 
    34 #define GLX_COVERFLOW_SPEED  32
    34 #define GLX_COVERFLOW_SPEED  32
    35 #define GLX_BOUNCEBACK_SPEED 16
    35 #define GLX_BOUNCEBACK_SPEED 16
    36 #define GLX_BOUNCEBACK_DELTA 8
    36 #define GLX_BOUNCEBACK_DELTA 8
       
    37 #define MAX_GIF_DIMENSION    640
       
    38 const int KBytesInMB = 1024 * 1024;
    37 
    39 
    38 GlxCoverFlow::GlxCoverFlow( QGraphicsItem *parent ) 
    40 GlxCoverFlow::GlxCoverFlow( QGraphicsItem *parent ) 
    39      : HbWidget( parent ), 
    41      : HbWidget( parent ), 
    40        mSelItemIndex ( 0 ),
    42        mSelItemIndex ( 0 ),
    41        mRows( 0 ),
    43        mRows( 0 ),
    74         mIconItem[i]->grabGesture( Qt::PinchGesture, Qt::ReceivePartialGestures );
    76         mIconItem[i]->grabGesture( Qt::PinchGesture, Qt::ReceivePartialGestures );
    75         mIconItem[i]->installSceneEventFilter( mMultitouchFilter );
    77         mIconItem[i]->installSceneEventFilter( mMultitouchFilter );
    76         mIconItem[i]->setBrush( QBrush( Qt::black ) );
    78         mIconItem[i]->setBrush( QBrush( Qt::black ) );
    77         mIconItem[i]->setSize( QSize( 0, 0 ) );
    79         mIconItem[i]->setSize( QSize( 0, 0 ) );
    78         mIconItem[i]->setAlignment( Qt::AlignCenter );
    80         mIconItem[i]->setAlignment( Qt::AlignCenter );
       
    81         mIconItem[i]->setIconScaling( false );
    79         mIconItem[i]->setObjectName( QString( "Cover%1" ).arg( i ) );
    82         mIconItem[i]->setObjectName( QString( "Cover%1" ).arg( i ) );
    80     }
    83     }
    81     
    84     
    82     mIsInit = true;
    85     mIsInit = true;
    83     mUiOn = false;
    86     mUiOn = false;
   197     int index = 0;
   200     int index = 0;
   198     for (int i = 0; i < NBR_ICON_ITEM ; i++) {
   201     for (int i = 0; i < NBR_ICON_ITEM ; i++) {
   199         index = calculateIndex( mSelIndex + i - 2 );
   202         index = calculateIndex( mSelIndex + i - 2 );
   200         if ( index == startIndex.row() ) {
   203         if ( index == startIndex.row() ) {
   201             index = ( mSelItemIndex + i - 2 + NBR_ICON_ITEM ) % NBR_ICON_ITEM;
   204             index = ( mSelItemIndex + i - 2 + NBR_ICON_ITEM ) % NBR_ICON_ITEM;
   202             qDebug("GlxCoverFlow::dataChanged index = %d mSelItemIndex = %d ", index, mSelItemIndex );
       
   203             mIconItem[ index ]->setIcon( getIcon( startIndex.row() ) );
   205             mIconItem[ index ]->setIcon( getIcon( startIndex.row() ) );
   204             if ( index == mSelItemIndex ) {
   206             if ( index == mSelItemIndex ) {
   205                 playAnimation( );
   207                 playAnimation( );
   206             }
   208             }
   207         }
   209         }
   612         return variant.value< QString > () ;
   614         return variant.value< QString > () ;
   613     }
   615     }
   614     return QString();
   616     return QString();
   615 }
   617 }
   616 
   618 
       
   619 QSize GlxCoverFlow::getImageDimension( int index )
       
   620 {
       
   621     QVariant variant = mModel->data( mModel->index( index, 0 ), GlxDimensionsRole );
       
   622     if ( variant.isValid() && variant.canConvert< QSize > () ){
       
   623         return variant.value< QSize > () ;
       
   624     }
       
   625     return QSize();    
       
   626 }
       
   627 
       
   628 int GlxCoverFlow::getImageSize( int index )
       
   629 {
       
   630     QVariant variant = mModel->data( mModel->index( index, 0 ), GlxSizeRole );
       
   631     if ( variant.isValid() && variant.canConvert< int > () ){
       
   632         return variant.value< int > () ;
       
   633     }
       
   634     return 0;     
       
   635 }
       
   636 
       
   637 
   617 bool GlxCoverFlow::isAnimatedImage( int index )
   638 bool GlxCoverFlow::isAnimatedImage( int index )
   618 {
   639 {
   619     int frameCount = 0;
   640     int frameCount = 0;
   620     QVariant variant = mModel->data( mModel->index( index, 0 ), GlxFrameCount );
   641     QVariant variant = mModel->data( mModel->index( index, 0 ), GlxFrameCount );
   621     if ( variant.isValid() && variant.canConvert< int > () ) {
   642     if ( variant.isValid() && variant.canConvert< int > () ) {
   622          frameCount = variant.value< int > () ;
   643          frameCount = variant.value< int > () ;
   623     }
   644     }
   624     return frameCount > 1 ? true : false ;
   645     
   625 }
   646     if ( frameCount > 1 ) {
       
   647         int size = getImageSize( index );
       
   648         QSize dimn = getImageDimension( index );
       
   649         
       
   650         if ( size <=  KBytesInMB  && dimn.width() <= MAX_GIF_DIMENSION && dimn.height() <= MAX_GIF_DIMENSION  ) {
       
   651             return true;
       
   652         }
       
   653     }
       
   654     return false ;
       
   655 }