--- /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 <qapplication>
+
+#include <hbinstance.h>
+#include <xqpluginloader.h>
+#include <xqplugininfo.h>
+#include <xqserviceutil.h>
+
+#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<XQPluginInfo> 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<MpxViewPlugin*>( instance )->viewPlugin();
+ }
+ else if ( viewType == MpxHbVideoCommon::PlaybackView )
+ {
+ mPlaybackViewPlugin = qobject_cast<MpxViewPlugin*>( instance )->viewPlugin();
+ }
+ else if ( viewType == MpxHbVideoCommon::VideoDetailsView )
+ {
+ mFileDetailsViewPlugin = qobject_cast<MpxViewPlugin*>( 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