ui/viewutilities/effectengine/src/glxeffectengine.cpp
changeset 69 45459746d5e8
parent 44 aa2fa096cbfb
equal deleted inserted replaced
65:ccee5c4b0de4 69:45459746d5e8
    28     : mNbrEffectRunning( 0 ), 
    28     : mNbrEffectRunning( 0 ), 
    29       mEffectPlugin( NULL ), 
    29       mEffectPlugin( NULL ), 
    30       mTransitionEffect( NO_EFFECT ),
    30       mTransitionEffect( NO_EFFECT ),
    31       mEffectResolver( NULL )
    31       mEffectResolver( NULL )
    32 {
    32 {
    33     qDebug("GlxSlideShowEffectEngine::GlxSlideShowEffectEngine()");
    33     qDebug( "GlxSlideShowEffectEngine::GlxSlideShowEffectEngine()" );
    34     mTransitionEffectList.clear();
    34     mTransitionEffectList.clear();
    35 }
    35 }
    36 
    36 
    37 GlxEffectEngine::~GlxEffectEngine()
    37 GlxEffectEngine::~GlxEffectEngine()
    38 {
    38 {
    39     qDebug("GlxSlideShowEffectEngine::~GlxSlideShowEffectEngine()");
    39     qDebug( "GlxSlideShowEffectEngine::~GlxSlideShowEffectEngine()" );
    40     delete mEffectResolver;
    40     delete mEffectResolver;
    41     mEffectResolver = NULL;
    41     mEffectResolver = NULL;
    42 	
    42 	
    43     cleanTransitionEfffect();
    43     cleanTransitionEfffect();
    44 }
    44 }
    45 
    45 
    46 void GlxEffectEngine::registerEffect(const QString &itemType)
    46 void GlxEffectEngine::registerEffect( const QString &itemType )
    47 {
    47 {
    48     GlxSettingInterface *settingObj = GlxSettingInterface::instance(); // NO ownership 
    48     GlxSettingInterface *settingObj = GlxSettingInterface::instance(); // NO ownership 
    49     if ( mEffectResolver == NULL ) {
    49     if ( mEffectResolver == NULL ) {
    50         mEffectResolver = new GlxEffectPluginResolver();
    50         mEffectResolver = new GlxEffectPluginResolver();
    51     }
    51     }
    52     /* read the selected effect through the centrep and get the effect plugin object through effect plugin resolver*/
    52     /* read the selected effect through the centrep and get the effect plugin object through effect plugin resolver*/
    53     mEffectPlugin = mEffectResolver->effectPlugin( settingObj->slideShowEffectId( settingObj->slideShowEffectIndex ( ) ) ); //No ownership
    53     mEffectPlugin = mEffectResolver->effectPlugin( settingObj->slideShowEffectId( settingObj->slideShowEffectIndex ( ) ) ); //No ownership
    54     
    54     
    55     QList <QString > effectPathList = mEffectPlugin->effectFileList();
    55     QList <QString > effectPathList = mEffectPlugin->effectFileList();
    56     
    56     
    57     qDebug("GlxSlideShowEffectEngine::registerEffect() item type %s file path %s", itemType.utf16(), effectPathList[0].utf16());
    57     qDebug( "GlxSlideShowEffectEngine::registerEffect() item type %s file path %s", itemType.utf16(), effectPathList[0].utf16() );
    58     for ( int i = 0; i < effectPathList.count() ; ++i ) {
    58     for ( int i = 0; i < effectPathList.count() ; ++i ) {
    59         HbEffect::add(itemType, effectPathList.at(i), QString( "Click%1" ).arg(i));
    59         HbEffect::add( itemType, effectPathList.at( i ), QString( "Click%1" ).arg( i ) );
    60     }    
    60     }    
    61 }
    61 }
    62 
    62 
    63 void GlxEffectEngine::deRegisterEffect(const QString &itemType)
    63 void GlxEffectEngine::deRegisterEffect( const QString &itemType )
    64 {
    64 {
    65     qDebug("GlxSlideShowEffectEngine::deRegisterEffect() item type %s", itemType.utf16());
    65     qDebug( "GlxSlideShowEffectEngine::deRegisterEffect() item type %s", itemType.utf16() );
    66     QList <QString > effectPathList = mEffectPlugin->effectFileList();
    66     QList <QString > effectPathList = mEffectPlugin->effectFileList();
    67     for ( int i = 0; i < effectPathList.count() ; ++i ) {
    67     for ( int i = 0; i < effectPathList.count() ; ++i ) {
    68         HbEffect::remove(itemType, effectPathList.at(i), QString( "Click%1" ).arg(i));
    68         HbEffect::remove( itemType, effectPathList.at( i ), QString( "Click%1" ).arg( i ) );
    69     }
    69     }
    70     mEffectPlugin = NULL;
    70     mEffectPlugin = NULL;
    71 }
    71 }
    72 
    72 
    73 void GlxEffectEngine::registerTransitionEffect()  
    73 void GlxEffectEngine::registerTransitionEffect()  
    74 {
    74 {
    75     qDebug("GlxSlideShowEffectEngine::registerTransitionEffect()");
    75     qDebug( "GlxSlideShowEffectEngine::registerTransitionEffect()" );
    76     initTransitionEffect();
    76     initTransitionEffect();
    77 }
    77 }
    78 
    78 
    79 void GlxEffectEngine::deregistertransitionEffect()
    79 void GlxEffectEngine::deregistertransitionEffect()
    80 {
    80 {
    81     qDebug("GlxSlideShowEffectEngine::deregisterTransitionEffect()");
    81     qDebug( "GlxSlideShowEffectEngine::deregisterTransitionEffect()" );
    82     cleanTransitionEfffect();
    82     cleanTransitionEfffect();
    83 }
    83 }
    84 
    84 
    85 void GlxEffectEngine::runEffect(QGraphicsItem *  item, const QString &  itemType )
    85 void GlxEffectEngine::runEffect( QGraphicsItem *  item, const QString &  itemType )
    86 {
    86 {
    87     qDebug("GlxSlideShowEffectEngine::runEffect()1 item type %s", itemType.utf16());
    87     qDebug( "GlxSlideShowEffectEngine::runEffect()1 item type %s", itemType.utf16() );
    88     HbEffect::start(item, itemType, QString( "Click1" ), this, "slideShowEffectFinished");
    88     HbEffect::start( item, itemType, QString( "Click1" ), this, "slideShowEffectFinished" );
    89     ++mNbrEffectRunning;
    89     ++mNbrEffectRunning;
    90 }
    90 }
    91 
    91 
    92 void GlxEffectEngine::runEffect(QList< QGraphicsItem * > &  items, const QString &  itemType )
    92 void GlxEffectEngine::runEffect( QList< QGraphicsItem * > &  items, const QString &  itemType )
    93 {
    93 {
    94     qDebug("GlxSlideShowEffectEngine::runEffect()2 item Type %s", itemType.utf16());
    94     qDebug( "GlxSlideShowEffectEngine::runEffect()2 item Type %s", itemType.utf16() );
    95     mEffectPlugin->setUpItems(items);
    95     mEffectPlugin->setUpItems(items);
    96     for ( int i = 0; i < items.count() ; ++i ) {
    96     for ( int i = 0; i < items.count() ; ++i ) {
    97         if ( mEffectPlugin->isAnimationLater(i) == FALSE ) {
    97         if ( mEffectPlugin->isAnimationLater( i ) == FALSE ) {
    98             HbEffect::start(items.at(i), itemType, QString( "Click%1").arg(i), this, "slideShowEffectFinished");
    98             HbEffect::start( items.at( i ), itemType, QString( "Click%1" ).arg( i ), this, "slideShowEffectFinished" );
    99         }
    99         }
   100         ++mNbrEffectRunning;
   100         ++mNbrEffectRunning;
   101     }
   101     }
   102 }
   102 }
   103 
   103 
   104 void GlxEffectEngine::runEffect(QList< QGraphicsItem * > &  items, GlxEffect transitionEffect)
   104 void GlxEffectEngine::runEffect( QList< QGraphicsItem * > &  items, GlxEffect transitionEffect )
   105 {
   105 {
   106     qDebug("GlxSlideShowEffectEngine::runEffect()3 effect type %d ", transitionEffect);
   106     qDebug( "GlxSlideShowEffectEngine::runEffect()3 effect type %d ", transitionEffect );
   107     
   107     
   108     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
   108     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
   109     
   109     
   110     if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
   110     if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
   111          return;
   111          return;
   114     mTransitionEffect = transitionEffect;
   114     mTransitionEffect = transitionEffect;
   115     for ( int i = 0; i < effectSetting->count() ; ++i) {
   115     for ( int i = 0; i < effectSetting->count() ; ++i) {
   116         ++mNbrEffectRunning;
   116         ++mNbrEffectRunning;
   117         if ( ( i == effectSetting->count() -1) && effectSetting->isTransitionLater() )
   117         if ( ( i == effectSetting->count() -1) && effectSetting->isTransitionLater() )
   118         {
   118         {
   119             effectSetting->setAnimationItem( items.at(i) );
   119             effectSetting->setAnimationItem( items.at( i ) );
   120             items.at(i)->hide();
   120             items.at( i )->hide();
   121         }
   121         }
   122         else {
   122         else {
   123             HbEffect::start(items.at(i), effectSetting->itemType().at(i), effectSetting->eventType().at(i), this, "transitionEffectFinished");
   123             HbEffect::start( items.at( i ), effectSetting->itemType().at( i ), effectSetting->eventType().at( i ), this, "transitionEffectFinished" );
   124         }
   124         }
   125     }    
   125     }    
   126 }
   126 }
   127 
   127 
   128 void GlxEffectEngine::cancelEffect(QGraphicsItem *  item)
   128 void GlxEffectEngine::cancelEffect( QGraphicsItem *  item )
   129 {
   129 {
   130     if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) {
   130     if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) {
   131         HbEffect::cancel( item, QString( "Click1" ) );
   131         HbEffect::cancel( item, QString( "Click1" ) );
   132     }
   132     }
   133 }
   133 }
   134 
   134 
   135 void GlxEffectEngine::cancelEffect(const QList< QGraphicsItem * > &  items)
   135 void GlxEffectEngine::cancelEffect( const QList< QGraphicsItem * > &  items )
   136 {
   136 {
   137     for ( int i = 0; i < items.count() ; ++i ) {    
   137     for ( int i = 0; i < items.count() ; ++i ) {    
   138         if ( HbEffect::effectRunning( items.at(i), QString( "Click%1").arg(i) ) ) {
   138         if ( HbEffect::effectRunning( items.at( i ), QString( "Click%1" ).arg( i ) ) ) {
   139             HbEffect::cancel( items.at(i), QString( "Click%1").arg(i) );
   139             HbEffect::cancel( items.at( i ), QString( "Click%1" ).arg( i ) );
   140         }
   140         }
   141     }
   141     }
   142 }
   142 }
   143 
   143 
   144 void GlxEffectEngine::cancelEffect(QList< QGraphicsItem * > &  items, GlxEffect transitionEffect)
   144 void GlxEffectEngine::cancelEffect( QList< QGraphicsItem * > &  items, GlxEffect transitionEffect )
   145 {
   145 {
   146     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
   146     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
   147     
   147     
   148     if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
   148     if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
   149          return;
   149          return;
   150     }
   150     }
   151     
   151     
   152     for ( int i = 0; i < effectSetting->count() ; ++i) {
   152     for ( int i = 0; i < effectSetting->count() ; ++i) {
   153         HbEffect::cancel(items.at(i), effectSetting->eventType().at(i) );
   153         HbEffect::cancel(items.at( i ), effectSetting->eventType().at( i ) );
   154     }     
   154     }     
   155 }
   155 }
   156 
   156 
   157 bool GlxEffectEngine::isEffectRuning(QGraphicsItem *  item)
   157 bool GlxEffectEngine::isEffectRuning( QGraphicsItem *  item )
   158 {
   158 {
   159     if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) {
   159     if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) {
   160         return true;
   160         return true;
   161     }
   161     }
   162     return false;
   162     return false;
   163 }
   163 }
   164 
   164 
   165 bool GlxEffectEngine::isEffectRuning(const QList< QGraphicsItem * > &  items)
   165 bool GlxEffectEngine::isEffectRuning( const QList< QGraphicsItem * > &  items )
   166 {
   166 {
   167     for ( int i = 0; i < items.count() ; ++i ) {    
   167     for ( int i = 0; i < items.count() ; ++i ) {    
   168         if ( HbEffect::effectRunning( items.at(i), QString( "Click%1").arg(i) ) ) {
   168         if ( HbEffect::effectRunning( items.at( i ), QString( "Click%1" ).arg( i ) ) ) {
   169             return true;
   169             return true;
   170         }
   170         }
   171     }
   171     }
   172     return false;
   172     return false;
   173 }
   173 }
   174 
   174 
   175 void GlxEffectEngine::slideShowEffectFinished( const HbEffect::EffectStatus &status )
   175 void GlxEffectEngine::slideShowEffectFinished( const HbEffect::EffectStatus &status )
   176 {
   176 {
   177     Q_UNUSED( status )
   177     Q_UNUSED( status )
   178     qDebug("GlxSlideShowEffectEngine::slideShowEffectFinished() number of effect %d ", mNbrEffectRunning);
   178     qDebug( "GlxSlideShowEffectEngine::slideShowEffectFinished() number of effect %d ", mNbrEffectRunning);
   179     
   179     
   180     --mNbrEffectRunning;
   180     --mNbrEffectRunning;
   181     
   181     
   182     if ( mEffectPlugin->isAnimationLater( mNbrEffectRunning) ) {
   182     if ( mEffectPlugin->isAnimationLater( mNbrEffectRunning) ) {
   183         HbEffect::start( mEffectPlugin->animationItem(), mEffectPlugin->ItemType(), QString( "Click%1").arg(mNbrEffectRunning), this, "slideShowEffectFinished");
   183         HbEffect::start( mEffectPlugin->animationItem(), mEffectPlugin->ItemType(), QString( "Click%1" ).arg(mNbrEffectRunning), this, "slideShowEffectFinished" );
   184     }
   184     }
   185     
   185     
   186     if (mNbrEffectRunning == 0) {
   186     if (mNbrEffectRunning == 0) {
   187         emit effectFinished();
   187         emit effectFinished();
   188     }
   188     }
   189 }
   189 }
   190 
   190 
   191 void GlxEffectEngine::transitionEffectFinished( const HbEffect::EffectStatus &status )
   191 void GlxEffectEngine::transitionEffectFinished( const HbEffect::EffectStatus &status )
   192 {
   192 {
   193     Q_UNUSED( status )
   193     Q_UNUSED( status )
   194     qDebug("GlxSlideShowEffectEngine::transitionEffectFinished() number of effect %d status %d", mNbrEffectRunning, status.reason);
   194     qDebug( "GlxSlideShowEffectEngine::transitionEffectFinished() number of effect %d status %d", mNbrEffectRunning, status.reason);
   195     
   195     
   196     --mNbrEffectRunning;
   196     --mNbrEffectRunning;
   197     if ( mNbrEffectRunning == 1 ) {
   197     if ( mNbrEffectRunning == 1 ) {
   198         GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( mTransitionEffect );
   198         GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( mTransitionEffect );
   199         if (  effectSetting->isTransitionLater() ){ 
   199         if (  effectSetting->isTransitionLater() ){ 
   200             effectSetting->animationItem()->show();
   200             effectSetting->animationItem()->show();
   201             HbEffect::start( effectSetting->animationItem(), effectSetting->itemType().at(1), effectSetting->eventType().at(1), this, "transitionEffectFinished");
   201             HbEffect::start( effectSetting->animationItem(), effectSetting->itemType().at( 1 ), effectSetting->eventType().at( 1 ), this, "transitionEffectFinished" );
   202             mTransitionEffect = NO_EFFECT;
   202             mTransitionEffect = NO_EFFECT;
   203         }    
   203         }    
   204     }
   204     }
   205     
   205     
   206     if (mNbrEffectRunning == 0) {
   206     if (mNbrEffectRunning == 0) {
   210 
   210 
   211 void GlxEffectEngine::initTransitionEffect()
   211 void GlxEffectEngine::initTransitionEffect()
   212 {
   212 {
   213     GlxTransitionEffectSetting *effectSetting = NULL;
   213     GlxTransitionEffectSetting *effectSetting = NULL;
   214     
   214     
   215     effectSetting = new GlxTransitionEffectSetting(GRID_TO_FULLSCREEN);
   215     effectSetting = new GlxTransitionEffectSetting( GRID_TO_FULLSCREEN );
   216     for ( int i = 0; i < effectSetting->count(); ++i ) {
   216     for ( int i = 0; i < effectSetting->count(); ++i ) {
   217         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   217         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   218     }
   218     }
   219     mTransitionEffectList[GRID_TO_FULLSCREEN] = effectSetting;
   219     mTransitionEffectList[ GRID_TO_FULLSCREEN ] = effectSetting;
   220     
   220     
   221     effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_GRID );
   221     effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_GRID );
   222     for ( int i = 0; i < effectSetting->count(); ++i ) {
   222     for ( int i = 0; i < effectSetting->count(); ++i ) {
   223         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   223         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   224     }
   224     }
   225     mTransitionEffectList[FULLSCREEN_TO_GRID] = effectSetting;
   225     mTransitionEffectList[ FULLSCREEN_TO_GRID ] = effectSetting;
       
   226     
       
   227     effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_GRID_PORTRAIT );
       
   228     for ( int i = 0; i < effectSetting->count(); ++i ) {
       
   229         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
       
   230     }
       
   231     mTransitionEffectList[ FULLSCREEN_TO_GRID_PORTRAIT ] = effectSetting;
   226     
   232     
   227     effectSetting = new GlxTransitionEffectSetting( GRID_TO_ALBUMLIST );
   233     effectSetting = new GlxTransitionEffectSetting( GRID_TO_ALBUMLIST );
   228     for ( int i = 0; i < effectSetting->count(); ++i ) {
   234     for ( int i = 0; i < effectSetting->count(); ++i ) {
   229         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   235         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   230     }
   236     }
   231     mTransitionEffectList[GRID_TO_ALBUMLIST] = effectSetting;
   237     mTransitionEffectList[ GRID_TO_ALBUMLIST ] = effectSetting;
   232     
   238     
   233     effectSetting = new GlxTransitionEffectSetting( ALBUMLIST_TO_GRID );
   239     effectSetting = new GlxTransitionEffectSetting( ALBUMLIST_TO_GRID );
   234     for ( int i = 0; i < effectSetting->count(); ++i ) {
   240     for ( int i = 0; i < effectSetting->count(); ++i ) {
   235         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   241         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   236     }
   242     }
   237     mTransitionEffectList[ALBUMLIST_TO_GRID] = effectSetting;
   243     mTransitionEffectList[ ALBUMLIST_TO_GRID ] = effectSetting;
   238     
   244     
   239     effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_DETAIL );
   245     effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_DETAIL );
   240     for ( int i = 0; i < effectSetting->count(); ++i ) {
   246     for ( int i = 0; i < effectSetting->count(); ++i ) {
   241         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   247         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   242     }
   248     }
   243     mTransitionEffectList[FULLSCREEN_TO_DETAIL] = effectSetting; 
   249     mTransitionEffectList[ FULLSCREEN_TO_DETAIL ] = effectSetting; 
   244     
   250     
   245     effectSetting = new GlxTransitionEffectSetting( DETAIL_TO_FULLSCREEN );
   251     effectSetting = new GlxTransitionEffectSetting( DETAIL_TO_FULLSCREEN );
   246     for ( int i = 0; i < effectSetting->count(); ++i ) {
   252     for ( int i = 0; i < effectSetting->count(); ++i ) {
   247         HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ;
   253         HbEffect::add( effectSetting->itemType().at( i ), effectSetting->effectFileList().at( i ), effectSetting->eventType().at( i ) ) ;
   248     }
   254     }
   249     mTransitionEffectList[DETAIL_TO_FULLSCREEN] = effectSetting;    
   255     mTransitionEffectList[ DETAIL_TO_FULLSCREEN ] = effectSetting;    
   250 }
   256 }
   251 
   257 
   252 void GlxEffectEngine::cleanTransitionEfffect()
   258 void GlxEffectEngine::cleanTransitionEfffect()
   253 {	
   259 {	
   254     qDebug("GlxSlideShowEffectEngine::cleanTrnastionEfffect()");
   260     qDebug( "GlxSlideShowEffectEngine::cleanTrnastionEfffect()" );
   255     
   261     
   256     QHashIterator<GlxEffect, GlxTransitionEffectSetting *> iter( mTransitionEffectList );
   262     QHashIterator<GlxEffect, GlxTransitionEffectSetting *> iter( mTransitionEffectList );
   257 
   263 
   258     while ( iter.hasNext() ) {
   264     while ( iter.hasNext() ) {
   259         iter.next();
   265         iter.next();
   260         GlxTransitionEffectSetting *list =  iter.value();
   266         GlxTransitionEffectSetting *list =  iter.value();
   261         for ( int i = 0; i < list->count(); ++i ) {
   267         for ( int i = 0; i < list->count(); ++i ) {
   262             HbEffect::remove( list->itemType().at(i), list->effectFileList().at(i), list->eventType().at(i)) ;
   268             HbEffect::remove( list->itemType().at( i ), list->effectFileList().at( i ), list->eventType().at( i ) ) ;
   263         }
   269         }
   264         delete list;        
   270         delete list;        
   265     }
   271     }
   266     mTransitionEffectList.clear();
   272     mTransitionEffectList.clear();
   267 }
   273 }