diff -r 45e72b57a2fd -r e3cecb93e76a videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp --- a/videoplayback/hbvideoplaybackview/viewsrc/hbvideobaseplaybackview.cpp Tue Jul 06 14:17:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,484 +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: Implementation of Video base playback view -* -*/ - -// Version : %version: da1mmcf#43 % - - - -// Include Files - - - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include "mpxvideo_debug.h" -#include "mpxvideoviewwrapper.h" -#include "mpxvideoplaybackuids.hrh" -#include "hbvideobaseplaybackview.h" -#include "videoactivitystate.h" -#include "mpxvideoplaybackviewfiledetails.h" -#include "mpxcommonvideoplaybackview.hrh" - - -// Member Functions - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::HbVideoBasePlaybackView() -// ------------------------------------------------------------------------------------------------- -// -HbVideoBasePlaybackView::HbVideoBasePlaybackView() - : mVideoMpxWrapper( NULL ) - , mTimerForClosingView( NULL ) - , mActivated( false ) - , mStayPaused ( false ) -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::HbVideoBasePlaybackView()")); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::initializeVideoPlaybackView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::initializeVideoPlaybackView() -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::initializeVideoPlaybackView()")); - - // - // Need to set to control full screen including status pane area - // - setContentFullScreen(); - - mTimerForClosingView = new QTimer(); - mTimerForClosingView->setSingleShot( true ); - mTimerForClosingView->setInterval( 10 ); - connect( mTimerForClosingView, SIGNAL( timeout() ), this, SIGNAL( activatePreviousView() ) ); - - // - // Read activity data ... - // If last playback was forced to terminate due to low memory (GOOM, etc.) - // then the clip needs to be restored to the last played position - // and the state needs to be paused, since forced termination can only occur for - // background apps - so if this happened Video Player must have been in background - // which implies paused state - // - int lastViewType = VideoActivityState::instance().getActivityData(KEY_VIEWPLUGIN_TYPE).toInt(); - if ( lastViewType == MpxHbVideoCommon::PlaybackView ) - { - QVariant data = VideoActivityState::instance().getActivityData(KEY_LAST_PLAY_POSITION_ID); - mLastPlayPosition = data.toInt(); - - mStayPaused = true; - } -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::~HbVideoBasePlaybackView() -// ------------------------------------------------------------------------------------------------- -// -HbVideoBasePlaybackView::~HbVideoBasePlaybackView() -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::~HbVideoBasePlaybackView()")); - - if ( mTimerForClosingView ) - { - disconnect( mTimerForClosingView, SIGNAL( timeout() ), this, SIGNAL( activatePreviousView() ) ); - - if ( mTimerForClosingView->isActive() ) - { - mTimerForClosingView->stop(); - } - - delete mTimerForClosingView; - mTimerForClosingView = NULL; - } - - if ( mVideoMpxWrapper ) - { - delete mVideoMpxWrapper; - mVideoMpxWrapper = NULL; - } - - setParentItem( 0 ); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleActivateView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleActivateView() -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleActivateView()")); - - MPX_TRAPD( err, mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) ); - - QCoreApplication::instance()->installEventFilter( this ); - - // - // Request the needed Media from the Playback Plugin - // - MPX_TRAP( err, mVideoMpxWrapper->RequestMediaL() ); - - menu()->close(); - - // - // Landscape orientation - // Workaround: Disable orientation transition effect - // since orbit couldn't emit the orientationChanged signal with transition effect - // - hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal, false ); - - mActivated = true; -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleDeactivateView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleDeactivateView() -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::handleDeactivateView()")); - - saveActivityData(); - - mActivated = false; - - QCoreApplication::instance()->removeEventFilter( this ); - - // - // Close the playback plugin to release all references to previous clip - // - MPX_TRAPD( err, mVideoMpxWrapper->HandleCommandL( EMPXPbvCmdClose ) ); - - if ( mVideoMpxWrapper ) - { - delete mVideoMpxWrapper; - mVideoMpxWrapper = NULL; - } - - // - // go back to device orientation - // - //hbInstance->allMainWindows()[0]->unsetOrientation(); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::saveActivityData() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::saveActivityData() -{ - MPX_DEBUG( _L("HbVideoBasePlaybackView::saveActivityData()") ); - - // save the activity data - QVariant data = QString( mVideoMpxWrapper->iFileDetails->mClipName ); - VideoActivityState::instance().setActivityData(data, KEY_LAST_PLAYED_CLIP); - - data = int( mVideoMpxWrapper->iPlayPosition ); - VideoActivityState::instance().setActivityData(data, KEY_LAST_PLAY_POSITION_ID); - - data = bool( mVideoMpxWrapper->iFileDetails->mPlaybackMode == EMPXVideoLocal ); - VideoActivityState::instance().setActivityData(data, KEY_LAST_LOCAL_PLAYBACK); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleClosePlaybackView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleClosePlaybackView() -{ - MPX_DEBUG( - _L("HbVideoBasePlaybackView::handleClosePlaybackView()") ); - - if ( mVideoMpxWrapper && mVideoMpxWrapper->IsMultiItemPlaylist() ) - { - TRAP_IGNORE( mVideoMpxWrapper->HandleCommandL( EMPXPbvCmdNextListItem ) ); - } - else - { - closePlaybackView(); - } -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handlePluginError() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handlePluginError( int aError ) -{ - MPX_DEBUG( - _L("HbVideoBasePlaybackView::handlePluginError() aError = %d"), aError ); - - switch ( aError ) - { - case KErrCancel: - { - handleClosePlaybackView(); - break; - } - case KErrMMDRMNotAuthorized: - case KErrCANoRights: - case KErrCANoPermission: - { - showDialog( hbTrId( "txt_videos_info_license_has_expired_or_it_is_missi" ) ); - break; - } - case KMPXVideoCallOngoingError: - { - showDialog( hbTrId( "txt_videos_info_video_playback_is_not_allowed_duri" ), false ); - break; - } - default: - { - TRAP_IGNORE( - - // - // TextResolver instance for error resolving. - // - CTextResolver* textresolver = CTextResolver::NewLC(); - - // - // Resolve the error text - // - TPtrC text; - text.Set( textresolver->ResolveErrorString( aError ) ); - - // - // convert to QString - // - const QString qString( (QChar*)text.Ptr(), text.Length() ); - - // - // clean up textresolver - // - CleanupStack::PopAndDestroy( textresolver ); - - // - // display error and close playback view - // - showDialog( qString ); - ); - } - } -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::showDialog -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::showDialog( const QString& qString, bool closeView ) -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::showDialog( %s, %d )"), qString.data(), closeView ); - - // - // create pop-up dialog for error notes, - // set its position to the middle of the screen - // and make sure pop-up dialog gets deleted on close. - // - QRectF screenRect = hbInstance->allMainWindows()[0]->rect(); - HbNotificationDialog* dlg = new HbNotificationDialog(); - dlg->setAttribute( Qt::WA_DeleteOnClose ); - dlg->setMinimumSize( QSizeF(200, 100) ); - dlg->setPreferredPos( QPointF( screenRect.height()/2, screenRect.width()/2 ), - HbPopup::Center ); - - if ( closeView ) - { - // - // connect aboutToClose() signal to handleClosePopupDialog() slot so that - // when pop-up dialog is closed, playback view is closed also - // - connect( dlg, SIGNAL( aboutToClose() ), this, SLOT( handleClosePopupDialog() ) ); - } - - // - // convert string to label so text alignment can be set - // - HbLabel *label = new HbLabel( qString ); - label->setAlignment( Qt::AlignCenter ); - - // - // set label as content widget and show pop-up dialog - // - dlg->setContentWidget( label ); - dlg->show(); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::doClosePlayer -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::doClosePlayer() -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::doClosePlayer()")); - - handleDeactivateView(); - - qApp->quit(); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::issuePlayCommand -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::issuePlayCommand() -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::issuePlayCommand()")); - - int err = KErrNone; - - TRAP( err, mVideoMpxWrapper->CreateGeneralPlaybackCommandL( EPbCmdPlay )); - - MPX_DEBUG(_L("HbVideoBasePlaybackView::issuePlayCommand() error = %d"), err); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::retrievePdlInformation -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::retrievePdlInformation() -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::retrievePdlInformation()")); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleBufferingState -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleBufferingState() -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::handleBufferingState()")); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::closePlaybackView() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::closePlaybackView() -{ - MPX_ENTER_EXIT(_L("HbVideoBasePlaybackView::closePlaybackView()")); - - mTimerForClosingView->start( 0 ); -} - -// --------------------------------------------------------------------------- -// HbVideoBasePlaybackView::eventFilter -// --------------------------------------------------------------------------- -// -bool HbVideoBasePlaybackView::eventFilter( QObject *object, QEvent *event ) -{ - Q_UNUSED( object ); - - switch ( event->type() ) - { - case QEvent::ApplicationActivate: - { - if ( mActivated ) - { - MPX_DEBUG(_L("HbVideoBasePlaybackView::eventFilter foreground()") ); - TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL( true ) ); - } - break; - } - case QEvent::ApplicationDeactivate: - { - if ( mActivated ) - { - MPX_DEBUG(_L("HbVideoBasePlaybackView::eventFilter background()") ); - TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL( false ) ); - } - break; - } - } - - return QObject::eventFilter( object, event ); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::getWindow() -// ------------------------------------------------------------------------------------------------- -// -RWindow *HbVideoBasePlaybackView::getWindow() -{ - return static_cast( hbInstance->allMainWindows()[0]->effectiveWinId()->DrawableWindow() ); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::handleClosePopupDialog() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::handleClosePopupDialog() -{ - MPX_DEBUG(_L("HbVideoBasePlaybackView::handleClosePopupDialog()") ); - - handleClosePlaybackView(); -} - -// ------------------------------------------------------------------------------------------------- -// HbVideoBasePlaybackView::gestureEvent() -// ------------------------------------------------------------------------------------------------- -// -void HbVideoBasePlaybackView::gestureEvent( QGestureEvent* event ) -{ - if ( HbTapGesture * gesture = static_cast( event->gesture( Qt::TapGesture ) ) ) - { - if ( gesture->state() == Qt::GestureFinished && mActivated ) - { - MPX_DEBUG(_L("HbVideoBasePlaybackView::gestureEvent() tapGesture finished") ); - - emit tappedOnScreen(); - } - } - else if ( HbPanGesture* gesture = static_cast( event->gesture( Qt::PanGesture ) ) ) - { - if ( gesture->state() == Qt::GestureFinished && mActivated ) - { - QPointF delta( gesture->sceneDelta() ); - - if ( delta.x() > 0 ) - { - MPX_DEBUG(_L("HbVideoBasePlaybackView::gestureEvent() right") ); - - emit pannedToRight(); - } - else - { - MPX_DEBUG(_L("HbVideoBasePlaybackView::gestureEvent() left") ); - - emit pannedToLeft(); - } - } - } -} - -// EOF