diff -r dec420019252 -r 4f111d64a341 videoplayerapp/videoplayerengine/src/videoplayerengine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerengine/src/videoplayerengine.cpp Thu Apr 01 22:38:49 2010 +0300 @@ -0,0 +1,347 @@ +/* +* 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: Implementation of VideoPlayerEngine +* +*/ + +// Version : %version: 20 % + + +#include + +#include +#include +#include +#include + +#include "videoplayerengine.h" +#include "mpxvideoplaybackwrapper.h" +#include "videoservices.h" + +// ------------------------------------------------------------------------------------------------- +// QVideoPlayerEngine() +// ------------------------------------------------------------------------------------------------- +// +QVideoPlayerEngine::QVideoPlayerEngine(bool isService) + : mIsService( isService ) + , mEmbedded(false) + , mCurrentViewPlugin( 0 ) + , mPlaybackViewPlugin( 0 ) + , mCollectionViewPlugin( 0 ) + , mFileDetailsViewPlugin( 0 ) + , mPlaybackWrapper( 0 ) + , mVideoServices(0) +{ +} + +// ------------------------------------------------------------------------------------------------- +// ~QVideoPlayerEngine() +// ------------------------------------------------------------------------------------------------- +// +QVideoPlayerEngine::~QVideoPlayerEngine() +{ + if ( mVideoServices ) + { + mVideoServices->decreaseReferenceCount(); + mVideoServices = 0; + } + + if ( mCollectionViewPlugin ) + { + mCollectionViewPlugin->destroyView(); + } + + if ( mPlaybackViewPlugin ) + { + mPlaybackViewPlugin->destroyView(); + } + + if ( mFileDetailsViewPlugin ) + { + mFileDetailsViewPlugin->destroyView(); + } + + delete mPlaybackWrapper; + + // disconnect all signals + disconnect(); +} + +// ------------------------------------------------------------------------------------------------- +// initialize() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::initialize() +{ + // + // Clean up QVideoPlayerEngine when qApp try to quit + // + connect( qApp, SIGNAL( aboutToQuit() ), this, SLOT( handleQuit() ) ); + + // + // Create playback wrapper + // + if ( !mPlaybackWrapper ) + { + mPlaybackWrapper = new QMpxVideoPlaybackWrapper(); + connect( mPlaybackWrapper, + SIGNAL( handlePlaybackView( int ) ), + this, + SLOT( handleCommand( int ) ) ); + } + + // + // Get VideoServices instance + // + if( mIsService && !mVideoServices ) + { + mVideoServices = VideoServices::instance(this); + connect( mVideoServices, SIGNAL(activated(int)), this, SLOT(handleCommand(int))); + } + + QList impls; + XQPluginLoader::listImplementations("org.nokia.mmdt.MpxViewPlugin/1.0", impls); + + // + // Pre-load collectionview and playbackview plugins + // + loadPlugin( MpxHbVideoCommon::CollectionView ); + + if ( mCollectionViewPlugin ) + { + mCollectionViewPlugin->createView(); + } + + loadPlugin( MpxHbVideoCommon::PlaybackView ); + + if ( mPlaybackViewPlugin ) + { + mPlaybackViewPlugin->createView(); + } + + loadPlugin( MpxHbVideoCommon::VideoDetailsView ); + + if ( mFileDetailsViewPlugin ) + { + mFileDetailsViewPlugin->createView(); + } + + // + // default view in the app is the collection view. + // + if(!mIsService) + { + activateView( MpxHbVideoCommon::CollectionView ); + } +} + +// ------------------------------------------------------------------------------------------------- +// handleCommand() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::handleCommand( int commandCode ) +{ + switch ( commandCode ) + { + case MpxHbVideoCommon::ActivateCollectionView: + { + if ( mCurrentViewPlugin != mCollectionViewPlugin ) + { + activateView( MpxHbVideoCommon::CollectionView ); + } + break; + } + case MpxHbVideoCommon::ActivatePlaybackView: + { + if ( mCurrentViewPlugin != mPlaybackViewPlugin ) + { + activateView( MpxHbVideoCommon::PlaybackView ); + } + break; + } + case MpxHbVideoCommon::ActivateVideoDetailsView: + { + if ( mCurrentViewPlugin != mFileDetailsViewPlugin ) + { + activateView( MpxHbVideoCommon::VideoDetailsView ); + } + break; + } + case MpxHbVideoCommon::LoadVideoDetailsView: + { + if ( mFileDetailsViewPlugin ) + { + mFileDetailsViewPlugin->createView(); + } + break; + } + + default: + { + break; + } + } +} + +// ------------------------------------------------------------------------------------------------- +// activateView() +// activate view based on view type. +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::activateView( MpxHbVideoCommon::MpxHbVideoViewType viewType ) +{ + disconnectView(); + + if ( mCurrentViewPlugin ) + { + mCurrentViewPlugin->deactivateView(); + hbInstance->allMainWindows().value(0)->removeView( mCurrentViewPlugin->getView() ); + mCurrentViewPlugin = NULL; + } + + if ( viewType == MpxHbVideoCommon::CollectionView && mCollectionViewPlugin ) + { + if ( mIsService && (VideoServices::EPlayback == mVideoServices->currentService()) ) + { + qApp->quit(); + XQServiceUtil::toBackground(false); + return; + } + else + { + mCurrentViewPlugin = mCollectionViewPlugin; + } + } + else if ( viewType == MpxHbVideoCommon::PlaybackView && mPlaybackViewPlugin ) + { + mCurrentViewPlugin = mPlaybackViewPlugin; + } + else if ( viewType == MpxHbVideoCommon::VideoDetailsView && mFileDetailsViewPlugin ) + { + mCurrentViewPlugin = mFileDetailsViewPlugin; + } + else + { + // invalid plugin activation request, do nothing + return; + } + + hbInstance->allMainWindows().value(0)->addView( mCurrentViewPlugin->getView() ); + connectView(); + mCurrentViewPlugin->activateView(); +} + +// ------------------------------------------------------------------------------------------------- +// loadPlugin() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::loadPlugin( MpxHbVideoCommon::MpxHbVideoViewType viewType ) +{ + int viewTypeUid( 0 ); + + if ( viewType == MpxHbVideoCommon::CollectionView ) + { + viewTypeUid = MpxHbVideoCommon::KMpxVideoPluginDllCollectionUid; + } + else if ( viewType == MpxHbVideoCommon::PlaybackView ) + { + viewTypeUid = MpxHbVideoCommon::KMpxVideoPluginDllPlaybackUid; + } + else if( viewType == MpxHbVideoCommon::VideoDetailsView ) + { + viewTypeUid = MpxHbVideoCommon::KMpxVideoPluginDllFileDetailsUid; + } + + if ( viewTypeUid ) + { + // activate the collection view + XQPluginLoader pluginLoader( viewTypeUid ); + QObject* instance = pluginLoader.instance(); + + if ( instance ) + { + if ( viewType == MpxHbVideoCommon::CollectionView ) + { + mCollectionViewPlugin = qobject_cast( instance )->viewPlugin(); + } + else if ( viewType == MpxHbVideoCommon::PlaybackView ) + { + mPlaybackViewPlugin = qobject_cast( instance )->viewPlugin(); + } + else if ( viewType == MpxHbVideoCommon::VideoDetailsView ) + { + mFileDetailsViewPlugin = qobject_cast( instance )->viewPlugin(); + } + } + } +} + +// ------------------------------------------------------------------------------------------------- +// connectView() +// connect application to view by setting up the signals and slots. +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::connectView() +{ + connect( mCurrentViewPlugin, + SIGNAL( command( int ) ), + this, + SLOT( handleCommand( int ) ) ); +} + +// ------------------------------------------------------------------------------------------------- +// disconnectView() +// connect application to view by setting up the signals and slots. +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::disconnectView() +{ + if ( mCurrentViewPlugin ) + { + disconnect( mCurrentViewPlugin, + SIGNAL( command( int ) ), + this, + SLOT( handleCommand( int ) ) ); + } +} + +// ------------------------------------------------------------------------------------------------- +// handleQuit() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::handleQuit() +{ + delete this; +} + + +// ------------------------------------------------------------------------------------------------- +// playMedia() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::playMedia( QString filePath ) +{ + mPlaybackWrapper->playMedia( filePath ); +} + +// ------------------------------------------------------------------------------------------------- +// setEmbedded() +// ------------------------------------------------------------------------------------------------- +// +void QVideoPlayerEngine::setEmbedded() +{ + mEmbedded = true; +} + +// End of file