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