videoplayback/videoplaybackview/controlsrc/videoplaybacktoolbar.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) 2010 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 VideoPlaybackToolBar
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
66
hgs
parents: 63
diff changeset
    18
// Version : %version:  14 %
44
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <QTimer>
hgs
parents:
diff changeset
    23
#include <QGraphicsLayout>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <hbaction.h>
hgs
parents:
diff changeset
    26
#include <hbtoolbar.h>
hgs
parents:
diff changeset
    27
#include <hbinstance.h>
hgs
parents:
diff changeset
    28
#include <hbtoolbutton.h>
hgs
parents:
diff changeset
    29
#include <w32std.h>
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "mpxvideo_debug.h"
hgs
parents:
diff changeset
    32
#include "videobaseplaybackview.h"
hgs
parents:
diff changeset
    33
#include "videoplaybacktoolbar.h"
hgs
parents:
diff changeset
    34
#include "mpxcommonvideoplaybackview.hrh"
hgs
parents:
diff changeset
    35
#include "videoplaybackdocumentloader.h"
hgs
parents:
diff changeset
    36
#include "videoplaybackviewfiledetails.h"
hgs
parents:
diff changeset
    37
#include "videoplaybackcontrolscontroller.h"
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
const int KSeekStartTimeOut = 700;
hgs
parents:
diff changeset
    40
const int KRetrieveButtonTimeOut = 1000;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    43
// VideoPlaybackToolBar::VideoPlaybackToolBar()
hgs
parents:
diff changeset
    44
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    45
//
hgs
parents:
diff changeset
    46
VideoPlaybackToolBar::VideoPlaybackToolBar(
hgs
parents:
diff changeset
    47
        VideoPlaybackControlsController* controller )
hgs
parents:
diff changeset
    48
    : mController( controller )
hgs
parents:
diff changeset
    49
    , mSeekStartTimer( NULL )
hgs
parents:
diff changeset
    50
    , mRetrieveButtonTimer( NULL )
hgs
parents:
diff changeset
    51
    , mSeekingState( ENotSeeking )
hgs
parents:
diff changeset
    52
    , mInitialized( false )
hgs
parents:
diff changeset
    53
    , mPosition( 0 )
hgs
parents:
diff changeset
    54
    , mDuration( 0 )
hgs
parents:
diff changeset
    55
    , mAspectRatio( EMPXPbvCmdNaturalAspectRatio )
hgs
parents:
diff changeset
    56
{
hgs
parents:
diff changeset
    57
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::VideoPlaybackToolBar"));
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
    mToolBar = mController->view()->toolBar();
hgs
parents:
diff changeset
    60
    mToolBar->setOrientation( Qt::Horizontal );
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    mController->view()->hideItems( Hb::ToolBarItem );
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    initialize();
hgs
parents:
diff changeset
    65
}
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    68
// VideoPlaybackToolBar::~VideoPlaybackToolBar()
hgs
parents:
diff changeset
    69
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    70
//
hgs
parents:
diff changeset
    71
VideoPlaybackToolBar::~VideoPlaybackToolBar()
hgs
parents:
diff changeset
    72
{
hgs
parents:
diff changeset
    73
    MPX_DEBUG(_L("VideoPlaybackToolBar::~VideoPlaybackToolBar()"));
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    mToolBar->clearActions();
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    for ( int i = 0 ; i < mButtonIcons.count() ; i++ )
hgs
parents:
diff changeset
    78
    {
hgs
parents:
diff changeset
    79
        if ( mButtonIcons[i] )
hgs
parents:
diff changeset
    80
        {
hgs
parents:
diff changeset
    81
            delete mButtonIcons[i];
hgs
parents:
diff changeset
    82
        }
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
    mButtonIcons.clear();
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    if ( mSeekStartTimer )
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
        if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
    89
        {
hgs
parents:
diff changeset
    90
            mSeekStartTimer->stop();
hgs
parents:
diff changeset
    91
        }
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
        delete mSeekStartTimer;
hgs
parents:
diff changeset
    94
        mSeekStartTimer = NULL;
hgs
parents:
diff changeset
    95
    }
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    if ( mRetrieveButtonTimer )
hgs
parents:
diff changeset
    98
    {
hgs
parents:
diff changeset
    99
        if ( mRetrieveButtonTimer->isActive() )
hgs
parents:
diff changeset
   100
        {
hgs
parents:
diff changeset
   101
            mRetrieveButtonTimer->stop();
hgs
parents:
diff changeset
   102
        }
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
        delete mRetrieveButtonTimer;
hgs
parents:
diff changeset
   105
        mRetrieveButtonTimer = NULL;
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
// VideoPlaybackToolBar::initialize()
hgs
parents:
diff changeset
   111
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
//
hgs
parents:
diff changeset
   113
void VideoPlaybackToolBar::initialize()
hgs
parents:
diff changeset
   114
{
hgs
parents:
diff changeset
   115
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::initialize()"));
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    //
hgs
parents:
diff changeset
   118
    // Don't need to initialize buttons once it gets initialized
hgs
parents:
diff changeset
   119
    //
hgs
parents:
diff changeset
   120
    if ( ! mInitialized )
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
        mInitialized = true;
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
        QActionGroup *actionsGroup = new QActionGroup( mToolBar );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
        for ( int i = 0 ; i < EButtonCount ; i++ )
hgs
parents:
diff changeset
   127
        {
hgs
parents:
diff changeset
   128
            mButtonActions.append( new HbAction( actionsGroup ) );
hgs
parents:
diff changeset
   129
        }
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
        for ( int i = 0 ; i < EIconCount ; i++ )
hgs
parents:
diff changeset
   132
        {
hgs
parents:
diff changeset
   133
            mButtonIcons.append( new HbIcon() );
hgs
parents:
diff changeset
   134
        }
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
        //
hgs
parents:
diff changeset
   137
        // RW button
hgs
parents:
diff changeset
   138
        //
hgs
parents:
diff changeset
   139
        mButtonIcons[ERWIcon]->setIconName( "qtg_mono_previous" );
hgs
parents:
diff changeset
   140
        mButtonActions[E2ndButton]->setIcon( *mButtonIcons[ERWIcon] );
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
        //
hgs
parents:
diff changeset
   143
        // Play/Pause button
hgs
parents:
diff changeset
   144
        //
hgs
parents:
diff changeset
   145
        mButtonIcons[EPlayIcon]->setIconName( "qtg_mono_play" );
hgs
parents:
diff changeset
   146
        mButtonIcons[EPauseIcon]->setIconName( "qtg_mono_pause" );
hgs
parents:
diff changeset
   147
        mButtonActions[E3rdButton]->setIcon( *mButtonIcons[EPlayIcon] );
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
        //
hgs
parents:
diff changeset
   150
        // FF button
hgs
parents:
diff changeset
   151
        //
hgs
parents:
diff changeset
   152
        mButtonIcons[EFFIcon]->setIconName( "qtg_mono_next" );
hgs
parents:
diff changeset
   153
        mButtonActions[E4thButton]->setIcon( *mButtonIcons[EFFIcon] );
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
        //
hgs
parents:
diff changeset
   156
        // Details button
hgs
parents:
diff changeset
   157
        //
hgs
parents:
diff changeset
   158
        mButtonIcons[EDetailsIcon]->setIconName( "qtg_mono_info" );
hgs
parents:
diff changeset
   159
        mButtonActions[E5thButton]->setIcon( *mButtonIcons[EDetailsIcon] );
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
        //
hgs
parents:
diff changeset
   162
        // Aspect ratio buttons
hgs
parents:
diff changeset
   163
        //
hgs
parents:
diff changeset
   164
        mButtonIcons[ENaturalIcon]->setIconName( "qtg_mono_aspect_ratio_natural" );
hgs
parents:
diff changeset
   165
        mButtonIcons[EStretchIcon]->setIconName( "qtg_mono_aspect_ratio_stretched" );
hgs
parents:
diff changeset
   166
        mButtonIcons[EZoomIcon]->setIconName( "qtg_mono_aspect_ratio_zoom" );
hgs
parents:
diff changeset
   167
        mButtonActions[E1stButton]->setIcon( *mButtonIcons[ENaturalIcon] );
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
        //
hgs
parents:
diff changeset
   170
        // Attach/Share button
hgs
parents:
diff changeset
   171
        //
hgs
parents:
diff changeset
   172
        mButtonIcons[EAttachIcon]->setIconName( "qtg_mono_attach" );
hgs
parents:
diff changeset
   173
        mButtonIcons[EShareIcon]->setIconName( "qtg_mono_share" );
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        for ( int i = 0 ; i < EButtonCount ; i++ )
hgs
parents:
diff changeset
   176
        {
hgs
parents:
diff changeset
   177
            mButtonActions[i]->setCheckable( false );
hgs
parents:
diff changeset
   178
            mToolBar->addAction( mButtonActions[i] );
hgs
parents:
diff changeset
   179
        }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
        mDuration = (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier;
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
        //
hgs
parents:
diff changeset
   184
        // Create a timer for seeking.
hgs
parents:
diff changeset
   185
        // We will issue SetPosition every KSeekingTimeOut msec to show the current frame to user
hgs
parents:
diff changeset
   186
        //
hgs
parents:
diff changeset
   187
        mSeekStartTimer = new QTimer();
hgs
parents:
diff changeset
   188
        mSeekStartTimer->setSingleShot( true );
hgs
parents:
diff changeset
   189
        mSeekStartTimer->setInterval( KSeekStartTimeOut );
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
        //
hgs
parents:
diff changeset
   192
        // get window size
hgs
parents:
diff changeset
   193
        //
hgs
parents:
diff changeset
   194
        RWindow *window = mController->view()->getWindow();
hgs
parents:
diff changeset
   195
        TRect displayRect = TRect( TPoint( window->Position() ), TSize( window->Size() ) );
hgs
parents:
diff changeset
   196
    }
hgs
parents:
diff changeset
   197
}
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   200
// VideoPlaybackToolBar::playPause()
hgs
parents:
diff changeset
   201
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   202
//
hgs
parents:
diff changeset
   203
void VideoPlaybackToolBar::playPause()
hgs
parents:
diff changeset
   204
{
hgs
parents:
diff changeset
   205
    MPX_DEBUG(_L("VideoPlaybackToolBar::playPause()"));
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   208
    mController->handleCommand( EMPXPbvCmdPlayPause );
hgs
parents:
diff changeset
   209
}
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   212
// VideoPlaybackToolBar::ffPressing()
hgs
parents:
diff changeset
   213
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   214
//
hgs
parents:
diff changeset
   215
void VideoPlaybackToolBar::ffPressing()
hgs
parents:
diff changeset
   216
{
hgs
parents:
diff changeset
   217
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::ffPressing()"),
hgs
parents:
diff changeset
   218
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    if ( mSeekingState == ENotSeeking )
hgs
parents:
diff changeset
   221
    {
hgs
parents:
diff changeset
   222
        mSeekingState = EFastForwarding;
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        mController->handleCommand( EMPXPbvCmdSeekForward );
hgs
parents:
diff changeset
   225
    }
hgs
parents:
diff changeset
   226
}
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
// VideoPlaybackToolBar::rwPressing()
hgs
parents:
diff changeset
   230
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   231
//
hgs
parents:
diff changeset
   232
void VideoPlaybackToolBar::rwPressing()
hgs
parents:
diff changeset
   233
{
hgs
parents:
diff changeset
   234
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::rwPressing()"),
hgs
parents:
diff changeset
   235
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
    if ( mSeekingState == ENotSeeking )
hgs
parents:
diff changeset
   238
    {
hgs
parents:
diff changeset
   239
        mSeekingState = ERewinding;
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
        mController->handleCommand( EMPXPbvCmdSeekBackward );
hgs
parents:
diff changeset
   242
    }
hgs
parents:
diff changeset
   243
}
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   246
// VideoPlaybackToolBar::ffReleased()
hgs
parents:
diff changeset
   247
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   248
//
hgs
parents:
diff changeset
   249
void VideoPlaybackToolBar::ffReleased()
hgs
parents:
diff changeset
   250
{
hgs
parents:
diff changeset
   251
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::ffReleased()"),
hgs
parents:
diff changeset
   252
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
    disconnect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( ffPressing() ) );
hgs
parents:
diff changeset
   255
hgs
parents:
diff changeset
   256
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   257
    {
hgs
parents:
diff changeset
   258
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   259
    }
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
    if ( mSeekingState == EFastForwarding )
hgs
parents:
diff changeset
   262
    {
hgs
parents:
diff changeset
   263
        mController->handleCommand( EMPXPbvCmdEndSeek );
hgs
parents:
diff changeset
   264
    }
hgs
parents:
diff changeset
   265
    else
hgs
parents:
diff changeset
   266
    {
hgs
parents:
diff changeset
   267
        int temp = mPosition + KMPXFastForward;
hgs
parents:
diff changeset
   268
        MPX_DEBUG(_L("VideoPlaybackToolBar::ffReleased() temp position = %d"), temp);
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
        //
hgs
parents:
diff changeset
   271
        // If it has the playing time which is less than KMPXFastForward, ignore
hgs
parents:
diff changeset
   272
        //
hgs
parents:
diff changeset
   273
        if ( temp < mDuration )
hgs
parents:
diff changeset
   274
        {
hgs
parents:
diff changeset
   275
            mController->handleCommand( EMPXPbvCmdSetPosition, temp );
hgs
parents:
diff changeset
   276
        }
hgs
parents:
diff changeset
   277
    }
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
    mSeekingState = ENotSeeking;
hgs
parents:
diff changeset
   280
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   281
}
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   284
// VideoPlaybackToolBar::rwReleased()
hgs
parents:
diff changeset
   285
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   286
//
hgs
parents:
diff changeset
   287
void VideoPlaybackToolBar::rwReleased()
hgs
parents:
diff changeset
   288
{
hgs
parents:
diff changeset
   289
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::rwReleased()"),
hgs
parents:
diff changeset
   290
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
    disconnect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( rwPressing() ) );
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   295
    {
hgs
parents:
diff changeset
   296
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   297
    }
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
    if ( mSeekingState == ERewinding )
hgs
parents:
diff changeset
   300
    {
hgs
parents:
diff changeset
   301
        mController->handleCommand( EMPXPbvCmdEndSeek );
hgs
parents:
diff changeset
   302
    }
hgs
parents:
diff changeset
   303
    else
hgs
parents:
diff changeset
   304
    {
hgs
parents:
diff changeset
   305
        int temp = mPosition + KMPXRewind;
hgs
parents:
diff changeset
   306
        MPX_DEBUG(_L("VideoPlaybackToolBar::rwReleased() temp position = %d"), temp);
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
        //
hgs
parents:
diff changeset
   309
        // If it played less than KMPXRewind, jump to 0
hgs
parents:
diff changeset
   310
        //
hgs
parents:
diff changeset
   311
        if ( temp < 0 )
hgs
parents:
diff changeset
   312
        {
hgs
parents:
diff changeset
   313
            temp = 0;
hgs
parents:
diff changeset
   314
        }
hgs
parents:
diff changeset
   315
hgs
parents:
diff changeset
   316
        mController->handleCommand( EMPXPbvCmdSetPosition, temp );
hgs
parents:
diff changeset
   317
    }
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
    mSeekingState = ENotSeeking;
hgs
parents:
diff changeset
   320
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   321
}
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
// VideoPlaybackToolBar::changeAspectRatio()
hgs
parents:
diff changeset
   325
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   326
//
hgs
parents:
diff changeset
   327
void VideoPlaybackToolBar::changeAspectRatio()
hgs
parents:
diff changeset
   328
{
hgs
parents:
diff changeset
   329
    MPX_DEBUG(_L("VideoPlaybackToolBar::changeAspectRatio()"));
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
    TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdStretchAspectRatio;
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
    switch( mAspectRatio )
hgs
parents:
diff changeset
   336
    {
hgs
parents:
diff changeset
   337
        case EMMFZoom:
hgs
parents:
diff changeset
   338
        {
hgs
parents:
diff changeset
   339
            cmd = EMPXPbvCmdNaturalAspectRatio;
hgs
parents:
diff changeset
   340
            break;
hgs
parents:
diff changeset
   341
        }
hgs
parents:
diff changeset
   342
        case EMMFStretch:
hgs
parents:
diff changeset
   343
        {
hgs
parents:
diff changeset
   344
            cmd = EMPXPbvCmdZoomAspectRatio;
hgs
parents:
diff changeset
   345
            break;
hgs
parents:
diff changeset
   346
        }
hgs
parents:
diff changeset
   347
    }
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
    mController->handleCommand( cmd );
hgs
parents:
diff changeset
   350
}
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   353
// VideoPlaybackToolBar::updateState()
hgs
parents:
diff changeset
   354
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   355
//
hgs
parents:
diff changeset
   356
void VideoPlaybackToolBar::updateState( TMPXPlaybackState state )
hgs
parents:
diff changeset
   357
{
hgs
parents:
diff changeset
   358
    MPX_DEBUG(_L("VideoPlaybackToolBar::updateState() state = %d"), state );
hgs
parents:
diff changeset
   359
hgs
parents:
diff changeset
   360
    switch ( state )
hgs
parents:
diff changeset
   361
    {
hgs
parents:
diff changeset
   362
        case EPbStatePlaying:
hgs
parents:
diff changeset
   363
        {
hgs
parents:
diff changeset
   364
            mToolBar->setEnabled( true );
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
            mButtonActions[E3rdButton]->setIcon( *mButtonIcons[EPauseIcon] );
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
            if ( ! mController->fileDetails()->mPausableStream  )
hgs
parents:
diff changeset
   369
            {
hgs
parents:
diff changeset
   370
                //
hgs
parents:
diff changeset
   371
                // non-pausable stream, disable 'E3rdButton' action (for 'Pause' button)
hgs
parents:
diff changeset
   372
                //
50
hgs
parents: 44
diff changeset
   373
                mButtonActions[E3rdButton]->setEnabled( false );
hgs
parents: 44
diff changeset
   374
            }
hgs
parents: 44
diff changeset
   375
44
hgs
parents:
diff changeset
   376
            break;
hgs
parents:
diff changeset
   377
        }
hgs
parents:
diff changeset
   378
        case EPbStatePaused:
hgs
parents:
diff changeset
   379
        {
hgs
parents:
diff changeset
   380
            mToolBar->setEnabled( true );
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
            mButtonActions[E3rdButton]->setIcon( *mButtonIcons[EPlayIcon] );
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
            if ( ! mButtonActions[E3rdButton]->isEnabled() )
hgs
parents:
diff changeset
   385
            {
hgs
parents:
diff changeset
   386
                //
50
hgs
parents: 44
diff changeset
   387
                // enable 'E3rdButton' action (for 'Play' button) in 'Paused' state
44
hgs
parents:
diff changeset
   388
                //
50
hgs
parents: 44
diff changeset
   389
                mButtonActions[E3rdButton]->setEnabled( true );
hgs
parents: 44
diff changeset
   390
            }
hgs
parents: 44
diff changeset
   391
hgs
parents: 44
diff changeset
   392
            break;
hgs
parents: 44
diff changeset
   393
        }
hgs
parents: 44
diff changeset
   394
        case EPbStatePluginSeeking:
hgs
parents: 44
diff changeset
   395
        {
44
hgs
parents:
diff changeset
   396
            break;
hgs
parents:
diff changeset
   397
        }
hgs
parents:
diff changeset
   398
        default:
hgs
parents:
diff changeset
   399
        {
hgs
parents:
diff changeset
   400
            mToolBar->setEnabled( false );
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
            break;
hgs
parents:
diff changeset
   403
        }
hgs
parents:
diff changeset
   404
    }
hgs
parents:
diff changeset
   405
}
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   408
// VideoPlaybackToolBar::aspectRatioChanged()
hgs
parents:
diff changeset
   409
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   410
//
hgs
parents:
diff changeset
   411
void VideoPlaybackToolBar::aspectRatioChanged( int aspectRatio )
hgs
parents:
diff changeset
   412
{
hgs
parents:
diff changeset
   413
    MPX_DEBUG(_L("VideoPlaybackToolBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
    mAspectRatio = aspectRatio;
hgs
parents:
diff changeset
   416
66
hgs
parents: 63
diff changeset
   417
    setAspectRatioButton();
44
hgs
parents:
diff changeset
   418
}
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   421
// VideoPlaybackToolBar::handleButtonPressed()
hgs
parents:
diff changeset
   422
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   423
//
hgs
parents:
diff changeset
   424
void VideoPlaybackToolBar::handleButtonPressed()
hgs
parents:
diff changeset
   425
{
hgs
parents:
diff changeset
   426
    MPX_DEBUG(_L("VideoPlaybackToolBar::handleButtonPressed()"));
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
    mController->resetDisappearingTimers( ETimerCancel );
hgs
parents:
diff changeset
   429
}
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   432
// VideoPlaybackToolBar::handleRWButtonPressed()
hgs
parents:
diff changeset
   433
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   434
//
hgs
parents:
diff changeset
   435
void VideoPlaybackToolBar::handleRWButtonPressed()
hgs
parents:
diff changeset
   436
{
hgs
parents:
diff changeset
   437
    MPX_DEBUG(_L("VideoPlaybackToolBar::handleRWButtonPressed()"));
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
    mController->resetDisappearingTimers( ETimerCancel );
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
    connect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( rwPressing() ) );
hgs
parents:
diff changeset
   442
hgs
parents:
diff changeset
   443
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   444
    {
hgs
parents:
diff changeset
   445
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   446
    }
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
    mSeekStartTimer->start();
hgs
parents:
diff changeset
   449
}
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   452
// VideoPlaybackToolBar::handleFFButtonPressed()
hgs
parents:
diff changeset
   453
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   454
//
hgs
parents:
diff changeset
   455
void VideoPlaybackToolBar::handleFFButtonPressed()
hgs
parents:
diff changeset
   456
{
hgs
parents:
diff changeset
   457
    MPX_DEBUG(_L("VideoPlaybackToolBar::handleButtonPressed()"));
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
    mController->resetDisappearingTimers( ETimerCancel );
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
    connect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( ffPressing() ) );
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   464
    {
hgs
parents:
diff changeset
   465
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   466
    }
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
    mSeekStartTimer->start();
hgs
parents:
diff changeset
   469
}
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   472
// VideoPlaybackToolBar::updateWithFileDetails()
hgs
parents:
diff changeset
   473
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   474
//
hgs
parents:
diff changeset
   475
void VideoPlaybackToolBar::updateWithFileDetails(
hgs
parents:
diff changeset
   476
        VideoPlaybackViewFileDetails* details )
hgs
parents:
diff changeset
   477
{
hgs
parents:
diff changeset
   478
    MPX_DEBUG(_L("VideoPlaybackToolBar::updateWithFileDetails()"));
hgs
parents:
diff changeset
   479
hgs
parents:
diff changeset
   480
    if ( mController->isAttachOperation() )
hgs
parents:
diff changeset
   481
    {
hgs
parents:
diff changeset
   482
        //
hgs
parents:
diff changeset
   483
        // Show attach button
hgs
parents:
diff changeset
   484
        //
hgs
parents:
diff changeset
   485
        mButtonActions[E1stButton]->setIcon( *mButtonIcons[EAttachIcon] );
hgs
parents:
diff changeset
   486
hgs
parents:
diff changeset
   487
        if ( mButtons.count() )
hgs
parents:
diff changeset
   488
        {
hgs
parents:
diff changeset
   489
            disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents:
diff changeset
   490
            connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   491
                     mController, SLOT( attachVideo() ) );
hgs
parents:
diff changeset
   492
        }
hgs
parents:
diff changeset
   493
    }
hgs
parents:
diff changeset
   494
    else
hgs
parents:
diff changeset
   495
    {
hgs
parents:
diff changeset
   496
        if ( mController->viewMode() == EFullScreenView )
hgs
parents:
diff changeset
   497
        {
66
hgs
parents: 63
diff changeset
   498
            setAspectRatioButton();
44
hgs
parents:
diff changeset
   499
66
hgs
parents: 63
diff changeset
   500
            if ( mButtons.count() )
44
hgs
parents:
diff changeset
   501
            {
66
hgs
parents: 63
diff changeset
   502
                disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents: 63
diff changeset
   503
                connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents: 63
diff changeset
   504
                         this, SLOT( changeAspectRatio() ) );
44
hgs
parents:
diff changeset
   505
            }
hgs
parents:
diff changeset
   506
        }
hgs
parents:
diff changeset
   507
        else if ( mController->viewMode() == EAudioOnlyView )
hgs
parents:
diff changeset
   508
        {
hgs
parents:
diff changeset
   509
            //
hgs
parents:
diff changeset
   510
            // Show share button
hgs
parents:
diff changeset
   511
            //
hgs
parents:
diff changeset
   512
            mButtonActions[E1stButton]->setIcon( *mButtonIcons[EShareIcon] );
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
            if ( mController->fileDetails()->mPlaybackMode == EMPXVideoStreaming ||
hgs
parents:
diff changeset
   515
                 mController->fileDetails()->mPlaybackMode == EMPXVideoLiveStreaming )
hgs
parents:
diff changeset
   516
            {
hgs
parents:
diff changeset
   517
                //
hgs
parents:
diff changeset
   518
                // dim 'share' button for streaming
hgs
parents:
diff changeset
   519
                //
hgs
parents:
diff changeset
   520
                mButtonActions[E1stButton]->setEnabled( false );
hgs
parents:
diff changeset
   521
            }
hgs
parents:
diff changeset
   522
            else
hgs
parents:
diff changeset
   523
            {
hgs
parents:
diff changeset
   524
                //
hgs
parents:
diff changeset
   525
                // enable 'share' button
hgs
parents:
diff changeset
   526
                //
hgs
parents:
diff changeset
   527
                mButtonActions[E1stButton]->setEnabled( true );
hgs
parents:
diff changeset
   528
hgs
parents:
diff changeset
   529
                if ( mButtons.count() )
hgs
parents:
diff changeset
   530
                {
hgs
parents:
diff changeset
   531
                    disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents:
diff changeset
   532
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   533
                             mController, SLOT( sendVideo() ) );
hgs
parents:
diff changeset
   534
                }
hgs
parents:
diff changeset
   535
            }
hgs
parents:
diff changeset
   536
        }
hgs
parents:
diff changeset
   537
    }
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
    //
hgs
parents:
diff changeset
   540
    // for audio-only clips and tv-out, default view is audionOnlyView
hgs
parents:
diff changeset
   541
    // therefore, dim details button
hgs
parents:
diff changeset
   542
    //
hgs
parents:
diff changeset
   543
    if ( ! details->mVideoEnabled || details->mTvOutConnected )
hgs
parents:
diff changeset
   544
    {
hgs
parents:
diff changeset
   545
        mButtonActions[E5thButton]->setEnabled( false );
hgs
parents:
diff changeset
   546
    }
hgs
parents:
diff changeset
   547
    else
hgs
parents:
diff changeset
   548
    {
hgs
parents:
diff changeset
   549
        mButtonActions[E5thButton]->setEnabled( true );
hgs
parents:
diff changeset
   550
    }
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
    if ( details->mSeekable && details->mPausableStream )
hgs
parents:
diff changeset
   553
    {
hgs
parents:
diff changeset
   554
        mButtonActions[E2ndButton]->setEnabled( true );
hgs
parents:
diff changeset
   555
        mButtonActions[E4thButton]->setEnabled( true );
hgs
parents:
diff changeset
   556
    }
hgs
parents:
diff changeset
   557
    else
hgs
parents:
diff changeset
   558
    {
hgs
parents:
diff changeset
   559
        mButtonActions[E2ndButton]->setEnabled( false );
hgs
parents:
diff changeset
   560
        mButtonActions[E4thButton]->setEnabled( false );
hgs
parents:
diff changeset
   561
    }
hgs
parents:
diff changeset
   562
hgs
parents:
diff changeset
   563
    //
hgs
parents:
diff changeset
   564
    // The buttons 'Play' and 'Pause' are shared by the same 'E3rdButton' action.
hgs
parents:
diff changeset
   565
    // The logic to enable or disable 'E3rdButton' will depend on the current playback state.
hgs
parents:
diff changeset
   566
    //
hgs
parents:
diff changeset
   567
    updateState( mController->state() );
50
hgs
parents: 44
diff changeset
   568
44
hgs
parents:
diff changeset
   569
    //
hgs
parents:
diff changeset
   570
    // toolbar creates button once it gets visible, so we don't know exact timing when toolbar
hgs
parents:
diff changeset
   571
    // creates button, so start timer to get layout information once the toolbar gets visible.
hgs
parents:
diff changeset
   572
    // This is needed since we don't use toolbar in proper way.
hgs
parents:
diff changeset
   573
    //
hgs
parents:
diff changeset
   574
    if ( ! mRetrieveButtonTimer && ! mButtons.count() )
hgs
parents:
diff changeset
   575
    {
hgs
parents:
diff changeset
   576
        mRetrieveButtonTimer = new QTimer();
hgs
parents:
diff changeset
   577
        mRetrieveButtonTimer->setSingleShot( false );
hgs
parents:
diff changeset
   578
        mRetrieveButtonTimer->setInterval( KRetrieveButtonTimeOut );
hgs
parents:
diff changeset
   579
        connect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );
hgs
parents:
diff changeset
   580
hgs
parents:
diff changeset
   581
        mRetrieveButtonTimer->start();
hgs
parents:
diff changeset
   582
    }
hgs
parents:
diff changeset
   583
hgs
parents:
diff changeset
   584
    durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier );
hgs
parents:
diff changeset
   585
}
hgs
parents:
diff changeset
   586
hgs
parents:
diff changeset
   587
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   588
// VideoPlaybackToolBar::openDetailsView()
hgs
parents:
diff changeset
   589
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   590
//
hgs
parents:
diff changeset
   591
void VideoPlaybackToolBar::openDetailsView()
hgs
parents:
diff changeset
   592
{
hgs
parents:
diff changeset
   593
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::openDetailsView()"));
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
    TPlaybackViewMode viewMode = mController->viewMode();
hgs
parents:
diff changeset
   596
hgs
parents:
diff changeset
   597
    if ( viewMode == EFullScreenView )
hgs
parents:
diff changeset
   598
    {
63
hgs
parents: 58
diff changeset
   599
        mController->evaluateAndChangeViewMode( EDetailsView, true );
44
hgs
parents:
diff changeset
   600
    }
hgs
parents:
diff changeset
   601
}
hgs
parents:
diff changeset
   602
hgs
parents:
diff changeset
   603
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   604
// VideoPlaybackToolBar::positionChanged
hgs
parents:
diff changeset
   605
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   606
//
hgs
parents:
diff changeset
   607
void VideoPlaybackToolBar::positionChanged( int position )
hgs
parents:
diff changeset
   608
{
hgs
parents:
diff changeset
   609
    MPX_DEBUG(_L("VideoPlaybackToolBar::positionChanged position = %d"), position );
hgs
parents:
diff changeset
   610
hgs
parents:
diff changeset
   611
    mPosition = position;
hgs
parents:
diff changeset
   612
}
hgs
parents:
diff changeset
   613
hgs
parents:
diff changeset
   614
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   615
// VideoPlaybackToolBar::durationChanged
hgs
parents:
diff changeset
   616
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   617
//
hgs
parents:
diff changeset
   618
void VideoPlaybackToolBar::durationChanged( int duration )
hgs
parents:
diff changeset
   619
{
hgs
parents:
diff changeset
   620
    MPX_DEBUG(_L("VideoPlaybackToolBar::durationChanged duration = %d"), duration );
hgs
parents:
diff changeset
   621
hgs
parents:
diff changeset
   622
    mDuration = duration;
hgs
parents:
diff changeset
   623
}
hgs
parents:
diff changeset
   624
hgs
parents:
diff changeset
   625
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   626
// VideoPlaybackToolBar::setVisible
hgs
parents:
diff changeset
   627
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   628
//
hgs
parents:
diff changeset
   629
void VideoPlaybackToolBar::setVisible( bool visible )
hgs
parents:
diff changeset
   630
{
hgs
parents:
diff changeset
   631
    MPX_DEBUG(_L("VideoPlaybackToolBar::setVisible visible = %d"), visible );
hgs
parents:
diff changeset
   632
hgs
parents:
diff changeset
   633
    if ( visible )
hgs
parents:
diff changeset
   634
    {
hgs
parents:
diff changeset
   635
        mController->view()->showItems( Hb::ToolBarItem );
hgs
parents:
diff changeset
   636
    }
hgs
parents:
diff changeset
   637
    else
hgs
parents:
diff changeset
   638
    {
hgs
parents:
diff changeset
   639
        mController->view()->hideItems( Hb::ToolBarItem );
hgs
parents:
diff changeset
   640
    }
hgs
parents:
diff changeset
   641
}
hgs
parents:
diff changeset
   642
hgs
parents:
diff changeset
   643
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   644
// VideoPlaybackToolBar::retrieveButtons()
hgs
parents:
diff changeset
   645
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   646
//
hgs
parents:
diff changeset
   647
void VideoPlaybackToolBar::retrieveButtons()
hgs
parents:
diff changeset
   648
{
hgs
parents:
diff changeset
   649
    MPX_DEBUG(_L("VideoPlaybackToolBar::retrieveButtons()"));
hgs
parents:
diff changeset
   650
hgs
parents:
diff changeset
   651
    if ( mButtons.count() == 0 )
hgs
parents:
diff changeset
   652
    {
hgs
parents:
diff changeset
   653
        QGraphicsLayout *layout = mToolBar->layout();
hgs
parents:
diff changeset
   654
hgs
parents:
diff changeset
   655
        if ( layout )
hgs
parents:
diff changeset
   656
        {
hgs
parents:
diff changeset
   657
            if ( mRetrieveButtonTimer )
hgs
parents:
diff changeset
   658
            {
hgs
parents:
diff changeset
   659
                disconnect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );
hgs
parents:
diff changeset
   660
                if ( mRetrieveButtonTimer->isActive() )
hgs
parents:
diff changeset
   661
                {
hgs
parents:
diff changeset
   662
                    mRetrieveButtonTimer->stop();
hgs
parents:
diff changeset
   663
                }
hgs
parents:
diff changeset
   664
            }
hgs
parents:
diff changeset
   665
hgs
parents:
diff changeset
   666
            for ( int i = 0 ; i < layout->count() ; i++ )
hgs
parents:
diff changeset
   667
            {
hgs
parents:
diff changeset
   668
                mButtons.append( dynamic_cast<HbToolButton*>( layout->itemAt( i ) ) );
hgs
parents:
diff changeset
   669
            }
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
            //
hgs
parents:
diff changeset
   672
            // Connect signal and slots
hgs
parents:
diff changeset
   673
            //
hgs
parents:
diff changeset
   674
            connect( mButtons[E1stButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   675
hgs
parents:
diff changeset
   676
            connect( mButtons[E2ndButton], SIGNAL( pressed() ), this, SLOT( handleRWButtonPressed() ) );
hgs
parents:
diff changeset
   677
            connect( mButtons[E2ndButton], SIGNAL( released() ), this, SLOT( rwReleased() ) );
hgs
parents:
diff changeset
   678
hgs
parents:
diff changeset
   679
            connect( mButtons[E3rdButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   680
            connect( mButtons[E3rdButton], SIGNAL( released() ), this, SLOT( playPause() ) );
hgs
parents:
diff changeset
   681
hgs
parents:
diff changeset
   682
            connect( mButtons[E4thButton], SIGNAL( pressed() ), this, SLOT( handleFFButtonPressed() ) );
hgs
parents:
diff changeset
   683
            connect( mButtons[E4thButton], SIGNAL( released() ), this, SLOT( ffReleased() ) );
hgs
parents:
diff changeset
   684
hgs
parents:
diff changeset
   685
            connect( mButtons[E5thButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   686
            connect( mButtons[E5thButton], SIGNAL( released() ), this, SLOT( openDetailsView() ) );
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
            if ( mController->isAttachOperation() )
hgs
parents:
diff changeset
   689
            {
hgs
parents:
diff changeset
   690
                connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   691
                         mController, SLOT( attachVideo() ) );
hgs
parents:
diff changeset
   692
            }
hgs
parents:
diff changeset
   693
            else
hgs
parents:
diff changeset
   694
            {
hgs
parents:
diff changeset
   695
                if ( mController->viewMode() == EFullScreenView )
hgs
parents:
diff changeset
   696
                {
hgs
parents:
diff changeset
   697
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   698
                             this, SLOT( changeAspectRatio() ) );
hgs
parents:
diff changeset
   699
                }
hgs
parents:
diff changeset
   700
                else if ( mController->viewMode() == EAudioOnlyView )
hgs
parents:
diff changeset
   701
                {
hgs
parents:
diff changeset
   702
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   703
                             mController, SLOT( sendVideo() ) );
hgs
parents:
diff changeset
   704
                }
hgs
parents:
diff changeset
   705
            }
hgs
parents:
diff changeset
   706
        }
hgs
parents:
diff changeset
   707
    }
hgs
parents:
diff changeset
   708
}
hgs
parents:
diff changeset
   709
58
hgs
parents: 50
diff changeset
   710
// -------------------------------------------------------------------------------------------------
hgs
parents: 50
diff changeset
   711
// VideoPlaybackToolBar::resetControl
hgs
parents: 50
diff changeset
   712
// -------------------------------------------------------------------------------------------------
hgs
parents: 50
diff changeset
   713
//
hgs
parents: 50
diff changeset
   714
void VideoPlaybackToolBar::resetControl()
hgs
parents: 50
diff changeset
   715
{
hgs
parents: 50
diff changeset
   716
    MPX_DEBUG(_L("VideoPlaybackToolBar::resetControl"));
hgs
parents: 50
diff changeset
   717
hgs
parents: 50
diff changeset
   718
    switch( mSeekingState )
hgs
parents: 50
diff changeset
   719
    {
hgs
parents: 50
diff changeset
   720
        case EFastForwarding:
hgs
parents: 50
diff changeset
   721
        {
hgs
parents: 50
diff changeset
   722
            ffReleased();
hgs
parents: 50
diff changeset
   723
            break;
hgs
parents: 50
diff changeset
   724
        }
hgs
parents: 50
diff changeset
   725
        case ERewinding:
hgs
parents: 50
diff changeset
   726
        {
hgs
parents: 50
diff changeset
   727
            rwReleased();
hgs
parents: 50
diff changeset
   728
            break;
hgs
parents: 50
diff changeset
   729
        }
hgs
parents: 50
diff changeset
   730
    }
hgs
parents: 50
diff changeset
   731
}
hgs
parents: 50
diff changeset
   732
66
hgs
parents: 63
diff changeset
   733
// -------------------------------------------------------------------------------------------------
hgs
parents: 63
diff changeset
   734
// VideoPlaybackToolBar::setAspectRatioButton
hgs
parents: 63
diff changeset
   735
// -------------------------------------------------------------------------------------------------
hgs
parents: 63
diff changeset
   736
//
hgs
parents: 63
diff changeset
   737
void VideoPlaybackToolBar::setAspectRatioButton()
hgs
parents: 63
diff changeset
   738
{
hgs
parents: 63
diff changeset
   739
    MPX_DEBUG(_L("VideoPlaybackToolBar::setAspectRatioButton"));
hgs
parents: 63
diff changeset
   740
hgs
parents: 63
diff changeset
   741
    //
hgs
parents: 63
diff changeset
   742
    // If we are in attach service or audio only view, then don't update the icon.
hgs
parents: 63
diff changeset
   743
    // Aspect ratio icon slots are shared with attach and share icon.
hgs
parents: 63
diff changeset
   744
    // Just update the mAspectRatio
hgs
parents: 63
diff changeset
   745
    // and once we go back to full screen, we will show the correct aspect ratio icon
hgs
parents: 63
diff changeset
   746
    //
hgs
parents: 63
diff changeset
   747
    if ( ! mController->isAttachOperation() && mController->viewMode() == EFullScreenView )
hgs
parents: 63
diff changeset
   748
    {
hgs
parents: 63
diff changeset
   749
        switch( mAspectRatio )
hgs
parents: 63
diff changeset
   750
        {
hgs
parents: 63
diff changeset
   751
            case EMMFNatural:
hgs
parents: 63
diff changeset
   752
            {
hgs
parents: 63
diff changeset
   753
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[EStretchIcon] );
hgs
parents: 63
diff changeset
   754
                break;
hgs
parents: 63
diff changeset
   755
            }
hgs
parents: 63
diff changeset
   756
            case EMMFStretch:
hgs
parents: 63
diff changeset
   757
            {
hgs
parents: 63
diff changeset
   758
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[EZoomIcon] );
hgs
parents: 63
diff changeset
   759
                break;
hgs
parents: 63
diff changeset
   760
            }
hgs
parents: 63
diff changeset
   761
            default:
hgs
parents: 63
diff changeset
   762
            {
hgs
parents: 63
diff changeset
   763
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[ENaturalIcon] );
hgs
parents: 63
diff changeset
   764
                break;
hgs
parents: 63
diff changeset
   765
            }
hgs
parents: 63
diff changeset
   766
        }
hgs
parents: 63
diff changeset
   767
hgs
parents: 63
diff changeset
   768
        if ( mController->fileDetails()->mAspectRatioChangeable )
hgs
parents: 63
diff changeset
   769
        {
hgs
parents: 63
diff changeset
   770
            if ( ! mButtonActions[E1stButton]->isEnabled() )
hgs
parents: 63
diff changeset
   771
            {
hgs
parents: 63
diff changeset
   772
                mButtonActions[E1stButton]->setEnabled( true );
hgs
parents: 63
diff changeset
   773
            }
hgs
parents: 63
diff changeset
   774
        }
hgs
parents: 63
diff changeset
   775
        else
hgs
parents: 63
diff changeset
   776
        {
hgs
parents: 63
diff changeset
   777
            if ( mButtonActions[E1stButton]->isEnabled() )
hgs
parents: 63
diff changeset
   778
            {
hgs
parents: 63
diff changeset
   779
                mButtonActions[E1stButton]->setEnabled( false );
hgs
parents: 63
diff changeset
   780
            }
hgs
parents: 63
diff changeset
   781
        }
hgs
parents: 63
diff changeset
   782
    }
hgs
parents: 63
diff changeset
   783
}
hgs
parents: 63
diff changeset
   784
44
hgs
parents:
diff changeset
   785
//End of file