mobilemessaging/smilui/playersrc/SmilPlayerIndicatorController.cpp
author hgs
Wed, 03 Nov 2010 09:52:46 +0530
changeset 79 2981cb3aa489
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 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: SmilPlayerIndicatorController implementation
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include <gulicon.h>                // CGulIcon
hgs
parents:
diff changeset
    22
#include <AknUtils.h>               // AknLayoutUtils
hgs
parents:
diff changeset
    23
#include <AknsUtils.h>              // AknsUtils
hgs
parents:
diff changeset
    24
#include <AknStatuspaneUtils.h>     // AknStatuspaneUtils
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include <applayout.cdl.h>
hgs
parents:
diff changeset
    27
#include <smilplayer.mbg>
hgs
parents:
diff changeset
    28
#include <AknsConstants.h>
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include <data_caging_path_literals.hrh> 
hgs
parents:
diff changeset
    31
#include <aknlayoutscalable_apps.cdl.h>
hgs
parents:
diff changeset
    32
#include <aknlayoutscalable_avkon.cdl.h>
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
#include <eiklabel.h>
hgs
parents:
diff changeset
    35
#include <eikimage.h>
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
#include "SmilPlayerIndicatorController.h"
hgs
parents:
diff changeset
    38
#include "SmilPlayerPresentationController.h"
hgs
parents:
diff changeset
    39
#include "SmilPlayerVolumeIndicatorController.h"
hgs
parents:
diff changeset
    40
#include "SmilPlayerTimeIndicatorTimer.h"
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// CONSTANTS
hgs
parents:
diff changeset
    43
_LIT(KSmilPlayerBitmapFile, "smilplayer.mbm");
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
const TInt KMilliSecondsToSecondsCoefficient = 1000;
hgs
parents:
diff changeset
    46
const TInt KColorWhite = 0;
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
// CSmilPlayerIndicatorController::CSmilIndicatorControllerler
hgs
parents:
diff changeset
    52
// C++ constructor 
hgs
parents:
diff changeset
    53
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
CSmilPlayerIndicatorController::CSmilPlayerIndicatorController( 
hgs
parents:
diff changeset
    56
                                                    CSmilPlayerPresentationController* aPresController ) :
hgs
parents:
diff changeset
    57
    iPresController( aPresController ),
hgs
parents:
diff changeset
    58
    iShowTimeIndicator( ETrue )
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
    }
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    63
// CSmilPlayerIndicatorController::ConstructL
hgs
parents:
diff changeset
    64
// Symbian second phase constructor. Sets indicator controller as foreground
hgs
parents:
diff changeset
    65
// observer so that event about foreground/background changes are received.
hgs
parents:
diff changeset
    66
// This is needed in order to stop pause timer when SMIL Player is set to 
hgs
parents:
diff changeset
    67
// background and start it again when SMIL Player is set foreground. Creates
hgs
parents:
diff changeset
    68
// volume controller if volume is enabled and all other indicator controls and
hgs
parents:
diff changeset
    69
// their timers.
hgs
parents:
diff changeset
    70
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
void CSmilPlayerIndicatorController::ConstructL( const CCoeControl* aParent, 
hgs
parents:
diff changeset
    73
                                                 TBool aVolumeEnabled  )
hgs
parents:
diff changeset
    74
    {
hgs
parents:
diff changeset
    75
    iCoeEnv->AddForegroundObserverL( *this );
hgs
parents:
diff changeset
    76
    
hgs
parents:
diff changeset
    77
    SetContainerWindowL( *aParent );
hgs
parents:
diff changeset
    78
    
hgs
parents:
diff changeset
    79
    if ( aVolumeEnabled )
hgs
parents:
diff changeset
    80
        {
hgs
parents:
diff changeset
    81
        iVolumeController = CSmilPlayerVolumeIndicatorController::NewL( this );
hgs
parents:
diff changeset
    82
        iVolumeController->SetObserver( this );
hgs
parents:
diff changeset
    83
        }
hgs
parents:
diff changeset
    84
    
hgs
parents:
diff changeset
    85
    iTimeIndicator = new(ELeave) CEikLabel;
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
    iTimeIndicator->SetTextL( KNullDesC );
hgs
parents:
diff changeset
    88
    iTimeIndicator->SetContainerWindowL( *this );
hgs
parents:
diff changeset
    89
    iTimeIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
    iTimeModel = CSmilPlayerTimeIndicatorTimer::NewL( this, iCoeEnv );
hgs
parents:
diff changeset
    92
    
hgs
parents:
diff changeset
    93
    InitializeIconIndicatorL( iPauseIndicator, 
hgs
parents:
diff changeset
    94
                              KAknsIIDQgnIndiMmsPause,
hgs
parents:
diff changeset
    95
                              EMbmSmilplayerQgn_indi_mms_pause,
hgs
parents:
diff changeset
    96
                              EMbmSmilplayerQgn_indi_mms_pause_mask );
hgs
parents:
diff changeset
    97
    
hgs
parents:
diff changeset
    98
    InitializeIconIndicatorL( iPlayIndicator, 
hgs
parents:
diff changeset
    99
                              KAknsIIDQgnIndiMmsPlay,
hgs
parents:
diff changeset
   100
                              EMbmSmilplayerQgn_indi_mms_play,
hgs
parents:
diff changeset
   101
                              EMbmSmilplayerQgn_indi_mms_play_mask );
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
    MakeVisible( EFalse );
hgs
parents:
diff changeset
   104
    }
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
// CSmilPlayerIndicatorController::NewL
hgs
parents:
diff changeset
   109
// Symbian two phased constructor
hgs
parents:
diff changeset
   110
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   111
//
hgs
parents:
diff changeset
   112
CSmilPlayerIndicatorController*
hgs
parents:
diff changeset
   113
CSmilPlayerIndicatorController::NewL( const CCoeControl* aParent, 
hgs
parents:
diff changeset
   114
                                      CSmilPlayerPresentationController* aPresController,
hgs
parents:
diff changeset
   115
                                      TBool aVolumeEnabled )
hgs
parents:
diff changeset
   116
    {
hgs
parents:
diff changeset
   117
    CSmilPlayerIndicatorController* self = new(ELeave) CSmilPlayerIndicatorController( aPresController );
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   120
    self->ConstructL( aParent, aVolumeEnabled );
hgs
parents:
diff changeset
   121
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
    return self;
hgs
parents:
diff changeset
   124
    }
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   127
// CSmilPlayerIndicatorController::~CSmilPlayerIndicatorController
hgs
parents:
diff changeset
   128
// Destructor
hgs
parents:
diff changeset
   129
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   130
//
hgs
parents:
diff changeset
   131
CSmilPlayerIndicatorController::~CSmilPlayerIndicatorController()
hgs
parents:
diff changeset
   132
    {
hgs
parents:
diff changeset
   133
    iCoeEnv->RemoveForegroundObserver( *this );
hgs
parents:
diff changeset
   134
    
hgs
parents:
diff changeset
   135
    delete iVolumeController;
hgs
parents:
diff changeset
   136
    delete iTimeIndicator;
hgs
parents:
diff changeset
   137
        
hgs
parents:
diff changeset
   138
    delete iTimeModel;
hgs
parents:
diff changeset
   139
    delete iPauseIndicator;
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
    delete iPlayIndicator;
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    iPresController = NULL; // For LINT
hgs
parents:
diff changeset
   144
    }
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   147
// CSmilPlayerIndicatorController::OfferKeyEventL
hgs
parents:
diff changeset
   148
// Forwards key event to volume controller if present.
hgs
parents:
diff changeset
   149
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   150
//
hgs
parents:
diff changeset
   151
TKeyResponse CSmilPlayerIndicatorController::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
hgs
parents:
diff changeset
   152
                                                             TEventCode aType )
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    TKeyResponse result( EKeyWasNotConsumed );
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    if ( iVolumeController )
hgs
parents:
diff changeset
   157
        {
hgs
parents:
diff changeset
   158
        result = iVolumeController->OfferKeyEventL( aKeyEvent, aType );
hgs
parents:
diff changeset
   159
        }
hgs
parents:
diff changeset
   160
    return result;
hgs
parents:
diff changeset
   161
    }
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   164
// CSmilPlayerIndicatorController::CountComponentControls
hgs
parents:
diff changeset
   165
// Returns number of child controls.
hgs
parents:
diff changeset
   166
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   167
//
hgs
parents:
diff changeset
   168
TInt CSmilPlayerIndicatorController::CountComponentControls() const
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
    // return nbr of controls inside this container
hgs
parents:
diff changeset
   171
    TInt result( 3 );
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
    if ( iVolumeController )
hgs
parents:
diff changeset
   174
        {
hgs
parents:
diff changeset
   175
        result++;
hgs
parents:
diff changeset
   176
        }
hgs
parents:
diff changeset
   177
    return result;
hgs
parents:
diff changeset
   178
    }
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   181
// CSmilPlayerIndicatorController::ComponentControl
hgs
parents:
diff changeset
   182
// Returns specified child controls.
hgs
parents:
diff changeset
   183
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   184
//
hgs
parents:
diff changeset
   185
CCoeControl* CSmilPlayerIndicatorController::ComponentControl( TInt aIndex ) const
hgs
parents:
diff changeset
   186
    {
hgs
parents:
diff changeset
   187
    CCoeControl* result = NULL;
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
    switch( aIndex )
hgs
parents:
diff changeset
   190
        {
hgs
parents:
diff changeset
   191
        case 0:
hgs
parents:
diff changeset
   192
            {
hgs
parents:
diff changeset
   193
            result = iPauseIndicator;
hgs
parents:
diff changeset
   194
            break;
hgs
parents:
diff changeset
   195
            }
hgs
parents:
diff changeset
   196
        case 1:
hgs
parents:
diff changeset
   197
            {
hgs
parents:
diff changeset
   198
            result = iPlayIndicator;
hgs
parents:
diff changeset
   199
            break;
hgs
parents:
diff changeset
   200
            }
hgs
parents:
diff changeset
   201
        case 2:
hgs
parents:
diff changeset
   202
            {
hgs
parents:
diff changeset
   203
            result = iTimeIndicator;
hgs
parents:
diff changeset
   204
            break;
hgs
parents:
diff changeset
   205
            }
hgs
parents:
diff changeset
   206
        case 3:
hgs
parents:
diff changeset
   207
            {
hgs
parents:
diff changeset
   208
            result = iVolumeController;
hgs
parents:
diff changeset
   209
            break;
hgs
parents:
diff changeset
   210
            }
hgs
parents:
diff changeset
   211
        default:
hgs
parents:
diff changeset
   212
            {
hgs
parents:
diff changeset
   213
            break;
hgs
parents:
diff changeset
   214
            }
hgs
parents:
diff changeset
   215
        }
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
    return result;
hgs
parents:
diff changeset
   218
    }
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   221
// CSmilPlayerIndicatorController::Stop
hgs
parents:
diff changeset
   222
// Indicates that presentation has been stopped. Stops time indicator refreshing.
hgs
parents:
diff changeset
   223
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   224
//
hgs
parents:
diff changeset
   225
void CSmilPlayerIndicatorController::Stop()
hgs
parents:
diff changeset
   226
    {
hgs
parents:
diff changeset
   227
    iPauseIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   228
    
hgs
parents:
diff changeset
   229
    iPlayIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   230
        
hgs
parents:
diff changeset
   231
    iTimeModel->Stop();
hgs
parents:
diff changeset
   232
    }
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   235
// CSmilPlayerIndicatorController::Start
hgs
parents:
diff changeset
   236
// Indicates that presentation has been started. Starts time indicator refreshing.
hgs
parents:
diff changeset
   237
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   238
//
hgs
parents:
diff changeset
   239
void CSmilPlayerIndicatorController::Start()
hgs
parents:
diff changeset
   240
    {
hgs
parents:
diff changeset
   241
    iPauseIndicator->MakeVisible( ETrue );
hgs
parents:
diff changeset
   242
    iPlayIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   243
        
hgs
parents:
diff changeset
   244
    iTimeModel->Start();
hgs
parents:
diff changeset
   245
    }
hgs
parents:
diff changeset
   246
        
hgs
parents:
diff changeset
   247
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   248
// CSmilPlayerIndicatorController::Pause
hgs
parents:
diff changeset
   249
// Indicates that presentation has been paused. Pauses time indicator refreshing
hgs
parents:
diff changeset
   250
// and play indicator is set hidden.
hgs
parents:
diff changeset
   251
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   252
//
hgs
parents:
diff changeset
   253
void CSmilPlayerIndicatorController::Pause()
hgs
parents:
diff changeset
   254
    {
hgs
parents:
diff changeset
   255
    
hgs
parents:
diff changeset
   256
    iPlayIndicator->MakeVisible( ETrue );
hgs
parents:
diff changeset
   257
    iPauseIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   258
    DrawDeferred();
hgs
parents:
diff changeset
   259
    
hgs
parents:
diff changeset
   260
    iTimeModel->Pause();
hgs
parents:
diff changeset
   261
    }
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   264
// CSmilPlayerIndicatorController::Resume
hgs
parents:
diff changeset
   265
// Indicates that presentation has been resumed. Starts time indicator refreshing.
hgs
parents:
diff changeset
   266
// And prevents time indicator from showing if duration is not finite. Also sets
hgs
parents:
diff changeset
   267
// play indicator visible.
hgs
parents:
diff changeset
   268
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   269
//
hgs
parents:
diff changeset
   270
void CSmilPlayerIndicatorController::Resume()
hgs
parents:
diff changeset
   271
    {
hgs
parents:
diff changeset
   272
    iTimeModel->Resume();
hgs
parents:
diff changeset
   273
    iPauseIndicator->MakeVisible( ETrue );
hgs
parents:
diff changeset
   274
    iPlayIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   275
    DrawDeferred();
hgs
parents:
diff changeset
   276
    
hgs
parents:
diff changeset
   277
    }
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
        
hgs
parents:
diff changeset
   280
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   281
// CSmilPlayerIndicatorController::EndReached
hgs
parents:
diff changeset
   282
// Indicates the presentation end has been reached. This notification from presentation
hgs
parents:
diff changeset
   283
// controller is forwarded to time indicator timer. Also hides play indicator.
hgs
parents:
diff changeset
   284
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   285
//
hgs
parents:
diff changeset
   286
void CSmilPlayerIndicatorController::EndReached()
hgs
parents:
diff changeset
   287
    {
hgs
parents:
diff changeset
   288
    iPlayIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   289
    
hgs
parents:
diff changeset
   290
    iTimeModel->EndReached();
hgs
parents:
diff changeset
   291
    }
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   294
// CSmilPlayerIndicatorController::VolumeValue
hgs
parents:
diff changeset
   295
// Asks current volume level from volume controller if present and returns it
hgs
parents:
diff changeset
   296
// caller. Otherwise return zero.
hgs
parents:
diff changeset
   297
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   298
//
hgs
parents:
diff changeset
   299
TInt CSmilPlayerIndicatorController::VolumeValue() const
hgs
parents:
diff changeset
   300
    {
hgs
parents:
diff changeset
   301
    TInt result( 0 );
hgs
parents:
diff changeset
   302
    if ( iVolumeController )
hgs
parents:
diff changeset
   303
        {
hgs
parents:
diff changeset
   304
        result = iVolumeController->VolumeValue();
hgs
parents:
diff changeset
   305
        }
hgs
parents:
diff changeset
   306
    return result;
hgs
parents:
diff changeset
   307
    }
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   310
// CSmilPlayerIndicatorController::TimeChangedL
hgs
parents:
diff changeset
   311
// Called by timer indicator timer. Updates time indicator with new time string.
hgs
parents:
diff changeset
   312
// On landscape mode time indicator is not shown if volume indicator is visible
hgs
parents:
diff changeset
   313
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   314
//
hgs
parents:
diff changeset
   315
void CSmilPlayerIndicatorController::TimeChangedL( const TDesC& aTimeString )
hgs
parents:
diff changeset
   316
    {
hgs
parents:
diff changeset
   317
    if ( !iTimeIndicator->IsVisible() )
hgs
parents:
diff changeset
   318
        {
hgs
parents:
diff changeset
   319
        if ( iShowTimeIndicator ||
hgs
parents:
diff changeset
   320
             !iVolumeController || 
hgs
parents:
diff changeset
   321
             !iVolumeController->IsVisible() )
hgs
parents:
diff changeset
   322
            {
hgs
parents:
diff changeset
   323
            iTimeIndicator->MakeVisible( ETrue );
hgs
parents:
diff changeset
   324
            }
hgs
parents:
diff changeset
   325
        }       
hgs
parents:
diff changeset
   326
        
hgs
parents:
diff changeset
   327
    iTimeIndicator->SetTextL( aTimeString );
hgs
parents:
diff changeset
   328
    iTimeIndicator->DrawDeferred();
hgs
parents:
diff changeset
   329
    }
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   332
// CSmilPlayerIndicatorController::CurrentTime
hgs
parents:
diff changeset
   333
// Returns current presentation time.
hgs
parents:
diff changeset
   334
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   335
//
hgs
parents:
diff changeset
   336
TInt CSmilPlayerIndicatorController::CurrentTime() const
hgs
parents:
diff changeset
   337
    {
hgs
parents:
diff changeset
   338
    TInt result( 0 );
hgs
parents:
diff changeset
   339
    if ( iPresController->Presentation() )
hgs
parents:
diff changeset
   340
        {
hgs
parents:
diff changeset
   341
        result = iPresController->Presentation()->CurrentTime().Value() / 
hgs
parents:
diff changeset
   342
                 KMilliSecondsToSecondsCoefficient;
hgs
parents:
diff changeset
   343
        }
hgs
parents:
diff changeset
   344
    return result;
hgs
parents:
diff changeset
   345
    }
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   348
// CSmilPlayerIndicatorController::PresentationDuration
hgs
parents:
diff changeset
   349
// Returns presentation duration.
hgs
parents:
diff changeset
   350
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   351
//
hgs
parents:
diff changeset
   352
TInt CSmilPlayerIndicatorController::PresentationDuration() const
hgs
parents:
diff changeset
   353
    {
hgs
parents:
diff changeset
   354
    TInt result( 0 );
hgs
parents:
diff changeset
   355
    if ( iPresController->Presentation() )
hgs
parents:
diff changeset
   356
        {
hgs
parents:
diff changeset
   357
        result = iPresController->Presentation()->Duration().Value() /
hgs
parents:
diff changeset
   358
                 KMilliSecondsToSecondsCoefficient;
hgs
parents:
diff changeset
   359
        }
hgs
parents:
diff changeset
   360
    return result;
hgs
parents:
diff changeset
   361
    }
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   364
// CSmilPlayerIndicatorController::IsDurationFinite
hgs
parents:
diff changeset
   365
// Returns whether presentation duration is finite (i.e. not infinite).
hgs
parents:
diff changeset
   366
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   367
//
hgs
parents:
diff changeset
   368
TBool CSmilPlayerIndicatorController::IsDurationFinite() const
hgs
parents:
diff changeset
   369
    {
hgs
parents:
diff changeset
   370
    TBool result( EFalse );
hgs
parents:
diff changeset
   371
    if ( iPresController->Presentation() )
hgs
parents:
diff changeset
   372
        {
hgs
parents:
diff changeset
   373
        result = iPresController->Presentation()->Duration().IsFinite();
hgs
parents:
diff changeset
   374
        }
hgs
parents:
diff changeset
   375
    return result;
hgs
parents:
diff changeset
   376
    }
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   379
// CSmilPlayerIndicatorController::HandleGainingForeground
hgs
parents:
diff changeset
   380
// Starts pause indicator blinking if presentation is on the paused state. 
hgs
parents:
diff changeset
   381
// Pause indicator blinking was stopped when player was sent to background so
hgs
parents:
diff changeset
   382
// that timer would not waste processing time unnecessarely.
hgs
parents:
diff changeset
   383
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   384
//
hgs
parents:
diff changeset
   385
void CSmilPlayerIndicatorController::HandleGainingForeground()
hgs
parents:
diff changeset
   386
    {
hgs
parents:
diff changeset
   387
hgs
parents:
diff changeset
   388
    }
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   391
// CSmilPlayerIndicatorController::HandleLosingForeground
hgs
parents:
diff changeset
   392
// Stops the pause indicator blinking if presentation is on paused state.
hgs
parents:
diff changeset
   393
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   394
//
hgs
parents:
diff changeset
   395
void CSmilPlayerIndicatorController::HandleLosingForeground()
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
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   401
// CSmilPlayerIndicatorController::LayoutIndicators
hgs
parents:
diff changeset
   402
// Sets correct layout for indicator controls according current LAF.
hgs
parents:
diff changeset
   403
// On landscape mode only time indicator or volume indicator is shown at once.
hgs
parents:
diff changeset
   404
// Both are shown on the same place and time indicator is hidden if volume indicator
hgs
parents:
diff changeset
   405
// shown.
hgs
parents:
diff changeset
   406
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   407
//
hgs
parents:
diff changeset
   408
void CSmilPlayerIndicatorController::LayoutIndicators()
hgs
parents:
diff changeset
   409
    {
hgs
parents:
diff changeset
   410
    TAknLayoutRect smilstatusVolumePane;
hgs
parents:
diff changeset
   411
    if ( AknStatuspaneUtils::StaconPaneActive() )
hgs
parents:
diff changeset
   412
        {
hgs
parents:
diff changeset
   413
		smilstatusVolumePane.LayoutRect( Rect(), AknLayout::Navi_pane_tab_elements_Line_1() );
hgs
parents:
diff changeset
   414
        }
hgs
parents:
diff changeset
   415
    else
hgs
parents:
diff changeset
   416
        {
hgs
parents:
diff changeset
   417
		smilstatusVolumePane.LayoutRect( Rect(), 
hgs
parents:
diff changeset
   418
                                     AknLayoutScalable_Apps::smil_status_volume_pane() );
hgs
parents:
diff changeset
   419
        }
hgs
parents:
diff changeset
   420
    
hgs
parents:
diff changeset
   421
    TAknLayoutRect stateIndicatorIcon;
hgs
parents:
diff changeset
   422
    TAknLayoutText timeLayout;
hgs
parents:
diff changeset
   423
    if( iPresController->UseWidescreenStatusPane() )
hgs
parents:
diff changeset
   424
        {            
hgs
parents:
diff changeset
   425
        TAknLayoutRect naviSmilPane;
hgs
parents:
diff changeset
   426
         naviSmilPane.LayoutRect(Rect(), AknLayoutScalable_Avkon::navi_smil_pane( 0 ));
hgs
parents:
diff changeset
   427
        stateIndicatorIcon.LayoutRect( naviSmilPane.Rect(),
hgs
parents:
diff changeset
   428
                                   AknLayoutScalable_Avkon::navi_smil_pane_g1( 0 ) );
hgs
parents:
diff changeset
   429
        timeLayout.LayoutText(  naviSmilPane.Rect(),
hgs
parents:
diff changeset
   430
                            AknLayoutScalable_Avkon::navi_smil_pane_t1() );
hgs
parents:
diff changeset
   431
        }
hgs
parents:
diff changeset
   432
    else
hgs
parents:
diff changeset
   433
        {
hgs
parents:
diff changeset
   434
    stateIndicatorIcon.LayoutRect( Rect(),
hgs
parents:
diff changeset
   435
                                   AknLayoutScalable_Apps::smil_status_pane_g1() );
hgs
parents:
diff changeset
   436
        timeLayout.LayoutText(  Rect(),
hgs
parents:
diff changeset
   437
                             AknLayoutScalable_Apps::smil_status_pane_t1() );
hgs
parents:
diff changeset
   438
        }
hgs
parents:
diff changeset
   439
    
hgs
parents:
diff changeset
   440
    if ( iVolumeController )
hgs
parents:
diff changeset
   441
        {
hgs
parents:
diff changeset
   442
        iVolumeController->SetRect( smilstatusVolumePane.Rect() );
hgs
parents:
diff changeset
   443
        }
hgs
parents:
diff changeset
   444
    
hgs
parents:
diff changeset
   445
    
hgs
parents:
diff changeset
   446
    TRect timeRect;
hgs
parents:
diff changeset
   447
    
hgs
parents:
diff changeset
   448
    // TODO: Remove hack when changes have been made to LAF.
hgs
parents:
diff changeset
   449
    if ( AknStatuspaneUtils::StaconPaneActive() )
hgs
parents:
diff changeset
   450
        {
hgs
parents:
diff changeset
   451
        timeRect = smilstatusVolumePane.Rect();
hgs
parents:
diff changeset
   452
        
hgs
parents:
diff changeset
   453
        iShowTimeIndicator = EFalse;
hgs
parents:
diff changeset
   454
        iTimeIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   455
        }
hgs
parents:
diff changeset
   456
    else
hgs
parents:
diff changeset
   457
        {
hgs
parents:
diff changeset
   458
        timeRect = timeLayout.TextRect();
hgs
parents:
diff changeset
   459
        
hgs
parents:
diff changeset
   460
        iShowTimeIndicator = ETrue;
hgs
parents:
diff changeset
   461
        }
hgs
parents:
diff changeset
   462
        
hgs
parents:
diff changeset
   463
    iTimeIndicator->SetRect( timeRect );
hgs
parents:
diff changeset
   464
    iTimeIndicator->SetFont( timeLayout.Font() );
hgs
parents:
diff changeset
   465
    
hgs
parents:
diff changeset
   466
    TRAP_IGNORE( UpdateTextColorL() );
hgs
parents:
diff changeset
   467
    
hgs
parents:
diff changeset
   468
    TInt align( ELayoutAlignNone );
hgs
parents:
diff changeset
   469
    switch( timeLayout.Align() )
hgs
parents:
diff changeset
   470
        {
hgs
parents:
diff changeset
   471
        case CGraphicsContext::ELeft:
hgs
parents:
diff changeset
   472
            {
hgs
parents:
diff changeset
   473
            align = ELayoutAlignLeft;
hgs
parents:
diff changeset
   474
            break;
hgs
parents:
diff changeset
   475
            }
hgs
parents:
diff changeset
   476
        case CGraphicsContext::ECenter:
hgs
parents:
diff changeset
   477
            {
hgs
parents:
diff changeset
   478
            align = ELayoutAlignCenter;
hgs
parents:
diff changeset
   479
            break;
hgs
parents:
diff changeset
   480
            }
hgs
parents:
diff changeset
   481
        case CGraphicsContext::ERight:
hgs
parents:
diff changeset
   482
            {
hgs
parents:
diff changeset
   483
            align = ELayoutAlignRight;
hgs
parents:
diff changeset
   484
            break;
hgs
parents:
diff changeset
   485
            }
hgs
parents:
diff changeset
   486
        default:
hgs
parents:
diff changeset
   487
            {
hgs
parents:
diff changeset
   488
            break;
hgs
parents:
diff changeset
   489
            }
hgs
parents:
diff changeset
   490
        }
hgs
parents:
diff changeset
   491
    iTimeIndicator->SetLabelAlignment( align );
hgs
parents:
diff changeset
   492
    
hgs
parents:
diff changeset
   493
    SetIconIndicatorExtent( iPauseIndicator, stateIndicatorIcon.Rect() );
hgs
parents:
diff changeset
   494
    SetIconIndicatorExtent( iPlayIndicator, stateIndicatorIcon.Rect() );
hgs
parents:
diff changeset
   495
 
hgs
parents:
diff changeset
   496
    DrawDeferred();
hgs
parents:
diff changeset
   497
    }
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   500
// CSmilPlayerIndicatorController::InitializeIconIndicatorL
hgs
parents:
diff changeset
   501
// Creates and initializes given icon control with specified bitmap and mask.
hgs
parents:
diff changeset
   502
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   503
//
hgs
parents:
diff changeset
   504
void CSmilPlayerIndicatorController::InitializeIconIndicatorL( CEikImage*& aIndicator, 
hgs
parents:
diff changeset
   505
                                                               const TAknsItemID& aItem, 
hgs
parents:
diff changeset
   506
                                                               const TInt aBitmapIndex,
hgs
parents:
diff changeset
   507
                                                               const TInt aMaskIndex ) const
hgs
parents:
diff changeset
   508
    {
hgs
parents:
diff changeset
   509
    aIndicator = new(ELeave) CEikImage;
hgs
parents:
diff changeset
   510
    aIndicator->SetContainerWindowL( *this );
hgs
parents:
diff changeset
   511
    aIndicator->MakeVisible( EFalse );
hgs
parents:
diff changeset
   512
    
hgs
parents:
diff changeset
   513
    SetIconIndicatorBitmapL( aIndicator, aItem, aBitmapIndex, aMaskIndex );
hgs
parents:
diff changeset
   514
    }
hgs
parents:
diff changeset
   515
hgs
parents:
diff changeset
   516
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   517
// CSmilPlayerIndicatorController::HandleControlEventL
hgs
parents:
diff changeset
   518
// Handles control events from volume indicator controller. 
hgs
parents:
diff changeset
   519
// Sets new volume to presentation if it has been changed.
hgs
parents:
diff changeset
   520
// On landscape mode toggles time and volume indicators.
hgs
parents:
diff changeset
   521
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   522
//
hgs
parents:
diff changeset
   523
void CSmilPlayerIndicatorController::HandleControlEventL( CCoeControl* aControl, 
hgs
parents:
diff changeset
   524
                                                          TCoeEvent aEventType )
hgs
parents:
diff changeset
   525
    {
hgs
parents:
diff changeset
   526
    if ( aControl == iVolumeController &&
hgs
parents:
diff changeset
   527
         aEventType == MCoeControlObserver::EEventStateChanged )
hgs
parents:
diff changeset
   528
        {
hgs
parents:
diff changeset
   529
        TInt currentVolume( VolumeValue() * 10 );
hgs
parents:
diff changeset
   530
        if ( iPresController->Presentation() )
hgs
parents:
diff changeset
   531
            {
hgs
parents:
diff changeset
   532
            if ( currentVolume != iPresController->Presentation()->Volume() )
hgs
parents:
diff changeset
   533
                {
hgs
parents:
diff changeset
   534
                iPresController->Presentation()->SetVolume( currentVolume );
hgs
parents:
diff changeset
   535
                }
hgs
parents:
diff changeset
   536
            }
hgs
parents:
diff changeset
   537
        }
hgs
parents:
diff changeset
   538
    }
hgs
parents:
diff changeset
   539
    
hgs
parents:
diff changeset
   540
// ---------------------------------------------------------
hgs
parents:
diff changeset
   541
// CSmilPlayerIndicatorController::HandlePointerEventL
hgs
parents:
diff changeset
   542
// Process pointer events. Forwards corresponding pointer event 
hgs
parents:
diff changeset
   543
// to volume controller if present. Otherwise performs play pausing
hgs
parents:
diff changeset
   544
// on tapping.
hgs
parents:
diff changeset
   545
// ---------------------------------------------------------
hgs
parents:
diff changeset
   546
//
hgs
parents:
diff changeset
   547
#ifdef RD_SCALABLE_UI_V2
hgs
parents:
diff changeset
   548
void CSmilPlayerIndicatorController::HandlePointerEventL( const TPointerEvent& aPointerEvent )
hgs
parents:
diff changeset
   549
    {
hgs
parents:
diff changeset
   550
    if ( AknLayoutUtils::PenEnabled() )
hgs
parents:
diff changeset
   551
        {
hgs
parents:
diff changeset
   552
        if ( iVolumeController &&
hgs
parents:
diff changeset
   553
             iVolumeController->Rect().Contains( aPointerEvent.iPosition ) )
hgs
parents:
diff changeset
   554
                {
hgs
parents:
diff changeset
   555
                if (iPlayIndicator && !(iPlayIndicator->Rect().Contains( aPointerEvent.iPosition) ) ||
hgs
parents:
diff changeset
   556
                        (iPauseIndicator && !iPauseIndicator->Rect().Contains( aPointerEvent.iPosition )))
hgs
parents:
diff changeset
   557
                    {
hgs
parents:
diff changeset
   558
                    iVolumeController->HandlePointerEventL( aPointerEvent );
hgs
parents:
diff changeset
   559
                    }
hgs
parents:
diff changeset
   560
                else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
hgs
parents:
diff changeset
   561
                    {
hgs
parents:
diff changeset
   562
                    iPresController->PlayPauseTappedL();
hgs
parents:
diff changeset
   563
                    }
hgs
parents:
diff changeset
   564
                
hgs
parents:
diff changeset
   565
                }
hgs
parents:
diff changeset
   566
        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
hgs
parents:
diff changeset
   567
            {
hgs
parents:
diff changeset
   568
            iPresController->PlayPauseTappedL();    
hgs
parents:
diff changeset
   569
            }
hgs
parents:
diff changeset
   570
        }            
hgs
parents:
diff changeset
   571
    }  
hgs
parents:
diff changeset
   572
hgs
parents:
diff changeset
   573
#else
hgs
parents:
diff changeset
   574
void CSmilPlayerIndicatorController::HandlePointerEventL( const TPointerEvent& /*aPointerEvent*/ )
hgs
parents:
diff changeset
   575
    {  
hgs
parents:
diff changeset
   576
    }
hgs
parents:
diff changeset
   577
#endif // RD_SCALABLE_UI_V2
hgs
parents:
diff changeset
   578
hgs
parents:
diff changeset
   579
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   580
// CSmilPlayerIndicatorController::HandleResourceChange
hgs
parents:
diff changeset
   581
//
hgs
parents:
diff changeset
   582
// Handles skin (theme) changing.
hgs
parents:
diff changeset
   583
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   584
//
hgs
parents:
diff changeset
   585
void CSmilPlayerIndicatorController::HandleResourceChange( TInt aType )
hgs
parents:
diff changeset
   586
	{
hgs
parents:
diff changeset
   587
	CCoeControl::HandleResourceChange( aType );
hgs
parents:
diff changeset
   588
	
hgs
parents:
diff changeset
   589
	if ( aType == KAknsMessageSkinChange )
hgs
parents:
diff changeset
   590
		{		
hgs
parents:
diff changeset
   591
	    TRAP_IGNORE( DoHandleSkinChangeL() );
hgs
parents:
diff changeset
   592
		}
hgs
parents:
diff changeset
   593
	}
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
// ---------------------------------------------------------
hgs
parents:
diff changeset
   596
// CSmilPlayerIndicatorController::DoHandleSkinChangeL
hgs
parents:
diff changeset
   597
// ---------------------------------------------------------
hgs
parents:
diff changeset
   598
//
hgs
parents:
diff changeset
   599
void CSmilPlayerIndicatorController::DoHandleSkinChangeL()
hgs
parents:
diff changeset
   600
    {
hgs
parents:
diff changeset
   601
    UpdateTextColorL();
hgs
parents:
diff changeset
   602
    SetIconIndicatorBitmapL( iPauseIndicator, 
hgs
parents:
diff changeset
   603
                             KAknsIIDQgnIndiMmsPause,
hgs
parents:
diff changeset
   604
                             EMbmSmilplayerQgn_indi_mms_pause,
hgs
parents:
diff changeset
   605
                             EMbmSmilplayerQgn_indi_mms_pause_mask );
hgs
parents:
diff changeset
   606
    
hgs
parents:
diff changeset
   607
    SetIconIndicatorBitmapL( iPlayIndicator, 
hgs
parents:
diff changeset
   608
                             KAknsIIDQgnIndiMmsPlay,
hgs
parents:
diff changeset
   609
                             EMbmSmilplayerQgn_indi_mms_play,
hgs
parents:
diff changeset
   610
                             EMbmSmilplayerQgn_indi_mms_play_mask );
hgs
parents:
diff changeset
   611
    
hgs
parents:
diff changeset
   612
    DrawDeferred();
hgs
parents:
diff changeset
   613
    }
hgs
parents:
diff changeset
   614
hgs
parents:
diff changeset
   615
// ---------------------------------------------------------
hgs
parents:
diff changeset
   616
// CSmilPlayerIndicatorController::UpdateTextColorL
hgs
parents:
diff changeset
   617
//
hgs
parents:
diff changeset
   618
// Sets the correct text color for time indicator from currently 
hgs
parents:
diff changeset
   619
// used theme. 
hgs
parents:
diff changeset
   620
// ---------------------------------------------------------
hgs
parents:
diff changeset
   621
//
hgs
parents:
diff changeset
   622
void CSmilPlayerIndicatorController::UpdateTextColorL()
hgs
parents:
diff changeset
   623
    {
hgs
parents:
diff changeset
   624
    TRgb timeColor( AKN_LAF_COLOR( KColorWhite ) );
hgs
parents:
diff changeset
   625
    
hgs
parents:
diff changeset
   626
    AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), 
hgs
parents:
diff changeset
   627
                               timeColor, 
hgs
parents:
diff changeset
   628
                               KAknsIIDQsnIconColors,
hgs
parents:
diff changeset
   629
                               EAknsCIQsnIconColorsCG7 );
hgs
parents:
diff changeset
   630
    
hgs
parents:
diff changeset
   631
    iTimeIndicator->OverrideColorL( EColorLabelText, timeColor );
hgs
parents:
diff changeset
   632
    }
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   635
// CSmilPlayerIndicatorController::LayoutArrowIcons
hgs
parents:
diff changeset
   636
//
hgs
parents:
diff changeset
   637
// Sets correct size for arrow icons.
hgs
parents:
diff changeset
   638
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   639
//
hgs
parents:
diff changeset
   640
void CSmilPlayerIndicatorController::SetIconIndicatorBitmapL( CEikImage*& aIndicator, 
hgs
parents:
diff changeset
   641
                                                              const TAknsItemID& aItem, 
hgs
parents:
diff changeset
   642
                                                              const TInt aBitmapIndex,
hgs
parents:
diff changeset
   643
                                                              const TInt aMaskIndex ) const
hgs
parents:
diff changeset
   644
    {
hgs
parents:
diff changeset
   645
    TParse fileParse;
hgs
parents:
diff changeset
   646
    User::LeaveIfError( fileParse.Set( KSmilPlayerBitmapFile, &KDC_APP_BITMAP_DIR, NULL ) );
hgs
parents:
diff changeset
   647
    
hgs
parents:
diff changeset
   648
    CFbsBitmap* bitmap = NULL;
hgs
parents:
diff changeset
   649
    CFbsBitmap* mask = NULL;
hgs
parents:
diff changeset
   650
    
hgs
parents:
diff changeset
   651
    AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), 
hgs
parents:
diff changeset
   652
                                 aItem,
hgs
parents:
diff changeset
   653
                                 KAknsIIDQsnIconColors,
hgs
parents:
diff changeset
   654
                                 EAknsCIQsnIconColorsCG7,
hgs
parents:
diff changeset
   655
                                 bitmap, 
hgs
parents:
diff changeset
   656
                                 mask,
hgs
parents:
diff changeset
   657
                                 fileParse.FullName(), 
hgs
parents:
diff changeset
   658
                                 aBitmapIndex,
hgs
parents:
diff changeset
   659
                                 aMaskIndex,
hgs
parents:
diff changeset
   660
                                 AKN_LAF_COLOR( KColorWhite ) ); 
hgs
parents:
diff changeset
   661
                                     
hgs
parents:
diff changeset
   662
    
hgs
parents:
diff changeset
   663
    aIndicator->SetNewBitmaps( bitmap, mask );
hgs
parents:
diff changeset
   664
    
hgs
parents:
diff changeset
   665
    if ( aIndicator->Size() != TSize() )
hgs
parents:
diff changeset
   666
        {
hgs
parents:
diff changeset
   667
        SetIconIndicatorExtent( aIndicator, aIndicator->Rect() );
hgs
parents:
diff changeset
   668
        }
hgs
parents:
diff changeset
   669
    }
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   672
// CSmilPlayerIndicatorController::SetIconIndicatorExtent
hgs
parents:
diff changeset
   673
//
hgs
parents:
diff changeset
   674
// Sets given icon extent to specified one.
hgs
parents:
diff changeset
   675
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   676
//
hgs
parents:
diff changeset
   677
void CSmilPlayerIndicatorController::SetIconIndicatorExtent( CEikImage* aIconIndicator,
hgs
parents:
diff changeset
   678
                                                             TRect aExtent ) const
hgs
parents:
diff changeset
   679
    {
hgs
parents:
diff changeset
   680
    TInt result = AknIconUtils::SetSize( const_cast<CFbsBitmap*>( aIconIndicator->Bitmap() ), 
hgs
parents:
diff changeset
   681
                                         aExtent.Size() );
hgs
parents:
diff changeset
   682
    
hgs
parents:
diff changeset
   683
    if ( result == KErrNone )
hgs
parents:
diff changeset
   684
        {
hgs
parents:
diff changeset
   685
        if ( aExtent != aIconIndicator->Rect() )
hgs
parents:
diff changeset
   686
            {
hgs
parents:
diff changeset
   687
            aIconIndicator->SetRect( aExtent );
hgs
parents:
diff changeset
   688
            }
hgs
parents:
diff changeset
   689
        }
hgs
parents:
diff changeset
   690
    else
hgs
parents:
diff changeset
   691
        {
hgs
parents:
diff changeset
   692
        aIconIndicator->SetRect( TRect() );
hgs
parents:
diff changeset
   693
        }
hgs
parents:
diff changeset
   694
    }
hgs
parents:
diff changeset
   695
hgs
parents:
diff changeset
   696
// End of File