videoplayback/videoplaybackview/viewsrc/videobaseplaybackview.cpp
author hgs
Tue, 05 Oct 2010 09:26:49 +0300
changeset 66 adb51f74b890
parent 63 4707a0db12f6
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Implementation of Video base playback view
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
66
hgs
parents: 63
diff changeset
    18
// Version : %version: da1mmcf#49.1.3 %
44
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
//  Include Files
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include <QTimer>
hgs
parents:
diff changeset
    27
#include <QGraphicsSceneEvent>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#include <hbmenu.h>
hgs
parents:
diff changeset
    30
#include <hbaction.h>
hgs
parents:
diff changeset
    31
#include <hbinstance.h>
hgs
parents:
diff changeset
    32
#include <hbnotificationdialog.h>
63
hgs
parents: 55
diff changeset
    33
#include <hbmessagebox.h>
44
hgs
parents:
diff changeset
    34
#include <hblabel.h>
hgs
parents:
diff changeset
    35
#include <hbtapgesture.h>
hgs
parents:
diff changeset
    36
#include <hbpangesture.h>
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
#include <textresolver.h>
hgs
parents:
diff changeset
    39
#include <mmf/common/mmferrors.h>
hgs
parents:
diff changeset
    40
#include <DRMHelper.h>
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
#include <mpxvideoplaybackdefs.h>
hgs
parents:
diff changeset
    43
#include <mpxplaybackcommanddefs.h>
hgs
parents:
diff changeset
    44
#include <mpxhbvideocommondefs.h>
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
#include "mpxvideo_debug.h"
hgs
parents:
diff changeset
    47
#include "mpxvideoviewwrapper.h"
hgs
parents:
diff changeset
    48
#include "mpxvideoplaybackuids.hrh"
hgs
parents:
diff changeset
    49
#include "videobaseplaybackview.h"
49
hgs
parents: 44
diff changeset
    50
#include "videoactivitystate.h"
hgs
parents: 44
diff changeset
    51
#include "videoplaybackviewfiledetails.h"
44
hgs
parents:
diff changeset
    52
#include "mpxcommonvideoplaybackview.hrh"
hgs
parents:
diff changeset
    53
66
hgs
parents: 63
diff changeset
    54
const int KPanGestureThreshold = 200;
44
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
//  Member Functions
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
// VideoBasePlaybackView::VideoBasePlaybackView()
hgs
parents:
diff changeset
    60
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
//
hgs
parents:
diff changeset
    62
VideoBasePlaybackView::VideoBasePlaybackView()
hgs
parents:
diff changeset
    63
    : mVideoMpxWrapper( NULL )
hgs
parents:
diff changeset
    64
    , mTimerForClosingView( NULL )
hgs
parents:
diff changeset
    65
    , mActivated( false )
hgs
parents:
diff changeset
    66
    , mStayPaused ( false )
hgs
parents:
diff changeset
    67
{
hgs
parents:
diff changeset
    68
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::VideoBasePlaybackView()"));
hgs
parents:
diff changeset
    69
}
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    72
//   VideoBasePlaybackView::initializeVideoPlaybackView()
hgs
parents:
diff changeset
    73
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    74
//
hgs
parents:
diff changeset
    75
void VideoBasePlaybackView::initializeVideoPlaybackView()
hgs
parents:
diff changeset
    76
{
hgs
parents:
diff changeset
    77
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::initializeVideoPlaybackView()"));
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
    //
hgs
parents:
diff changeset
    80
    // Need to set to control full screen including status pane area
hgs
parents:
diff changeset
    81
    //
hgs
parents:
diff changeset
    82
    setContentFullScreen();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    mTimerForClosingView = new QTimer();
hgs
parents:
diff changeset
    85
    mTimerForClosingView->setSingleShot( true );
hgs
parents:
diff changeset
    86
    mTimerForClosingView->setInterval( 10 );
hgs
parents:
diff changeset
    87
    connect( mTimerForClosingView, SIGNAL( timeout() ), this, SIGNAL( activatePreviousView() ) );
49
hgs
parents: 44
diff changeset
    88
44
hgs
parents:
diff changeset
    89
    //
hgs
parents:
diff changeset
    90
    // Read activity data ...
hgs
parents:
diff changeset
    91
    // If last playback was forced to terminate due to low memory (GOOM, etc.)
49
hgs
parents: 44
diff changeset
    92
    // then the clip needs to be restored to the last played position
44
hgs
parents:
diff changeset
    93
    // and the state needs to be paused, since forced termination can only occur for
hgs
parents:
diff changeset
    94
    // background apps - so if this happened Video Player must have been in background
hgs
parents:
diff changeset
    95
    // which implies paused state
49
hgs
parents: 44
diff changeset
    96
    //
hgs
parents: 44
diff changeset
    97
    int lastViewType = VideoActivityState::instance().getActivityData(KEY_VIEWPLUGIN_TYPE).toInt();
hgs
parents: 44
diff changeset
    98
    if ( lastViewType == MpxHbVideoCommon::PlaybackView )
44
hgs
parents:
diff changeset
    99
    {
hgs
parents:
diff changeset
   100
        QVariant data = VideoActivityState::instance().getActivityData(KEY_LAST_PLAY_POSITION_ID);
49
hgs
parents: 44
diff changeset
   101
        mLastPlayPosition = data.toInt();
hgs
parents: 44
diff changeset
   102
44
hgs
parents:
diff changeset
   103
        mStayPaused = true;
49
hgs
parents: 44
diff changeset
   104
    }
63
hgs
parents: 55
diff changeset
   105
hgs
parents: 55
diff changeset
   106
    MPX_TRAPD( err, mVideoMpxWrapper = CMPXVideoViewWrapper::NewL( this ) );
44
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
// VideoBasePlaybackView::~VideoBasePlaybackView()
hgs
parents:
diff changeset
   111
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
//
hgs
parents:
diff changeset
   113
VideoBasePlaybackView::~VideoBasePlaybackView()
hgs
parents:
diff changeset
   114
{
hgs
parents:
diff changeset
   115
    MPX_DEBUG(_L("VideoBasePlaybackView::~VideoBasePlaybackView()"));
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    if ( mTimerForClosingView )
hgs
parents:
diff changeset
   118
    {
hgs
parents:
diff changeset
   119
        disconnect( mTimerForClosingView, SIGNAL( timeout() ), this, SIGNAL( activatePreviousView() ) );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
        if ( mTimerForClosingView->isActive() )
hgs
parents:
diff changeset
   122
        {
hgs
parents:
diff changeset
   123
            mTimerForClosingView->stop();
hgs
parents:
diff changeset
   124
        }
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
        delete mTimerForClosingView;
hgs
parents:
diff changeset
   127
        mTimerForClosingView = NULL;
hgs
parents:
diff changeset
   128
    }
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    if ( mVideoMpxWrapper )
hgs
parents:
diff changeset
   131
    {
hgs
parents:
diff changeset
   132
        delete mVideoMpxWrapper;
hgs
parents:
diff changeset
   133
        mVideoMpxWrapper = NULL;
hgs
parents:
diff changeset
   134
    }
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
    setParentItem( 0 );
hgs
parents:
diff changeset
   137
}
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   140
//   VideoBasePlaybackView::handleActivateView()
hgs
parents:
diff changeset
   141
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   142
//
hgs
parents:
diff changeset
   143
void VideoBasePlaybackView::handleActivateView()
hgs
parents:
diff changeset
   144
{
hgs
parents:
diff changeset
   145
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::handleActivateView()"));
hgs
parents:
diff changeset
   146
63
hgs
parents: 55
diff changeset
   147
    MPX_TRAPD( err, mVideoMpxWrapper->ActivateL() );
44
hgs
parents:
diff changeset
   148
50
hgs
parents: 49
diff changeset
   149
    connect( hbInstance->allMainWindows()[0], SIGNAL( obscured() ), this, SLOT( handleAppBackground() ) );
hgs
parents: 49
diff changeset
   150
    connect( hbInstance->allMainWindows()[0], SIGNAL( revealed() ), this, SLOT( handleAppForeground() ) );
hgs
parents: 49
diff changeset
   151
44
hgs
parents:
diff changeset
   152
    QCoreApplication::instance()->installEventFilter( this );
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
    //
hgs
parents:
diff changeset
   155
    //  Request the needed Media from the Playback Plugin
hgs
parents:
diff changeset
   156
    //
hgs
parents:
diff changeset
   157
    MPX_TRAP( err, mVideoMpxWrapper->RequestMediaL() );
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
    menu()->close();
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    //
hgs
parents:
diff changeset
   162
    // Landscape orientation
hgs
parents:
diff changeset
   163
    // Workaround: Disable orientation transition effect
hgs
parents:
diff changeset
   164
	// since orbit couldn't emit the orientationChanged signal with transition effect
hgs
parents:
diff changeset
   165
	//
hgs
parents:
diff changeset
   166
    hbInstance->allMainWindows()[0]->setOrientation( Qt::Horizontal, false );
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    mActivated = true;
hgs
parents:
diff changeset
   169
}
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   172
//   VideoBasePlaybackView::handleDeactivateView()
hgs
parents:
diff changeset
   173
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   174
//
hgs
parents:
diff changeset
   175
void VideoBasePlaybackView::handleDeactivateView()
hgs
parents:
diff changeset
   176
{
hgs
parents:
diff changeset
   177
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::handleDeactivateView()"));
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
    saveActivityData();
49
hgs
parents: 44
diff changeset
   180
44
hgs
parents:
diff changeset
   181
    mActivated = false;
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    QCoreApplication::instance()->removeEventFilter( this );
hgs
parents:
diff changeset
   184
50
hgs
parents: 49
diff changeset
   185
    disconnect( hbInstance->allMainWindows()[0], SIGNAL( obscured() ), this, SLOT( handleAppBackground() ) );
hgs
parents: 49
diff changeset
   186
    disconnect( hbInstance->allMainWindows()[0], SIGNAL( revealed() ), this, SLOT( handleAppForeground() ) );
hgs
parents: 49
diff changeset
   187
44
hgs
parents:
diff changeset
   188
    //
hgs
parents:
diff changeset
   189
    //  Close the playback plugin to release all references to previous clip
hgs
parents:
diff changeset
   190
    //
hgs
parents:
diff changeset
   191
    MPX_TRAPD( err, mVideoMpxWrapper->HandleCommandL( EMPXPbvCmdClose ) );
hgs
parents:
diff changeset
   192
63
hgs
parents: 55
diff changeset
   193
    MPX_TRAP( err, mVideoMpxWrapper->Deactivate() );
44
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
    //
hgs
parents:
diff changeset
   196
    // go back to device orientation
hgs
parents:
diff changeset
   197
    //
hgs
parents:
diff changeset
   198
    //hbInstance->allMainWindows()[0]->unsetOrientation();
hgs
parents:
diff changeset
   199
}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   202
//   VideoBasePlaybackView::saveActivityData()
hgs
parents:
diff changeset
   203
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   204
//
hgs
parents:
diff changeset
   205
void VideoBasePlaybackView::saveActivityData()
hgs
parents:
diff changeset
   206
{
49
hgs
parents: 44
diff changeset
   207
    MPX_DEBUG( _L("VideoBasePlaybackView::saveActivityData()") );
hgs
parents: 44
diff changeset
   208
55
hgs
parents: 50
diff changeset
   209
    VideoActivityState& videoActivityState = VideoActivityState::instance();
hgs
parents: 50
diff changeset
   210
44
hgs
parents:
diff changeset
   211
    // save the activity data
hgs
parents:
diff changeset
   212
    QVariant data = QString( mVideoMpxWrapper->iFileDetails->mClipName );
55
hgs
parents: 50
diff changeset
   213
    videoActivityState.setActivityData( data, KEY_LAST_PLAYED_CLIP );
49
hgs
parents: 44
diff changeset
   214
44
hgs
parents:
diff changeset
   215
    data = int( mVideoMpxWrapper->iPlayPosition );
55
hgs
parents: 50
diff changeset
   216
    videoActivityState.setActivityData( data, KEY_LAST_PLAY_POSITION_ID );
49
hgs
parents: 44
diff changeset
   217
44
hgs
parents:
diff changeset
   218
    data = bool( mVideoMpxWrapper->iFileDetails->mPlaybackMode == EMPXVideoLocal );
55
hgs
parents: 50
diff changeset
   219
    videoActivityState.setActivityData( data, KEY_LAST_LOCAL_PLAYBACK );
hgs
parents: 50
diff changeset
   220
49
hgs
parents: 44
diff changeset
   221
    data = uint ( mVideoMpxWrapper->GetMediaId() );
55
hgs
parents: 50
diff changeset
   222
    videoActivityState.setActivityData( data, KEY_LAST_PLAYED_MEDIA_ID );
44
hgs
parents:
diff changeset
   223
}
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   226
//   VideoBasePlaybackView::handleClosePlaybackView()
hgs
parents:
diff changeset
   227
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   228
//
hgs
parents:
diff changeset
   229
void VideoBasePlaybackView::handleClosePlaybackView()
hgs
parents:
diff changeset
   230
{
hgs
parents:
diff changeset
   231
    MPX_DEBUG(
hgs
parents:
diff changeset
   232
      _L("VideoBasePlaybackView::handleClosePlaybackView()") );
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
    if ( mVideoMpxWrapper && mVideoMpxWrapper->IsMultiItemPlaylist() )
hgs
parents:
diff changeset
   235
    {
hgs
parents:
diff changeset
   236
        TRAP_IGNORE( mVideoMpxWrapper->HandleCommandL( EMPXPbvCmdNextListItem ) );
hgs
parents:
diff changeset
   237
    }
hgs
parents:
diff changeset
   238
    else
hgs
parents:
diff changeset
   239
    {
hgs
parents:
diff changeset
   240
        closePlaybackView();
hgs
parents:
diff changeset
   241
    }
hgs
parents:
diff changeset
   242
}
hgs
parents:
diff changeset
   243
hgs
parents:
diff changeset
   244
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   245
//   VideoBasePlaybackView::handlePluginError()
hgs
parents:
diff changeset
   246
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   247
//
hgs
parents:
diff changeset
   248
void VideoBasePlaybackView::handlePluginError( int aError )
hgs
parents:
diff changeset
   249
{
hgs
parents:
diff changeset
   250
    MPX_DEBUG(
hgs
parents:
diff changeset
   251
      _L("VideoBasePlaybackView::handlePluginError() aError = %d"), aError );
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
    switch ( aError )
hgs
parents:
diff changeset
   254
    {
hgs
parents:
diff changeset
   255
        case KErrCancel:
hgs
parents:
diff changeset
   256
		{
hgs
parents:
diff changeset
   257
            handleClosePlaybackView();
hgs
parents:
diff changeset
   258
            break;
hgs
parents:
diff changeset
   259
        }
hgs
parents:
diff changeset
   260
        case KErrMMDRMNotAuthorized:
hgs
parents:
diff changeset
   261
        case KErrCANoRights:
hgs
parents:
diff changeset
   262
        case KErrCANoPermission:
hgs
parents:
diff changeset
   263
        {
hgs
parents:
diff changeset
   264
            showDialog( hbTrId( "txt_videos_info_license_has_expired_or_it_is_missi" ) );
hgs
parents:
diff changeset
   265
            break;
hgs
parents:
diff changeset
   266
        }
hgs
parents:
diff changeset
   267
        case KMPXVideoCallOngoingError:
hgs
parents:
diff changeset
   268
        {
hgs
parents:
diff changeset
   269
            showDialog( hbTrId( "txt_videos_info_video_playback_is_not_allowed_duri" ), false );
hgs
parents:
diff changeset
   270
            break;
hgs
parents:
diff changeset
   271
        }
hgs
parents:
diff changeset
   272
        default:
hgs
parents:
diff changeset
   273
        {
hgs
parents:
diff changeset
   274
            TRAP_IGNORE(
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
                //
hgs
parents:
diff changeset
   277
                //  TextResolver instance for error resolving.
hgs
parents:
diff changeset
   278
                //
hgs
parents:
diff changeset
   279
                CTextResolver* textresolver = CTextResolver::NewLC();
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
                //
hgs
parents:
diff changeset
   282
                //  Resolve the error text
hgs
parents:
diff changeset
   283
                //
hgs
parents:
diff changeset
   284
                TPtrC text;
hgs
parents:
diff changeset
   285
                text.Set( textresolver->ResolveErrorString( aError ) );
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
                //
hgs
parents:
diff changeset
   288
                // convert to QString
hgs
parents:
diff changeset
   289
                //
hgs
parents:
diff changeset
   290
                const QString qString( (QChar*)text.Ptr(), text.Length() );
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
                //
hgs
parents:
diff changeset
   293
                // clean up textresolver
hgs
parents:
diff changeset
   294
                //
hgs
parents:
diff changeset
   295
                CleanupStack::PopAndDestroy( textresolver );
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
                //
hgs
parents:
diff changeset
   298
                // display error and close playback view
hgs
parents:
diff changeset
   299
                //
hgs
parents:
diff changeset
   300
                showDialog( qString );
hgs
parents:
diff changeset
   301
            );
hgs
parents:
diff changeset
   302
        }
hgs
parents:
diff changeset
   303
    }
hgs
parents:
diff changeset
   304
}
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   307
//   VideoBasePlaybackView::showDialog
hgs
parents:
diff changeset
   308
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   309
//
63
hgs
parents: 55
diff changeset
   310
void VideoBasePlaybackView::showDialog( const QString& string, bool closeView, bool isError )
44
hgs
parents:
diff changeset
   311
{
63
hgs
parents: 55
diff changeset
   312
    MPX_DEBUG(_L("VideoBasePlaybackView::showDialog( %s, %d, %d )"), string.data(), closeView, isError );
44
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
    //
63
hgs
parents: 55
diff changeset
   315
    // create pop-up dialog for error notes and notifications,
66
hgs
parents: 63
diff changeset
   316
    // For error notes, HbMessageBox is used:
63
hgs
parents: 55
diff changeset
   317
    //  - Note will be dismissed by using standard timeout or
hgs
parents: 55
diff changeset
   318
    //  - If user taps anywhere on the screen.
hgs
parents: 55
diff changeset
   319
    // For notifications, HbNotification dialog will be used.
44
hgs
parents:
diff changeset
   320
    //
63
hgs
parents: 55
diff changeset
   321
hgs
parents: 55
diff changeset
   322
    HbDialog *dlg = 0;
hgs
parents: 55
diff changeset
   323
    if(isError)
hgs
parents: 55
diff changeset
   324
    {
66
hgs
parents: 63
diff changeset
   325
        dlg = new HbMessageBox( string, HbMessageBox::MessageTypeWarning );
63
hgs
parents: 55
diff changeset
   326
        // dialog will be closed by timeout, no buttons used
hgs
parents: 55
diff changeset
   327
        qobject_cast<HbMessageBox*>( dlg )->setStandardButtons( HbMessageBox::NoButton );
66
hgs
parents: 63
diff changeset
   328
    }
63
hgs
parents: 55
diff changeset
   329
    else
hgs
parents: 55
diff changeset
   330
    {
hgs
parents: 55
diff changeset
   331
        dlg = new HbNotificationDialog();
hgs
parents: 55
diff changeset
   332
        qobject_cast<HbNotificationDialog*>( dlg )->setTitle( string );
66
hgs
parents: 63
diff changeset
   333
    }
44
hgs
parents:
diff changeset
   334
    dlg->setAttribute( Qt::WA_DeleteOnClose );
63
hgs
parents: 55
diff changeset
   335
    dlg->setDismissPolicy( HbPopup::TapAnywhere );
hgs
parents: 55
diff changeset
   336
    dlg->setTimeout( HbPopup::StandardTimeout );
44
hgs
parents:
diff changeset
   337
	if ( closeView )
hgs
parents:
diff changeset
   338
	{
hgs
parents:
diff changeset
   339
        //
hgs
parents:
diff changeset
   340
        // connect aboutToClose() signal to handleClosePopupDialog() slot so that
hgs
parents:
diff changeset
   341
        // when pop-up dialog is closed, playback view is closed also
hgs
parents:
diff changeset
   342
        //
hgs
parents:
diff changeset
   343
        connect( dlg, SIGNAL( aboutToClose() ), this, SLOT( handleClosePopupDialog() ) );
hgs
parents:
diff changeset
   344
    }
hgs
parents:
diff changeset
   345
hgs
parents:
diff changeset
   346
    dlg->show();
hgs
parents:
diff changeset
   347
}
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   350
//   VideoBasePlaybackView::doClosePlayer
hgs
parents:
diff changeset
   351
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   352
//
hgs
parents:
diff changeset
   353
void VideoBasePlaybackView::doClosePlayer()
hgs
parents:
diff changeset
   354
{
hgs
parents:
diff changeset
   355
    MPX_DEBUG(_L("VideoBasePlaybackView::doClosePlayer()"));
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
    handleDeactivateView();
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
    qApp->quit();
hgs
parents:
diff changeset
   360
}
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   363
//   VideoBasePlaybackView::issuePlayCommand
hgs
parents:
diff changeset
   364
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   365
//
hgs
parents:
diff changeset
   366
void VideoBasePlaybackView::issuePlayCommand()
hgs
parents:
diff changeset
   367
{
hgs
parents:
diff changeset
   368
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::issuePlayCommand()"));
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
    int err = KErrNone;
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
    TRAP( err, mVideoMpxWrapper->CreateGeneralPlaybackCommandL( EPbCmdPlay ));
hgs
parents:
diff changeset
   373
hgs
parents:
diff changeset
   374
    MPX_DEBUG(_L("VideoBasePlaybackView::issuePlayCommand() error = %d"), err);
hgs
parents:
diff changeset
   375
}
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   378
//   VideoBasePlaybackView::retrievePdlInformation
hgs
parents:
diff changeset
   379
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   380
//
hgs
parents:
diff changeset
   381
void VideoBasePlaybackView::retrievePdlInformation()
hgs
parents:
diff changeset
   382
{
hgs
parents:
diff changeset
   383
    MPX_DEBUG(_L("VideoBasePlaybackView::retrievePdlInformation()"));
hgs
parents:
diff changeset
   384
}
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   387
//   VideoBasePlaybackView::handleBufferingState
hgs
parents:
diff changeset
   388
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   389
//
hgs
parents:
diff changeset
   390
void VideoBasePlaybackView::handleBufferingState()
hgs
parents:
diff changeset
   391
{
hgs
parents:
diff changeset
   392
    MPX_DEBUG(_L("VideoBasePlaybackView::handleBufferingState()"));
hgs
parents:
diff changeset
   393
}
hgs
parents:
diff changeset
   394
hgs
parents:
diff changeset
   395
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   396
//   VideoBasePlaybackView::closePlaybackView()
hgs
parents:
diff changeset
   397
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   398
//
hgs
parents:
diff changeset
   399
void VideoBasePlaybackView::closePlaybackView()
hgs
parents:
diff changeset
   400
{
hgs
parents:
diff changeset
   401
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::closePlaybackView()"));
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
    mTimerForClosingView->start( 0 );
hgs
parents:
diff changeset
   404
}
hgs
parents:
diff changeset
   405
50
hgs
parents: 49
diff changeset
   406
// -------------------------------------------------------------------------------------------------
44
hgs
parents:
diff changeset
   407
// VideoBasePlaybackView::eventFilter
50
hgs
parents: 49
diff changeset
   408
// -------------------------------------------------------------------------------------------------
44
hgs
parents:
diff changeset
   409
//
hgs
parents:
diff changeset
   410
bool VideoBasePlaybackView::eventFilter( QObject *object, QEvent *event )
hgs
parents:
diff changeset
   411
{
hgs
parents:
diff changeset
   412
    Q_UNUSED( object );
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
    switch ( event->type() )
hgs
parents:
diff changeset
   415
    {
hgs
parents:
diff changeset
   416
        case QEvent::ApplicationActivate:
hgs
parents:
diff changeset
   417
        {
hgs
parents:
diff changeset
   418
            if ( mActivated )
hgs
parents:
diff changeset
   419
            {
hgs
parents:
diff changeset
   420
                MPX_DEBUG(_L("VideoBasePlaybackView::eventFilter foreground()") );
50
hgs
parents: 49
diff changeset
   421
                TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL(
hgs
parents: 49
diff changeset
   422
                        true, ! hbInstance->allMainWindows()[0]->isObscured() ) );
44
hgs
parents:
diff changeset
   423
            }
hgs
parents:
diff changeset
   424
            break;
hgs
parents:
diff changeset
   425
        }
hgs
parents:
diff changeset
   426
        case QEvent::ApplicationDeactivate:
hgs
parents:
diff changeset
   427
        {
hgs
parents:
diff changeset
   428
            if ( mActivated )
hgs
parents:
diff changeset
   429
            {
hgs
parents:
diff changeset
   430
                MPX_DEBUG(_L("VideoBasePlaybackView::eventFilter background()") );
50
hgs
parents: 49
diff changeset
   431
                TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL(
hgs
parents: 49
diff changeset
   432
                        false, ! hbInstance->allMainWindows()[0]->isObscured() ) );
44
hgs
parents:
diff changeset
   433
            }
hgs
parents:
diff changeset
   434
            break;
hgs
parents:
diff changeset
   435
        }
hgs
parents:
diff changeset
   436
    }
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
    return QObject::eventFilter( object, event );
hgs
parents:
diff changeset
   439
}
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   442
//   VideoBasePlaybackView::getWindow()
hgs
parents:
diff changeset
   443
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   444
//
hgs
parents:
diff changeset
   445
RWindow *VideoBasePlaybackView::getWindow()
hgs
parents:
diff changeset
   446
{
hgs
parents:
diff changeset
   447
    return static_cast<RWindow*>( hbInstance->allMainWindows()[0]->effectiveWinId()->DrawableWindow() );
hgs
parents:
diff changeset
   448
}
hgs
parents:
diff changeset
   449
hgs
parents:
diff changeset
   450
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   451
//   VideoBasePlaybackView::handleClosePopupDialog()
hgs
parents:
diff changeset
   452
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   453
//
hgs
parents:
diff changeset
   454
void VideoBasePlaybackView::handleClosePopupDialog()
hgs
parents:
diff changeset
   455
{
hgs
parents:
diff changeset
   456
    MPX_DEBUG(_L("VideoBasePlaybackView::handleClosePopupDialog()") );
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
    handleClosePlaybackView();
hgs
parents:
diff changeset
   459
}
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   462
//   VideoBasePlaybackView::gestureEvent()
hgs
parents:
diff changeset
   463
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   464
//
hgs
parents:
diff changeset
   465
void VideoBasePlaybackView::gestureEvent( QGestureEvent* event )
hgs
parents:
diff changeset
   466
{
hgs
parents:
diff changeset
   467
    if ( HbTapGesture * gesture = static_cast<HbTapGesture *>( event->gesture( Qt::TapGesture ) ) )
hgs
parents:
diff changeset
   468
    {
hgs
parents:
diff changeset
   469
        if ( gesture->state() == Qt::GestureFinished && mActivated )
hgs
parents:
diff changeset
   470
        {
hgs
parents:
diff changeset
   471
            MPX_DEBUG(_L("VideoBasePlaybackView::gestureEvent() tapGesture finished") );
hgs
parents:
diff changeset
   472
hgs
parents:
diff changeset
   473
            emit tappedOnScreen();
hgs
parents:
diff changeset
   474
        }
hgs
parents:
diff changeset
   475
    }
66
hgs
parents: 63
diff changeset
   476
hgs
parents: 63
diff changeset
   477
    if ( HbPanGesture* gesture = static_cast<HbPanGesture*>( event->gesture( Qt::PanGesture ) ) )
44
hgs
parents:
diff changeset
   478
    {
66
hgs
parents: 63
diff changeset
   479
        if ( mActivated && gesture->state() == Qt::GestureFinished )
44
hgs
parents:
diff changeset
   480
        {
66
hgs
parents: 63
diff changeset
   481
            MPX_DEBUG(_L("VideoBasePlaybackView::gestureEvent() pan gesture finished"));
44
hgs
parents:
diff changeset
   482
66
hgs
parents: 63
diff changeset
   483
            int nonZeroVelocity = (int)( gesture->sceneVelocity().x() );
hgs
parents: 63
diff changeset
   484
            int offset = (int)( gesture->sceneOffset().x() );
hgs
parents: 63
diff changeset
   485
hgs
parents: 63
diff changeset
   486
            if ( offset > KPanGestureThreshold && nonZeroVelocity > 0 )
44
hgs
parents:
diff changeset
   487
            {
66
hgs
parents: 63
diff changeset
   488
                MPX_DEBUG(_L("VideoBasePlaybackView::gestureEvent() pan gesture right") );
44
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
                emit pannedToRight();
hgs
parents:
diff changeset
   491
            }
66
hgs
parents: 63
diff changeset
   492
            else if ( offset < KPanGestureThreshold * -1.0f && nonZeroVelocity < 0 )
44
hgs
parents:
diff changeset
   493
            {
66
hgs
parents: 63
diff changeset
   494
                MPX_DEBUG(_L("VideoBasePlaybackView::gestureEvent() pan gesture left") );
44
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
                emit pannedToLeft();
hgs
parents:
diff changeset
   497
            }
hgs
parents:
diff changeset
   498
        }
hgs
parents:
diff changeset
   499
    }
hgs
parents:
diff changeset
   500
}
hgs
parents:
diff changeset
   501
50
hgs
parents: 49
diff changeset
   502
// -------------------------------------------------------------------------------------------------
hgs
parents: 49
diff changeset
   503
//   VideoBasePlaybackView::handleAppBackground()
hgs
parents: 49
diff changeset
   504
// -------------------------------------------------------------------------------------------------
hgs
parents: 49
diff changeset
   505
//
hgs
parents: 49
diff changeset
   506
void VideoBasePlaybackView::handleAppBackground()
hgs
parents: 49
diff changeset
   507
{
hgs
parents: 49
diff changeset
   508
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::handleAppBackground()") );
hgs
parents: 49
diff changeset
   509
hgs
parents: 49
diff changeset
   510
    if ( mActivated )
hgs
parents: 49
diff changeset
   511
    {
hgs
parents: 49
diff changeset
   512
        TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL( false, false ) );
hgs
parents: 49
diff changeset
   513
    }
hgs
parents: 49
diff changeset
   514
}
hgs
parents: 49
diff changeset
   515
hgs
parents: 49
diff changeset
   516
// -------------------------------------------------------------------------------------------------
hgs
parents: 49
diff changeset
   517
//   VideoBasePlaybackView::handleAppForeground()
hgs
parents: 49
diff changeset
   518
// -------------------------------------------------------------------------------------------------
hgs
parents: 49
diff changeset
   519
//
hgs
parents: 49
diff changeset
   520
void VideoBasePlaybackView::handleAppForeground()
hgs
parents: 49
diff changeset
   521
{
hgs
parents: 49
diff changeset
   522
    MPX_ENTER_EXIT(_L("VideoBasePlaybackView::handleAppForeground()") );
hgs
parents: 49
diff changeset
   523
hgs
parents: 49
diff changeset
   524
    if ( mActivated )
hgs
parents: 49
diff changeset
   525
    {
hgs
parents: 49
diff changeset
   526
        TRAP_IGNORE( mVideoMpxWrapper->IssueVideoAppForegroundCmdL( true, true ) );
hgs
parents: 49
diff changeset
   527
    }
hgs
parents: 49
diff changeset
   528
}
hgs
parents: 49
diff changeset
   529
44
hgs
parents:
diff changeset
   530
// EOF