videoplayback/videoplaybackview/controlsrc/videoplaybacktoolbar.cpp
author hgs
Thu, 08 Jul 2010 13:05:19 +0300
changeset 44 518105d52e45
child 50 21fe8338c6bf
permissions -rw-r--r--
201027
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
hgs
parents:
diff changeset
    18
// Version : %version:  10 %
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
        // get window aspect ratio
hgs
parents:
diff changeset
   199
        //   if device is in portrait mode, width > height
hgs
parents:
diff changeset
   200
        //   if device is in landscape mode, width < height
hgs
parents:
diff changeset
   201
        //
hgs
parents:
diff changeset
   202
        TReal32 width = (TReal32) displayRect.Width();
hgs
parents:
diff changeset
   203
        TReal32 height = (TReal32) displayRect.Height();
hgs
parents:
diff changeset
   204
        mDisplayAspectRatio = (width > height)? (width / height) : (height / width);
hgs
parents:
diff changeset
   205
    }
hgs
parents:
diff changeset
   206
}
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   209
// VideoPlaybackToolBar::playPause()
hgs
parents:
diff changeset
   210
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   211
//
hgs
parents:
diff changeset
   212
void VideoPlaybackToolBar::playPause()
hgs
parents:
diff changeset
   213
{
hgs
parents:
diff changeset
   214
    MPX_DEBUG(_L("VideoPlaybackToolBar::playPause()"));
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   217
    mController->handleCommand( EMPXPbvCmdPlayPause );
hgs
parents:
diff changeset
   218
}
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   221
// VideoPlaybackToolBar::ffPressing()
hgs
parents:
diff changeset
   222
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   223
//
hgs
parents:
diff changeset
   224
void VideoPlaybackToolBar::ffPressing()
hgs
parents:
diff changeset
   225
{
hgs
parents:
diff changeset
   226
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::ffPressing()"),
hgs
parents:
diff changeset
   227
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
    if ( mSeekingState == ENotSeeking )
hgs
parents:
diff changeset
   230
    {
hgs
parents:
diff changeset
   231
        mSeekingState = EFastForwarding;
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
        mController->handleCommand( EMPXPbvCmdSeekForward );
hgs
parents:
diff changeset
   234
    }
hgs
parents:
diff changeset
   235
}
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   238
// VideoPlaybackToolBar::rwPressing()
hgs
parents:
diff changeset
   239
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   240
//
hgs
parents:
diff changeset
   241
void VideoPlaybackToolBar::rwPressing()
hgs
parents:
diff changeset
   242
{
hgs
parents:
diff changeset
   243
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::rwPressing()"),
hgs
parents:
diff changeset
   244
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
    if ( mSeekingState == ENotSeeking )
hgs
parents:
diff changeset
   247
    {
hgs
parents:
diff changeset
   248
        mSeekingState = ERewinding;
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
        mController->handleCommand( EMPXPbvCmdSeekBackward );
hgs
parents:
diff changeset
   251
    }
hgs
parents:
diff changeset
   252
}
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   255
// VideoPlaybackToolBar::ffReleased()
hgs
parents:
diff changeset
   256
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   257
//
hgs
parents:
diff changeset
   258
void VideoPlaybackToolBar::ffReleased()
hgs
parents:
diff changeset
   259
{
hgs
parents:
diff changeset
   260
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::ffReleased()"),
hgs
parents:
diff changeset
   261
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
    disconnect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( ffPressing() ) );
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   266
    {
hgs
parents:
diff changeset
   267
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   268
    }
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
    if ( mSeekingState == EFastForwarding )
hgs
parents:
diff changeset
   271
    {
hgs
parents:
diff changeset
   272
        mController->handleCommand( EMPXPbvCmdEndSeek );
hgs
parents:
diff changeset
   273
    }
hgs
parents:
diff changeset
   274
    else
hgs
parents:
diff changeset
   275
    {
hgs
parents:
diff changeset
   276
        int temp = mPosition + KMPXFastForward;
hgs
parents:
diff changeset
   277
        MPX_DEBUG(_L("VideoPlaybackToolBar::ffReleased() temp position = %d"), temp);
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
        //
hgs
parents:
diff changeset
   280
        // If it has the playing time which is less than KMPXFastForward, ignore
hgs
parents:
diff changeset
   281
        //
hgs
parents:
diff changeset
   282
        if ( temp < mDuration )
hgs
parents:
diff changeset
   283
        {
hgs
parents:
diff changeset
   284
            mController->handleCommand( EMPXPbvCmdSetPosition, temp );
hgs
parents:
diff changeset
   285
        }
hgs
parents:
diff changeset
   286
    }
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
    mSeekingState = ENotSeeking;
hgs
parents:
diff changeset
   289
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   290
}
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   293
// VideoPlaybackToolBar::rwReleased()
hgs
parents:
diff changeset
   294
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   295
//
hgs
parents:
diff changeset
   296
void VideoPlaybackToolBar::rwReleased()
hgs
parents:
diff changeset
   297
{
hgs
parents:
diff changeset
   298
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::rwReleased()"),
hgs
parents:
diff changeset
   299
                   _L("mSeekingState = %d"), mSeekingState );
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
    disconnect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( rwPressing() ) );
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   304
    {
hgs
parents:
diff changeset
   305
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   306
    }
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
    if ( mSeekingState == ERewinding )
hgs
parents:
diff changeset
   309
    {
hgs
parents:
diff changeset
   310
        mController->handleCommand( EMPXPbvCmdEndSeek );
hgs
parents:
diff changeset
   311
    }
hgs
parents:
diff changeset
   312
    else
hgs
parents:
diff changeset
   313
    {
hgs
parents:
diff changeset
   314
        int temp = mPosition + KMPXRewind;
hgs
parents:
diff changeset
   315
        MPX_DEBUG(_L("VideoPlaybackToolBar::rwReleased() temp position = %d"), temp);
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
        //
hgs
parents:
diff changeset
   318
        // If it played less than KMPXRewind, jump to 0
hgs
parents:
diff changeset
   319
        //
hgs
parents:
diff changeset
   320
        if ( temp < 0 )
hgs
parents:
diff changeset
   321
        {
hgs
parents:
diff changeset
   322
            temp = 0;
hgs
parents:
diff changeset
   323
        }
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
        mController->handleCommand( EMPXPbvCmdSetPosition, temp );
hgs
parents:
diff changeset
   326
    }
hgs
parents:
diff changeset
   327
hgs
parents:
diff changeset
   328
    mSeekingState = ENotSeeking;
hgs
parents:
diff changeset
   329
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   330
}
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   333
// VideoPlaybackToolBar::changeAspectRatio()
hgs
parents:
diff changeset
   334
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   335
//
hgs
parents:
diff changeset
   336
void VideoPlaybackToolBar::changeAspectRatio()
hgs
parents:
diff changeset
   337
{
hgs
parents:
diff changeset
   338
    MPX_DEBUG(_L("VideoPlaybackToolBar::changeAspectRatio()"));
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
    mController->resetDisappearingTimers( ETimerReset );
hgs
parents:
diff changeset
   341
hgs
parents:
diff changeset
   342
    TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdStretchAspectRatio;
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
    switch( mAspectRatio )
hgs
parents:
diff changeset
   345
    {
hgs
parents:
diff changeset
   346
        case EMMFZoom:
hgs
parents:
diff changeset
   347
        {
hgs
parents:
diff changeset
   348
            cmd = EMPXPbvCmdNaturalAspectRatio;
hgs
parents:
diff changeset
   349
            break;
hgs
parents:
diff changeset
   350
        }
hgs
parents:
diff changeset
   351
        case EMMFStretch:
hgs
parents:
diff changeset
   352
        {
hgs
parents:
diff changeset
   353
            cmd = EMPXPbvCmdZoomAspectRatio;
hgs
parents:
diff changeset
   354
            break;
hgs
parents:
diff changeset
   355
        }
hgs
parents:
diff changeset
   356
    }
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
    mController->handleCommand( cmd );
hgs
parents:
diff changeset
   359
}
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   362
// VideoPlaybackToolBar::updateState()
hgs
parents:
diff changeset
   363
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   364
//
hgs
parents:
diff changeset
   365
void VideoPlaybackToolBar::updateState( TMPXPlaybackState state )
hgs
parents:
diff changeset
   366
{
hgs
parents:
diff changeset
   367
    MPX_DEBUG(_L("VideoPlaybackToolBar::updateState() state = %d"), state );
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
    switch ( state )
hgs
parents:
diff changeset
   370
    {
hgs
parents:
diff changeset
   371
        case EPbStatePlaying:
hgs
parents:
diff changeset
   372
        {
hgs
parents:
diff changeset
   373
            mToolBar->setEnabled( true );
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
            mButtonActions[E3rdButton]->setIcon( *mButtonIcons[EPauseIcon] );
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
            if ( ! mController->fileDetails()->mPausableStream  )
hgs
parents:
diff changeset
   378
            {
hgs
parents:
diff changeset
   379
                //
hgs
parents:
diff changeset
   380
                // non-pausable stream, disable 'E3rdButton' action (for 'Pause' button)
hgs
parents:
diff changeset
   381
                //
hgs
parents:
diff changeset
   382
                mButtonActions[E3rdButton]->setEnabled( false ); 
hgs
parents:
diff changeset
   383
            }       
hgs
parents:
diff changeset
   384
			     
hgs
parents:
diff changeset
   385
            break;
hgs
parents:
diff changeset
   386
        }
hgs
parents:
diff changeset
   387
        case EPbStatePaused:
hgs
parents:
diff changeset
   388
        {
hgs
parents:
diff changeset
   389
            mToolBar->setEnabled( true );
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
            mButtonActions[E3rdButton]->setIcon( *mButtonIcons[EPlayIcon] );
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
            if ( ! mButtonActions[E3rdButton]->isEnabled() )
hgs
parents:
diff changeset
   394
            {
hgs
parents:
diff changeset
   395
                //
hgs
parents:
diff changeset
   396
                // enable 'E3rdButton' action (for 'Play' button) in 'Paused' state 
hgs
parents:
diff changeset
   397
                //
hgs
parents:
diff changeset
   398
                mButtonActions[E3rdButton]->setEnabled( true ); 
hgs
parents:
diff changeset
   399
            }       
hgs
parents:
diff changeset
   400
                 
hgs
parents:
diff changeset
   401
            break;
hgs
parents:
diff changeset
   402
        }
hgs
parents:
diff changeset
   403
        default:
hgs
parents:
diff changeset
   404
        {
hgs
parents:
diff changeset
   405
            mToolBar->setEnabled( false );
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
            break;
hgs
parents:
diff changeset
   408
        }
hgs
parents:
diff changeset
   409
    }
hgs
parents:
diff changeset
   410
}
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   413
// VideoPlaybackToolBar::aspectRatioChanged()
hgs
parents:
diff changeset
   414
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   415
//
hgs
parents:
diff changeset
   416
void VideoPlaybackToolBar::aspectRatioChanged( int aspectRatio )
hgs
parents:
diff changeset
   417
{
hgs
parents:
diff changeset
   418
    MPX_DEBUG(_L("VideoPlaybackToolBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
    mAspectRatio = aspectRatio;
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
    //
hgs
parents:
diff changeset
   423
    // If we are in attach service or audio only view, then don't update the icon.
hgs
parents:
diff changeset
   424
	// Aspect ratio icon slots are shared with attach and share icon.
hgs
parents:
diff changeset
   425
	// Just update the mAspectRatio
hgs
parents:
diff changeset
   426
	// and once we go back to full screen, we will show the correct aspect ratio icon
hgs
parents:
diff changeset
   427
	//
hgs
parents:
diff changeset
   428
    if ( ! mController->isAttachOperation() && mController->viewMode() == EFullScreenView )
hgs
parents:
diff changeset
   429
    {
hgs
parents:
diff changeset
   430
        switch( mAspectRatio )
hgs
parents:
diff changeset
   431
        {
hgs
parents:
diff changeset
   432
            case EMMFNatural:
hgs
parents:
diff changeset
   433
            {
hgs
parents:
diff changeset
   434
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[EStretchIcon] );
hgs
parents:
diff changeset
   435
                break;
hgs
parents:
diff changeset
   436
            }
hgs
parents:
diff changeset
   437
            case EMMFStretch:
hgs
parents:
diff changeset
   438
            {
hgs
parents:
diff changeset
   439
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[EZoomIcon] );
hgs
parents:
diff changeset
   440
                break;
hgs
parents:
diff changeset
   441
            }
hgs
parents:
diff changeset
   442
            default:
hgs
parents:
diff changeset
   443
            {
hgs
parents:
diff changeset
   444
                mButtonActions[E1stButton]->setIcon( *mButtonIcons[ENaturalIcon] );
hgs
parents:
diff changeset
   445
                break;
hgs
parents:
diff changeset
   446
            }
hgs
parents:
diff changeset
   447
        }
hgs
parents:
diff changeset
   448
    }
hgs
parents:
diff changeset
   449
}
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   452
// VideoPlaybackToolBar::handleButtonPressed()
hgs
parents:
diff changeset
   453
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   454
//
hgs
parents:
diff changeset
   455
void VideoPlaybackToolBar::handleButtonPressed()
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
hgs
parents:
diff changeset
   462
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   463
// VideoPlaybackToolBar::handleRWButtonPressed()
hgs
parents:
diff changeset
   464
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   465
//
hgs
parents:
diff changeset
   466
void VideoPlaybackToolBar::handleRWButtonPressed()
hgs
parents:
diff changeset
   467
{
hgs
parents:
diff changeset
   468
    MPX_DEBUG(_L("VideoPlaybackToolBar::handleRWButtonPressed()"));
hgs
parents:
diff changeset
   469
hgs
parents:
diff changeset
   470
    mController->resetDisappearingTimers( ETimerCancel );
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
    connect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( rwPressing() ) );
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   475
    {
hgs
parents:
diff changeset
   476
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   477
    }
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
    mSeekStartTimer->start();
hgs
parents:
diff changeset
   480
}
hgs
parents:
diff changeset
   481
hgs
parents:
diff changeset
   482
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   483
// VideoPlaybackToolBar::handleFFButtonPressed()
hgs
parents:
diff changeset
   484
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   485
//
hgs
parents:
diff changeset
   486
void VideoPlaybackToolBar::handleFFButtonPressed()
hgs
parents:
diff changeset
   487
{
hgs
parents:
diff changeset
   488
    MPX_DEBUG(_L("VideoPlaybackToolBar::handleButtonPressed()"));
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
    mController->resetDisappearingTimers( ETimerCancel );
hgs
parents:
diff changeset
   491
hgs
parents:
diff changeset
   492
    connect( mSeekStartTimer, SIGNAL( timeout() ), this, SLOT( ffPressing() ) );
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
    if ( mSeekStartTimer->isActive() )
hgs
parents:
diff changeset
   495
    {
hgs
parents:
diff changeset
   496
        mSeekStartTimer->stop();
hgs
parents:
diff changeset
   497
    }
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
    mSeekStartTimer->start();
hgs
parents:
diff changeset
   500
}
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   503
// VideoPlaybackToolBar::updateWithFileDetails()
hgs
parents:
diff changeset
   504
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   505
//
hgs
parents:
diff changeset
   506
void VideoPlaybackToolBar::updateWithFileDetails(
hgs
parents:
diff changeset
   507
        VideoPlaybackViewFileDetails* details )
hgs
parents:
diff changeset
   508
{
hgs
parents:
diff changeset
   509
    MPX_DEBUG(_L("VideoPlaybackToolBar::updateWithFileDetails()"));
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
    if ( mController->isAttachOperation() )
hgs
parents:
diff changeset
   512
    {
hgs
parents:
diff changeset
   513
        //
hgs
parents:
diff changeset
   514
        // Show attach button
hgs
parents:
diff changeset
   515
        //
hgs
parents:
diff changeset
   516
        mButtonActions[E1stButton]->setIcon( *mButtonIcons[EAttachIcon] );
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
        if ( mButtons.count() )
hgs
parents:
diff changeset
   519
        {
hgs
parents:
diff changeset
   520
            disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents:
diff changeset
   521
            connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   522
                     mController, SLOT( attachVideo() ) );
hgs
parents:
diff changeset
   523
        }
hgs
parents:
diff changeset
   524
    }
hgs
parents:
diff changeset
   525
    else
hgs
parents:
diff changeset
   526
    {
hgs
parents:
diff changeset
   527
        if ( mController->viewMode() == EFullScreenView )
hgs
parents:
diff changeset
   528
        {
hgs
parents:
diff changeset
   529
            //
hgs
parents:
diff changeset
   530
            // Show aspect ratio button
hgs
parents:
diff changeset
   531
            //
hgs
parents:
diff changeset
   532
            aspectRatioChanged( mAspectRatio );
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
            if ( ! details->mVideoEnabled ||
hgs
parents:
diff changeset
   535
                   details->mVideoHeight <= 0 ||
hgs
parents:
diff changeset
   536
                   details->mVideoWidth <= 0 ||
hgs
parents:
diff changeset
   537
                   details->mTvOutConnected )
hgs
parents:
diff changeset
   538
            {
hgs
parents:
diff changeset
   539
                //
hgs
parents:
diff changeset
   540
                // dim 'aspect ratio' buttons
hgs
parents:
diff changeset
   541
                //
hgs
parents:
diff changeset
   542
                mButtonActions[E1stButton]->setEnabled( false );
hgs
parents:
diff changeset
   543
            }
hgs
parents:
diff changeset
   544
            else
hgs
parents:
diff changeset
   545
            {
hgs
parents:
diff changeset
   546
                //
hgs
parents:
diff changeset
   547
                // check if video clip has same aspect ratio as display window
hgs
parents:
diff changeset
   548
                //
hgs
parents:
diff changeset
   549
                TReal32 videoAspectRatio = (TReal32) details->mVideoWidth / (TReal32) details->mVideoHeight;
hgs
parents:
diff changeset
   550
                bool enabled = ( mDisplayAspectRatio == videoAspectRatio )? false : true;
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
                //
hgs
parents:
diff changeset
   553
                // enable or dim 'aspect ratio' buttons accordingly
hgs
parents:
diff changeset
   554
                //
hgs
parents:
diff changeset
   555
                mButtonActions[E1stButton]->setEnabled( enabled );
hgs
parents:
diff changeset
   556
hgs
parents:
diff changeset
   557
                if ( mButtons.count() )
hgs
parents:
diff changeset
   558
                {
hgs
parents:
diff changeset
   559
                    disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents:
diff changeset
   560
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   561
                             this, SLOT( changeAspectRatio() ) );
hgs
parents:
diff changeset
   562
                }
hgs
parents:
diff changeset
   563
            }
hgs
parents:
diff changeset
   564
        }
hgs
parents:
diff changeset
   565
        else if ( mController->viewMode() == EAudioOnlyView )
hgs
parents:
diff changeset
   566
        {
hgs
parents:
diff changeset
   567
            //
hgs
parents:
diff changeset
   568
            // Show share button
hgs
parents:
diff changeset
   569
            //
hgs
parents:
diff changeset
   570
            mButtonActions[E1stButton]->setIcon( *mButtonIcons[EShareIcon] );
hgs
parents:
diff changeset
   571
hgs
parents:
diff changeset
   572
            if ( mController->fileDetails()->mPlaybackMode == EMPXVideoStreaming ||
hgs
parents:
diff changeset
   573
                 mController->fileDetails()->mPlaybackMode == EMPXVideoLiveStreaming )
hgs
parents:
diff changeset
   574
            {
hgs
parents:
diff changeset
   575
                //
hgs
parents:
diff changeset
   576
                // dim 'share' button for streaming
hgs
parents:
diff changeset
   577
                //
hgs
parents:
diff changeset
   578
                mButtonActions[E1stButton]->setEnabled( false );
hgs
parents:
diff changeset
   579
            }
hgs
parents:
diff changeset
   580
            else
hgs
parents:
diff changeset
   581
            {
hgs
parents:
diff changeset
   582
                //
hgs
parents:
diff changeset
   583
                // enable 'share' button
hgs
parents:
diff changeset
   584
                //
hgs
parents:
diff changeset
   585
                mButtonActions[E1stButton]->setEnabled( true );
hgs
parents:
diff changeset
   586
hgs
parents:
diff changeset
   587
                if ( mButtons.count() )
hgs
parents:
diff changeset
   588
                {
hgs
parents:
diff changeset
   589
                    disconnect( mButtons[E1stButton], SIGNAL( released() ), 0, 0 );
hgs
parents:
diff changeset
   590
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   591
                             mController, SLOT( sendVideo() ) );
hgs
parents:
diff changeset
   592
                }
hgs
parents:
diff changeset
   593
            }
hgs
parents:
diff changeset
   594
        }
hgs
parents:
diff changeset
   595
    }
hgs
parents:
diff changeset
   596
hgs
parents:
diff changeset
   597
    //
hgs
parents:
diff changeset
   598
    // for audio-only clips and tv-out, default view is audionOnlyView
hgs
parents:
diff changeset
   599
    // therefore, dim details button
hgs
parents:
diff changeset
   600
    //
hgs
parents:
diff changeset
   601
    if ( ! details->mVideoEnabled || details->mTvOutConnected )
hgs
parents:
diff changeset
   602
    {
hgs
parents:
diff changeset
   603
        mButtonActions[E5thButton]->setEnabled( false );
hgs
parents:
diff changeset
   604
    }
hgs
parents:
diff changeset
   605
    else
hgs
parents:
diff changeset
   606
    {
hgs
parents:
diff changeset
   607
        mButtonActions[E5thButton]->setEnabled( true );
hgs
parents:
diff changeset
   608
    }
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
    if ( details->mSeekable && details->mPausableStream )
hgs
parents:
diff changeset
   611
    {
hgs
parents:
diff changeset
   612
        mButtonActions[E2ndButton]->setEnabled( true );
hgs
parents:
diff changeset
   613
        mButtonActions[E4thButton]->setEnabled( true );
hgs
parents:
diff changeset
   614
    }
hgs
parents:
diff changeset
   615
    else
hgs
parents:
diff changeset
   616
    {
hgs
parents:
diff changeset
   617
        mButtonActions[E2ndButton]->setEnabled( false );
hgs
parents:
diff changeset
   618
        mButtonActions[E4thButton]->setEnabled( false );
hgs
parents:
diff changeset
   619
    }
hgs
parents:
diff changeset
   620
hgs
parents:
diff changeset
   621
    //
hgs
parents:
diff changeset
   622
    // The buttons 'Play' and 'Pause' are shared by the same 'E3rdButton' action.
hgs
parents:
diff changeset
   623
    // The logic to enable or disable 'E3rdButton' will depend on the current playback state.
hgs
parents:
diff changeset
   624
    //
hgs
parents:
diff changeset
   625
    updateState( mController->state() );
hgs
parents:
diff changeset
   626
    
hgs
parents:
diff changeset
   627
    //
hgs
parents:
diff changeset
   628
    // toolbar creates button once it gets visible, so we don't know exact timing when toolbar
hgs
parents:
diff changeset
   629
    // creates button, so start timer to get layout information once the toolbar gets visible.
hgs
parents:
diff changeset
   630
    // This is needed since we don't use toolbar in proper way.
hgs
parents:
diff changeset
   631
    //
hgs
parents:
diff changeset
   632
    if ( ! mRetrieveButtonTimer && ! mButtons.count() )
hgs
parents:
diff changeset
   633
    {
hgs
parents:
diff changeset
   634
        mRetrieveButtonTimer = new QTimer();
hgs
parents:
diff changeset
   635
        mRetrieveButtonTimer->setSingleShot( false );
hgs
parents:
diff changeset
   636
        mRetrieveButtonTimer->setInterval( KRetrieveButtonTimeOut );
hgs
parents:
diff changeset
   637
        connect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );
hgs
parents:
diff changeset
   638
hgs
parents:
diff changeset
   639
        mRetrieveButtonTimer->start();
hgs
parents:
diff changeset
   640
    }
hgs
parents:
diff changeset
   641
hgs
parents:
diff changeset
   642
    durationChanged( (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier );
hgs
parents:
diff changeset
   643
}
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   646
// VideoPlaybackToolBar::openDetailsView()
hgs
parents:
diff changeset
   647
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   648
//
hgs
parents:
diff changeset
   649
void VideoPlaybackToolBar::openDetailsView()
hgs
parents:
diff changeset
   650
{
hgs
parents:
diff changeset
   651
    MPX_ENTER_EXIT(_L("VideoPlaybackToolBar::openDetailsView()"));
hgs
parents:
diff changeset
   652
hgs
parents:
diff changeset
   653
    TPlaybackViewMode viewMode = mController->viewMode();
hgs
parents:
diff changeset
   654
hgs
parents:
diff changeset
   655
    if ( viewMode == EFullScreenView )
hgs
parents:
diff changeset
   656
    {
hgs
parents:
diff changeset
   657
        mController->changeViewMode( EDetailsView );
hgs
parents:
diff changeset
   658
    }
hgs
parents:
diff changeset
   659
}
hgs
parents:
diff changeset
   660
hgs
parents:
diff changeset
   661
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   662
// VideoPlaybackToolBar::positionChanged
hgs
parents:
diff changeset
   663
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   664
//
hgs
parents:
diff changeset
   665
void VideoPlaybackToolBar::positionChanged( int position )
hgs
parents:
diff changeset
   666
{
hgs
parents:
diff changeset
   667
    MPX_DEBUG(_L("VideoPlaybackToolBar::positionChanged position = %d"), position );
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
    mPosition = position;
hgs
parents:
diff changeset
   670
}
hgs
parents:
diff changeset
   671
hgs
parents:
diff changeset
   672
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   673
// VideoPlaybackToolBar::durationChanged
hgs
parents:
diff changeset
   674
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   675
//
hgs
parents:
diff changeset
   676
void VideoPlaybackToolBar::durationChanged( int duration )
hgs
parents:
diff changeset
   677
{
hgs
parents:
diff changeset
   678
    MPX_DEBUG(_L("VideoPlaybackToolBar::durationChanged duration = %d"), duration );
hgs
parents:
diff changeset
   679
hgs
parents:
diff changeset
   680
    mDuration = duration;
hgs
parents:
diff changeset
   681
}
hgs
parents:
diff changeset
   682
hgs
parents:
diff changeset
   683
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   684
// VideoPlaybackToolBar::setVisible
hgs
parents:
diff changeset
   685
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   686
//
hgs
parents:
diff changeset
   687
void VideoPlaybackToolBar::setVisible( bool visible )
hgs
parents:
diff changeset
   688
{
hgs
parents:
diff changeset
   689
    MPX_DEBUG(_L("VideoPlaybackToolBar::setVisible visible = %d"), visible );
hgs
parents:
diff changeset
   690
hgs
parents:
diff changeset
   691
    if ( visible )
hgs
parents:
diff changeset
   692
    {
hgs
parents:
diff changeset
   693
        mController->view()->showItems( Hb::ToolBarItem );
hgs
parents:
diff changeset
   694
    }
hgs
parents:
diff changeset
   695
    else
hgs
parents:
diff changeset
   696
    {
hgs
parents:
diff changeset
   697
        mController->view()->hideItems( Hb::ToolBarItem );
hgs
parents:
diff changeset
   698
    }
hgs
parents:
diff changeset
   699
}
hgs
parents:
diff changeset
   700
hgs
parents:
diff changeset
   701
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   702
// VideoPlaybackToolBar::retrieveButtons()
hgs
parents:
diff changeset
   703
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   704
//
hgs
parents:
diff changeset
   705
void VideoPlaybackToolBar::retrieveButtons()
hgs
parents:
diff changeset
   706
{
hgs
parents:
diff changeset
   707
    MPX_DEBUG(_L("VideoPlaybackToolBar::retrieveButtons()"));
hgs
parents:
diff changeset
   708
hgs
parents:
diff changeset
   709
    if ( mButtons.count() == 0 )
hgs
parents:
diff changeset
   710
    {
hgs
parents:
diff changeset
   711
        QGraphicsLayout *layout = mToolBar->layout();
hgs
parents:
diff changeset
   712
hgs
parents:
diff changeset
   713
        if ( layout )
hgs
parents:
diff changeset
   714
        {
hgs
parents:
diff changeset
   715
            if ( mRetrieveButtonTimer )
hgs
parents:
diff changeset
   716
            {
hgs
parents:
diff changeset
   717
                disconnect( mRetrieveButtonTimer, SIGNAL( timeout() ), this, SLOT( retrieveButtons() ) );
hgs
parents:
diff changeset
   718
                if ( mRetrieveButtonTimer->isActive() )
hgs
parents:
diff changeset
   719
                {
hgs
parents:
diff changeset
   720
                    mRetrieveButtonTimer->stop();
hgs
parents:
diff changeset
   721
                }
hgs
parents:
diff changeset
   722
            }
hgs
parents:
diff changeset
   723
hgs
parents:
diff changeset
   724
            for ( int i = 0 ; i < layout->count() ; i++ )
hgs
parents:
diff changeset
   725
            {
hgs
parents:
diff changeset
   726
                mButtons.append( dynamic_cast<HbToolButton*>( layout->itemAt( i ) ) );
hgs
parents:
diff changeset
   727
            }
hgs
parents:
diff changeset
   728
hgs
parents:
diff changeset
   729
            //
hgs
parents:
diff changeset
   730
            // Connect signal and slots
hgs
parents:
diff changeset
   731
            //
hgs
parents:
diff changeset
   732
            connect( mButtons[E1stButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   733
hgs
parents:
diff changeset
   734
            connect( mButtons[E2ndButton], SIGNAL( pressed() ), this, SLOT( handleRWButtonPressed() ) );
hgs
parents:
diff changeset
   735
            connect( mButtons[E2ndButton], SIGNAL( released() ), this, SLOT( rwReleased() ) );
hgs
parents:
diff changeset
   736
hgs
parents:
diff changeset
   737
            connect( mButtons[E3rdButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   738
            connect( mButtons[E3rdButton], SIGNAL( released() ), this, SLOT( playPause() ) );
hgs
parents:
diff changeset
   739
hgs
parents:
diff changeset
   740
            connect( mButtons[E4thButton], SIGNAL( pressed() ), this, SLOT( handleFFButtonPressed() ) );
hgs
parents:
diff changeset
   741
            connect( mButtons[E4thButton], SIGNAL( released() ), this, SLOT( ffReleased() ) );
hgs
parents:
diff changeset
   742
hgs
parents:
diff changeset
   743
            connect( mButtons[E5thButton], SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
hgs
parents:
diff changeset
   744
            connect( mButtons[E5thButton], SIGNAL( released() ), this, SLOT( openDetailsView() ) );
hgs
parents:
diff changeset
   745
hgs
parents:
diff changeset
   746
            if ( mController->isAttachOperation() )
hgs
parents:
diff changeset
   747
            {
hgs
parents:
diff changeset
   748
                connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   749
                         mController, SLOT( attachVideo() ) );
hgs
parents:
diff changeset
   750
            }
hgs
parents:
diff changeset
   751
            else
hgs
parents:
diff changeset
   752
            {
hgs
parents:
diff changeset
   753
                if ( mController->viewMode() == EFullScreenView )
hgs
parents:
diff changeset
   754
                {
hgs
parents:
diff changeset
   755
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   756
                             this, SLOT( changeAspectRatio() ) );
hgs
parents:
diff changeset
   757
                }
hgs
parents:
diff changeset
   758
                else if ( mController->viewMode() == EAudioOnlyView )
hgs
parents:
diff changeset
   759
                {
hgs
parents:
diff changeset
   760
                    connect( mButtons[E1stButton], SIGNAL( released() ),
hgs
parents:
diff changeset
   761
                             mController, SLOT( sendVideo() ) );
hgs
parents:
diff changeset
   762
                }
hgs
parents:
diff changeset
   763
            }
hgs
parents:
diff changeset
   764
        }
hgs
parents:
diff changeset
   765
    }
hgs
parents:
diff changeset
   766
}
hgs
parents:
diff changeset
   767
hgs
parents:
diff changeset
   768
//End of file