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