diff -r c9962d0368d9 -r 525c140ec8db ui/views/effectengine/src/glxeffectengine.cpp --- a/ui/views/effectengine/src/glxeffectengine.cpp Wed Jun 16 13:08:54 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,462 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - -#include -#include "glxeffectpluginbase.h" -#include "glxforwardtransitionplugin.h" -#include "glxbackwardtransitionplugin.h" -#include "glxfadeplugin.h" -#include - -#include -#include -#include -const TUint32 KGlxTransitionEffect = 0x1; -const TUint32 KGlxTransitionDelay = 0x2; -const TUint32 KGlxSlow = 0x3; -const TUint32 KGlxMeduim = 0x4; -const TUint32 KGlxFast = 0x5; -const TUint32 KGlxWaveEffect = 0x6; -const TUint32 KGlxFadeEffect = 0x7; -const TUint32 KGlxZoomToFaceEffect = 0x8; -const TUint32 KCRUidGallery = 0x20007194; -GlxSlideShowSetting::GlxSlideShowSetting( int slideDelayTime, GlxEffect effect, GlxSlideShowMoveDir moveDir ) - : mSlideDelayTime(slideDelayTime), - mEffect ( effect), - mMoveDir ( moveDir) -{ - mSettingsManager = new XQSettingsManager(); - mTransitionEffectCenrepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery , KGlxTransitionEffect); - mTransitionDelayCenrepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery , KGlxTransitionDelay); - mSlowCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery ,KGlxSlow); - mMediumCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery ,KGlxMeduim); - mFastCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery ,KGlxFast); - - mWaveEffectCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery ,KGlxWaveEffect ); - mFadeEffectCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery ,KGlxFadeEffect); - mZoomEffectCenRepKey= new XQSettingsKey(XQSettingsKey::TargetCentralRepository, KCRUidGallery , KGlxZoomToFaceEffect ); -} - -GlxSlideShowSetting::~GlxSlideShowSetting( ) -{ - delete mFastCenRepKey; - delete mMediumCenRepKey; - delete mSlowCenRepKey; - delete mZoomEffectCenRepKey; - delete mFadeEffectCenRepKey; - delete mWaveEffectCenRepKey; - delete mTransitionDelayCenrepKey; - delete mTransitionEffectCenrepKey; - delete mSettingsManager; -} -int GlxSlideShowSetting::slideShowDelayIndex() -{ - QVariant effectvalue = mSettingsManager->readItemValue(*mTransitionDelayCenrepKey); - return effectvalue.toInt(); -} -void GlxSlideShowSetting::setSlideShowDelayIndex( int index ) -{ - mSettingsManager->writeItemValue(*mTransitionDelayCenrepKey, index); -} -QStringList GlxSlideShowSetting::slideShowEffectList() -{ - if(mSettingsManager->readItemValue(*mWaveEffectCenRepKey).toInt() == WAVE_EFFECT) - mEffectList<<"wave"; - if(mSettingsManager->readItemValue(*mFadeEffectCenRepKey).toInt() == SMOOTH_FADE) - mEffectList<<"Fade"; - if(mSettingsManager->readItemValue(*mZoomEffectCenRepKey).toInt() == ZOOM_TO_FACE) - mEffectList<<"Zoom to face"; - return mEffectList; -} -int GlxSlideShowSetting::slideShowEffectIndex() -{ - QVariant effectvalue = mSettingsManager->readItemValue(*mTransitionEffectCenrepKey); - return effectvalue.toInt(); -} -void GlxSlideShowSetting::setslideShowEffectIndex( int index ) -{ - mSettingsManager->writeItemValue(*mTransitionEffectCenrepKey, index); -} -void GlxSlideShowSetting::readSlideShowSetting() -{ -//To:Do read from the file system - QVariant effectvalue = mSettingsManager->readItemValue(*mTransitionDelayCenrepKey); - switch (effectvalue.toInt()) { - case SLOW: - mSlideDelayTime = mSettingsManager->readItemValue(*mSlowCenRepKey).toInt(); - break; - case MEDIUM: - mSlideDelayTime = mSettingsManager->readItemValue(*mMediumCenRepKey).toInt(); - break; - case FAST: - mSlideDelayTime = mSettingsManager->readItemValue(*mFastCenRepKey).toInt(); - break; - default: - mSlideDelayTime = 3000; - break; - } - mEffect = FADE_EFFECT; - mMoveDir = MOVE_FORWARD; - qDebug("GlxSlideShowSetting::readSlideShowSetting() slide delay time %d effect %d move direction %d", mSlideDelayTime, mEffect, mMoveDir); -} - - -GlxTransitionEffectSetting::GlxTransitionEffectSetting(GlxEffect effect): mEffect(effect), mTransitionLater(false), mItem(0) -{ - qDebug("GlxTransitionEffectSetting::GlxTransitionEffectSetting() effect id %d ", effect); - mEffectFileList.clear(); - mItemType.clear(); - mEventType.clear(); - init(); -} - -void GlxTransitionEffectSetting::init() -{ - qDebug("GlxTransitionEffectSetting::init() effect id %d ", mEffect); - - switch( mEffect ) { - case GRID_TO_FULLSCREEN : - mEffectFileList.append( QString(":/data/gridtofullscreenhide.fxml")); - mItemType.append( QString("HbGridViewItem") ); - mEventType.append(QString("click1") ); - - mEffectFileList.append( QString(":/data/gridtofullscreenshow.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click2") ); - break; - - case FULLSCREEN_TO_GRID : - mEffectFileList.append( QString(":/data/fullscreentogrid.fxml")); - mItemType.append( QString("HbGridView") ); - mEventType.append(QString("click3") ); - break; - - case GRID_TO_ALBUMLIST: - mEffectFileList.append( QString(":/data/gridtoalbumlisthide.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click4") ); - - mEffectFileList.append( QString(":/data/gridtoalbumlist.fxml")); - mItemType.append( QString("HbListView") ); - mEventType.append(QString("click5") ); - break; - - case ALBUMLIST_TO_GRID: - mEffectFileList.append( QString(":/data/albumlisttogrid.fxml")); - mItemType.append( QString("HbListView") ); - mEventType.append(QString("click6") ); - - mEffectFileList.append( QString(":/data/albumlisttogridshow.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click7") ); - break; - - case FULLSCREEN_TO_DETAIL : - mEffectFileList.append( QString(":/data/view_flip_hide.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click8") ); - - mEffectFileList.append( QString(":/data/view_flip_show.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click9") ); - mTransitionLater = true; - break; - - case DETAIL_TO_FULLSCREEN : - mEffectFileList.append( QString(":/data/view_flip_hide.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click10") ); - - mEffectFileList.append( QString(":/data/view_flip_show.fxml")); - mItemType.append( QString("HbView") ); - mEventType.append(QString("click11") ); - mTransitionLater = true; - break; - - default : - break; - } -} - -GlxTransitionEffectSetting::~GlxTransitionEffectSetting() -{ - qDebug("GlxTransitionEffectSetting::~GlxTransitionEffectSetting() effect id %d ", mEffect); - mEffectFileList.clear(); - mItemType.clear(); - mEventType.clear(); -} - - -GlxSlideShowEffectEngine::GlxSlideShowEffectEngine( ) : mNbrEffectRunning( 0 ), - mEffectPlugin(NULL), - mTransitionEffect(NO_EFFECT) -{ - qDebug("GlxSlideShowEffectEngine::GlxSlideShowEffectEngine()"); - mTransitionEffectList.clear(); -} - -GlxSlideShowEffectEngine::~GlxSlideShowEffectEngine() -{ - qDebug("GlxSlideShowEffectEngine::~GlxSlideShowEffectEngine()"); - delete mEffectPlugin; - mEffectPlugin = NULL; - - cleanTransitionEfffect(); -} - -void GlxSlideShowEffectEngine::registerEffect(const QString &itemType) -{ - effectPluginResolver(); - QList effectPathList = mEffectPlugin->getEffectFileList(); - - qDebug("GlxSlideShowEffectEngine::registerEffect() item type %s file path %s", itemType.utf16(), effectPathList[0].utf16()); - for ( int i = 0; i < effectPathList.count() ; ++i ) { - HbEffect::add(itemType, effectPathList.at(i), QString( "Click%1" ).arg(i)); - } -} - -void GlxSlideShowEffectEngine::deRegisterEffect(const QString &itemType) -{ - qDebug("GlxSlideShowEffectEngine::deRegisterEffect() item type %s", itemType.utf16()); - QList effectPathList = mEffectPlugin->getEffectFileList(); - for ( int i = 0; i < effectPathList.count() ; ++i ) { - HbEffect::remove(itemType, effectPathList.at(i), QString( "Click%1" ).arg(i)); - } - delete mEffectPlugin ; - mEffectPlugin = NULL; -} - -void GlxSlideShowEffectEngine::registerTransitionEffect() -{ - qDebug("GlxSlideShowEffectEngine::registerTransitionEffect()"); - initTransitionEffect(); -} - -void GlxSlideShowEffectEngine::deregistertransitionEffect() -{ - qDebug("GlxSlideShowEffectEngine::deregisterTransitionEffect()"); - cleanTransitionEfffect(); -} - -void GlxSlideShowEffectEngine::runEffect(QGraphicsItem * item, const QString & itemType ) -{ - qDebug("GlxSlideShowEffectEngine::runEffect()1 item type %s", itemType.utf16()); - HbEffect::start(item, itemType, QString( "Click1" ), this, "slideShowEffectFinished"); - ++mNbrEffectRunning; -} - -void GlxSlideShowEffectEngine::runEffect(QList< QGraphicsItem * > & items, const QString & itemType ) -{ - qDebug("GlxSlideShowEffectEngine::runEffect()2 item Type %s", itemType.utf16()); - mEffectPlugin->setUpItems(items); - for ( int i = 0; i < items.count() ; ++i ) { - if ( mEffectPlugin->isAnimationLater(i) == FALSE ) { - HbEffect::start(items.at(i), itemType, QString( "Click%1").arg(i), this, "slideShowEffectFinished"); - } - ++mNbrEffectRunning; - } -} - -void GlxSlideShowEffectEngine::runEffect(QList< QGraphicsItem * > & items, GlxEffect transitionEffect) -{ - qDebug("GlxSlideShowEffectEngine::runEffect()3 effect type %d ", transitionEffect); - - GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect ); - - if ( effectSetting == NULL || items.count() != effectSetting->count() ) { - return; - } - - mTransitionEffect = transitionEffect; - for ( int i = 0; i < effectSetting->count() ; ++i) { - ++mNbrEffectRunning; - if ( ( i == effectSetting->count() -1) && effectSetting->isTransitionLater() ) - { - effectSetting->setAnimationItem( items.at(i) ); - items.at(i)->hide(); - } - else { - HbEffect::start(items.at(i), effectSetting->itemType().at(i), effectSetting->eventType().at(i), this, "transitionEffectFinished"); - } - } -} - -void GlxSlideShowEffectEngine::cancelEffect(QGraphicsItem * item) -{ - if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) { - HbEffect::cancel( item, QString( "Click1" ) ); - } -} - -void GlxSlideShowEffectEngine::cancelEffect(const QList< QGraphicsItem * > & items) -{ - for ( int i = 0; i < items.count() ; ++i ) { - if ( HbEffect::effectRunning( items.at(i), QString( "Click%1").arg(i) ) ) { - HbEffect::cancel( items.at(i), QString( "Click%1").arg(i) ); - } - } -} - -void GlxSlideShowEffectEngine::cancelEffect(QList< QGraphicsItem * > & items, GlxEffect transitionEffect) -{ - GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect ); - - if ( effectSetting == NULL || items.count() != effectSetting->count() ) { - return; - } - - for ( int i = 0; i < effectSetting->count() ; ++i) { - HbEffect::cancel(items.at(i), effectSetting->eventType().at(i) ); - } -} - -bool GlxSlideShowEffectEngine::isEffectRuning(QGraphicsItem * item) -{ - if ( HbEffect::effectRunning( item, QString( "Click1" ) ) ) { - return true; - } - return false; -} - -bool GlxSlideShowEffectEngine::isEffectRuning(const QList< QGraphicsItem * > & items) -{ - for ( int i = 0; i < items.count() ; ++i ) { - if ( HbEffect::effectRunning( items.at(i), QString( "Click%1").arg(i) ) ) { - return true; - } - } - return false; -} - -void GlxSlideShowEffectEngine::slideShowEffectFinished( const HbEffect::EffectStatus &status ) -{ - Q_UNUSED( status ) - qDebug("GlxSlideShowEffectEngine::slideShowEffectFinished() number of effect %d ", mNbrEffectRunning); - - --mNbrEffectRunning; - - if ( mEffectPlugin->isAnimationLater( mNbrEffectRunning) ) { - HbEffect::start( mEffectPlugin->animationItem(), mEffectPlugin->ItemType(), QString( "Click%1").arg(mNbrEffectRunning), this, "slideShowEffectFinished"); - } - - if (mNbrEffectRunning == 0) { - emit effectFinished(); - } -} - -void GlxSlideShowEffectEngine::transitionEffectFinished( const HbEffect::EffectStatus &status ) -{ - Q_UNUSED( status ) - qDebug("GlxSlideShowEffectEngine::transitionEffectFinished() number of effect %d status %d", mNbrEffectRunning, status.reason); - - --mNbrEffectRunning; - if ( mNbrEffectRunning == 1 ) { - GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( mTransitionEffect ); - if ( effectSetting->isTransitionLater() ){ - effectSetting->animationItem()->show(); - HbEffect::start( effectSetting->animationItem(), effectSetting->itemType().at(1), effectSetting->eventType().at(1), this, "transitionEffectFinished"); - mTransitionEffect = NO_EFFECT; - } - } - - if (mNbrEffectRunning == 0) { - emit effectFinished(); - } -} - -void GlxSlideShowEffectEngine::effectPluginResolver() -{ -//TO:DO improved the code by using factory design pattern - - delete mEffectPlugin; - mEffectPlugin = NULL; - - switch ( mSlideShowSetting.effect() ) { - case TRANSITION_EFFECT : - if ( slideShowMoveDir() == MOVE_FORWARD ) { - mEffectPlugin = new GlxForwardTransitionPlugin(); - } - else { - mEffectPlugin = new GlxBackwardTransitionPlugin(); - } - break; - - case FADE_EFFECT : - mEffectPlugin = new GlxFadePlugin(); - break; - - default : - break; - } -} - -void GlxSlideShowEffectEngine::initTransitionEffect() -{ - GlxTransitionEffectSetting *effectSetting = NULL; - - effectSetting = new GlxTransitionEffectSetting(GRID_TO_FULLSCREEN); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[GRID_TO_FULLSCREEN] = effectSetting; - - effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_GRID ); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[FULLSCREEN_TO_GRID] = effectSetting; - - effectSetting = new GlxTransitionEffectSetting( GRID_TO_ALBUMLIST ); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[GRID_TO_ALBUMLIST] = effectSetting; - - effectSetting = new GlxTransitionEffectSetting( ALBUMLIST_TO_GRID ); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[ALBUMLIST_TO_GRID] = effectSetting; - - effectSetting = new GlxTransitionEffectSetting( FULLSCREEN_TO_DETAIL ); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[FULLSCREEN_TO_DETAIL] = effectSetting; - - effectSetting = new GlxTransitionEffectSetting( DETAIL_TO_FULLSCREEN ); - for ( int i = 0; i < effectSetting->count(); ++i ) { - HbEffect::add( effectSetting->itemType().at(i), effectSetting->effectFileList().at(i), effectSetting->eventType().at(i)) ; - } - mTransitionEffectList[DETAIL_TO_FULLSCREEN] = effectSetting; -} - -void GlxSlideShowEffectEngine::cleanTransitionEfffect() -{ - qDebug("GlxSlideShowEffectEngine::cleanTrnastionEfffect()"); - - foreach( GlxTransitionEffectSetting *list, mTransitionEffectList) { - for ( int i = 0; i < list->count(); ++i ) { - HbEffect::remove( list->itemType().at(i), list->effectFileList().at(i), list->eventType().at(i)) ; - } - delete list; - } - mTransitionEffectList.clear(); - -} -