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 } |