diff -r 4bfa887905cf -r d2b028fd1f7d videoplayerapp/videoplayerengine/src/videoplayerengine.cpp --- a/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp Mon Aug 23 14:27:29 2010 +0300 +++ b/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp Fri Sep 03 12:37:43 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#43 % +// Version : %version: 47 % #include @@ -26,8 +26,8 @@ #include #include #include -#include #include +#include #include "videoplayerengine.h" #include "videoactivitystate.h" @@ -50,6 +50,7 @@ , mFileDetailsViewPlugin( 0 ) , mPlaybackWrapper( 0 ) , mVideoServices( 0 ) + , mActivityStorage( 0 ) { MPX_DEBUG(_L("VideoPlayerEngine::VideoPlayerEngine()")); } @@ -91,6 +92,8 @@ delete mPlaybackWrapper; + delete mActivityStorage; + // disconnect all signals disconnect(); } @@ -151,6 +154,16 @@ } else { + if(!mActivityStorage) + { + mActivityStorage = new AfActivityStorage(); + } + + VideoActivityState::instance().setActivityData(mActivityStorage->activityData(ACTIVITY_VIDEOPLAYER_MAINVIEW)); + + // after reading, remove activity to prevent multiple instances in taskswitcher + mActivityStorage->removeActivity(ACTIVITY_VIDEOPLAYER_MAINVIEW); + // // check latest plugin type from activity manager data and create + activate it // CollectionView (default) and playbackview are the ones that are accepted @@ -233,20 +246,6 @@ } // ------------------------------------------------------------------------------------------------- -// viewReadySlot() -// ------------------------------------------------------------------------------------------------- -// -void VideoPlayerEngine::viewReadySlot() -{ - MPX_ENTER_EXIT(_L("VideoPlayerEngine::viewReady()")); - emit applicationReady(); - // since we need to emit applicationReady only once at startup, - // disconnect the viewReady -signal from this object - disconnect(hbInstance->allMainWindows().value(0), SIGNAL(viewReady()), - this, SLOT(viewReadySlot())); -} - -// ------------------------------------------------------------------------------------------------- // doDelayedLoad() // ------------------------------------------------------------------------------------------------- // @@ -488,18 +487,26 @@ { MPX_ENTER_EXIT(_L("VideoPlayerEngine::handleQuit()")); - if ( ! mIsService ) + if ( ! mIsService && mActivityStorage) { VideoActivityState &localActivity(VideoActivityState::instance()); + + // screenshot required for activity to save correctly + // need to take it before deactivation to actually show something + QVariantHash metadata; + HbMainWindow *window = hbInstance->allMainWindows().first(); + metadata.insert("screenshot", QPixmap::grabWidget(window, window->rect())); - QVariant data = QVariant(); - HbActivityManager *actManager = qobject_cast(qApp)->activityManager(); + QVariant data = QVariant(); // // deactivate is the final point for current plugin to save it's activity data into // VideoActivityState before they are saved to to activity manager // - mCurrentViewPlugin->deactivateView(); + if ( mCurrentViewPlugin ) + { + mCurrentViewPlugin->deactivateView(); + } // // get and save recent view type: either playback or collection view plugins are currently used. @@ -523,11 +530,12 @@ data = viewType; localActivity.setActivityData( data, KEY_VIEWPLUGIN_TYPE ); - - // save data to activity manager - actManager->addActivity( ACTIVITY_VIDEOPLAYER_MAINVIEW, - localActivity.getActivityData(), - QVariantHash() ); + + // save data to activity manager, if it fails there's nothing to do + mActivityStorage->saveActivity( ACTIVITY_VIDEOPLAYER_MAINVIEW, + localActivity.getActivityData(), + metadata ); + } delete this; @@ -633,7 +641,11 @@ bool result = false; - if ( mIsService ) + if ( mIsPlayService ) + { + result = true; + } + else if ( mIsService ) { QString intface = XQServiceUtil::interfaceName(); MPX_DEBUG(_L("VideoPlayerEngine::isPlayServiceInvoked() : interfaceName(%s)"), intface.data() );