mtpdataproviders/mtpplaybackcontroldp/mtpplaybackmpximplementation/src/cmtpplaybackcontrolimpl.cpp
author hgs
Thu, 04 Nov 2010 15:31:42 +0800
changeset 60 841f70763fbe
parent 49 c20dd21d1eb4
permissions -rw-r--r--
201044_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
// All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
// Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
// Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
// Description:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
/**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
 @file
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
 @internalComponent
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
#include <mpxmessagegeneraldefs.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include <mpxplaybackutility.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
#include <mpxplaybackmessage.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
#include <mpxplaybackmessagedefs.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
#include <mpxcommandgeneraldefs.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
#include <mpxcollectionplaylist.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
#include <mpxcollectionpath.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
#include "cmtpplaybackcontrolimpl.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
#include "cmtpplaybackplaylisthelper.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
#include "cmtpplaybackcommandchecker.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
#include "cmtpplaybackresumehelper.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
#include "mtpplaybackcontrolpanic.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
#include "cmtpplaybackcommand.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
#include "cmtpplaybackevent.h"
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    37
#include "OstTraceDefinitions.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    38
#ifdef OST_TRACE_COMPILER_IN_USE
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    39
#include "cmtpplaybackcontrolimplTraces.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    40
#endif
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
// ======== MEMBER FUNCTIONS ========
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
// CMTPPlaybackControlImpl::NewL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
CMTPPlaybackControlImpl* CMTPPlaybackControlImpl::NewL( 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
        MMTPPlaybackObserver& aObserver )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    52
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_NEWL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
    CMTPPlaybackControlImpl* self = new ( ELeave ) 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
                CMTPPlaybackControlImpl( aObserver );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    CleanupStack::PushL( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    CleanupStack::Pop( self );
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    58
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_NEWL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
// CMTPPlaybackControlImpl::Close()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
void CMTPPlaybackControlImpl::Close()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    68
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_CLOSE_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
    delete this;
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    70
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_CLOSE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
// CMTPPlaybackControlImpl::~CMTPPlaybackControlImpl
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
CMTPPlaybackControlImpl::~CMTPPlaybackControlImpl()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    79
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_CMTPPLAYBACKCONTROLIMPL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
    if ( iPlaybackUtility )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
        TRAP_IGNORE( SendMPXPlaybackCommandL( EPbCmdClose, ETrue ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
        TRAP_IGNORE( iPlaybackUtility->RemoveObserverL( *this ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
        iPlaybackUtility->Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
    if ( iNowActivePlaybackUtility )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
        TRAP_IGNORE( SendMPXPlaybackCommandL( EPbCmdClose, EFalse ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
        iNowActivePlaybackUtility->Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
    delete iPlaybackCommandChecker;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
    delete iPlaybackPlaylistHelper;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
    delete iPlaybackResumeHelper;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
    delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
    iPrepareCmdArray.Reset();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
    iPrepareCmdArray.Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
    iResumeCmdArray.Reset();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
    iResumeCmdArray.Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
    delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   104
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_CMTPPLAYBACKCONTROLIMPL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
// CMTPPlaybackControlImpl::CommandL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
void CMTPPlaybackControlImpl::CommandL( CMTPPlaybackCommand& aCmd, MMTPPlaybackCallback* aCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   113
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_COMMANDL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   114
    OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_COMMANDL, "The command code is 0x%X", aCmd.PlaybackCommand());
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
    iCallback = aCallback;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
    TRAPD( err, CheckPlaybackCmdAndCacheL( aCmd ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
    if ( KErrNone == err )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
        UpdateCommandArray();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
        DoCommandL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
        CompleteSelf( err );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   130
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_COMMANDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
// From MMPXPlaybackObserver
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
// Handle playback message.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
void CMTPPlaybackControlImpl::HandlePlaybackMessage( CMPXMessage* aMessage, 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
        TInt aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   141
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_HANDLEPLAYBACKMESSAGE_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   142
    OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_HANDLEPLAYBACKMESSAGE, "CMTPPlaybackControlImpl::HandlePlaybackMessage( %d )", aError );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
    if (( KErrNone == aError ) && aMessage )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
        TRAP( aError, DoHandlePlaybackMessageL( *aMessage ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
    if ( KErrNone != aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
        DoHandleError( MapError( aError ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   154
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_HANDLEPLAYBACKMESSAGE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
// From MMPXPlaybackCallback
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
// Handle playback property.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
void CMTPPlaybackControlImpl::HandlePropertyL( TMPXPlaybackProperty aProperty, 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
        TInt aValue, TInt aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   165
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_HANDLEPROPERTYL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   166
    OstTraceExt3( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_HANDLEPROPERTYL, "CMTPPlaybackControlImpl::HandlePropertyL( aProperty = 0x%X, aValue = 0x%X, aError = %d )", aProperty, aValue, aError );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
    if ( KErrNone == aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
        TRAP( aError, DoHandlePropertyL( aProperty, aValue ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   171
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
    if ( KErrNone != aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
        DoHandleError( MapError( aError ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   177
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   178
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_HANDLEPROPERTYL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   179
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   180
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   181
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   182
// From MMPXPlaybackCallback
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   183
// Method is called continously until aComplete=ETrue, signifying that
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   184
// it is done and there will be no more callbacks
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   185
// Only new items are passed each time
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   186
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   187
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   188
void CMTPPlaybackControlImpl::HandleSubPlayerNamesL(
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   189
    TUid /* aPlayer */,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   190
    const MDesCArray* /* aSubPlayers */,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   191
    TBool /* aComplete */,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   192
    TInt /* aError */ )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   193
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   194
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_HANDLESUBPLAYERNAMESL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   195
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_HANDLESUBPLAYERNAMESL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   196
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   197
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   198
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   199
// From MMPXPlaybackCallback
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   200
// Handle media
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   201
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   202
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   203
void CMTPPlaybackControlImpl::HandleMediaL( const CMPXMedia& aMedia, 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   204
        TInt aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   205
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   206
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_HANDLEMEDIAL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   207
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   208
    if (( KErrNone == aError ) && ( aMedia.IsSupported( KMPXMediaGeneralUri )))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   209
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   210
        TRAP( aError, DoHandleMediaL( aMedia ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   211
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   212
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   213
    if ( KErrNone != aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   214
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   215
        DoHandleError( MapError( aError ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   216
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   217
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   218
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_HANDLEMEDIAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   219
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   220
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   221
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   222
// From CActive
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   223
// CMTPPlaybackControlImpl::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   224
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   225
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   226
void CMTPPlaybackControlImpl::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   227
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   228
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOCANCEL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   229
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOCANCEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   230
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   231
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   232
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   233
// From CActive
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   234
// CMTPPlaybackControlImpl::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   235
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   236
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   237
void CMTPPlaybackControlImpl::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   238
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   239
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_RUNL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   240
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   241
    if ( KPlaybackErrNone == iStatus.Int() )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   242
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   243
        TRAPD( error, SendPlaybackCommandCompleteL());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   244
		if ( error != KErrNone )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   245
        	{
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   246
        	DoHandleError( MapError( error ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   247
        	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   248
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   249
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   250
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   251
        DoHandleError( iStatus.Int());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   252
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   253
 
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   254
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_RUNL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   255
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   256
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   257
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   258
// CMTPPlaybackControlImpl::CMTPPlaybackControlImpl
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   260
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   261
CMTPPlaybackControlImpl::CMTPPlaybackControlImpl( 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   262
        MMTPPlaybackObserver& aObserver )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   263
        : CActive( EPriorityStandard ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   264
          iObserver( &aObserver )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   265
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   266
    OstTraceFunctionEntry0( DUP1_CMTPPLAYBACKCONTROLIMPL_CMTPPLAYBACKCONTROLIMPL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   267
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   268
    CActiveScheduler::Add( this );
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   269
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   270
    OstTraceFunctionExit0( DUP1_CMTPPLAYBACKCONTROLIMPL_CMTPPLAYBACKCONTROLIMPL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   271
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   272
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   273
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   274
// CMTPPlaybackControlImpl::ConstructL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   275
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   276
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   277
void CMTPPlaybackControlImpl::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   278
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   279
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_CONSTRUCTL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   280
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   281
    iPlaybackUtility = MMPXPlaybackUtility::NewL( KMTPPlaybackControlDpUid, this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   282
    iNowActivePlaybackUtility = MMPXPlaybackUtility::NewL( KPbModeActivePlayer );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   283
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   284
    iPlaybackCommandChecker = CMTPPlaybackCommandChecker::NewL( *this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   285
    iPlaybackPlaylistHelper = CMTPPlaybackPlaylistHelper::NewL( *this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   286
    iPlaybackResumeHelper = CMTPPlaybackResumeHelper::NewL( *this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   287
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   288
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_CONSTRUCTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   289
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   290
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   291
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   292
// CMTPPlaybackControlImpl::GetPlaylistFromCollectionCompleteL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   293
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   294
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   295
void CMTPPlaybackControlImpl::GetPlaylistFromCollectionCompleteL( const CMPXCollectionPlaylist& aPlaylist )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   296
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   297
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_GETPLAYLISTFROMCOLLECTIONCOMPLETEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   298
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   299
    CMPXCollectionPlaylist* tmp =
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   300
                                CMPXCollectionPlaylist::NewL( aPlaylist );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   301
    CleanupStack::PushL( tmp );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   302
    tmp->SetEmbeddedPlaylist( ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   303
    tmp->SetRepeatEnabled( EFalse );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   304
    tmp->SetShuffleEnabledL( EFalse );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   305
    iPlaybackUtility->InitL( *tmp, ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   306
    CleanupStack::PopAndDestroy( tmp );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   307
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   308
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_GETPLAYLISTFROMCOLLECTIONCOMPLETEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   309
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   310
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   311
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   312
// CMTPPlaybackControlImpl::DeActiveOtherPlayerL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   313
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   314
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   315
void CMTPPlaybackControlImpl::DeActiveOtherPlayerL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   316
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   317
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DEACTIVEOTHERPLAYERL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   318
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   319
    if ( iNowActivePlaybackUtility->StateL() != iPlaybackUtility->StateL())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   320
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   321
        SendMPXPlaybackCommandL( EPbCmdPause, EFalse );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   322
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   323
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   324
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DEACTIVEOTHERPLAYERL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   325
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   326
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   327
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   328
// CMTPPlaybackControlImpl::CheckPlaybackCmdAndCacheL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   329
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   330
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   331
void CMTPPlaybackControlImpl::CheckPlaybackCmdAndCacheL( CMTPPlaybackCommand& aCmd )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   332
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   333
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_CHECKPLAYBACKCMDANDCACHEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   334
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   335
    iPlaybackCommandChecker->CheckPlaybackCommandContextL( aCmd.PlaybackCommand());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   336
    iPlaybackCommandChecker->CheckAndUpdatePlaybackParamL( aCmd, &iCmdParam );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   337
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   338
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_CHECKPLAYBACKCMDANDCACHEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   339
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   340
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   341
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   342
// CMTPPlaybackControlImpl::UpdateCommandArrayL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   343
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   344
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   345
void CMTPPlaybackControlImpl::UpdateCommandArray()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   346
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   347
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_UPDATECOMMANDARRAY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   348
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   349
    iPlaybackResumeHelper->UpdatePrepareCmdArray( iMTPPBCmd, iPrepareCmdArray );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   350
    iPlaybackResumeHelper->UpdateResumeCmdArray( iMTPPBCmd, iResumeCmdArray );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   351
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   352
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_UPDATECOMMANDARRAY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   353
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   354
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   355
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   356
// CMTPPlaybackControlImpl::RequestMediaL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   357
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   358
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   359
void CMTPPlaybackControlImpl::RequestMediaL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   360
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   361
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_REQUESTMEDIAL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   362
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   363
    if ( iPlayList )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   364
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   365
        delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   366
        iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   367
        iCmdParam = CMTPPbCmdParam::NewL( iPlaybackPlaylistHelper->MTPPbCategory(), 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   368
                iPlaybackPlaylistHelper->MTPPbSuid());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   369
        CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   370
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   371
    else if ( iPlaybackUtility->Source() )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   372
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   373
        //Album or Playlist
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   374
        iPlayList = iPlaybackUtility->Source()->PlaylistL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   375
        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   376
        if ( iPlayList )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   377
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   378
            TMTPPbDataSuid suid( EMTPPbCatNone, KNullDesC );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   379
            suid = iPlaybackPlaylistHelper->GetMTPPBSuidFromCollectionL( *iPlayList );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   380
            delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   381
            iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   382
            iCmdParam = CMTPPbCmdParam::NewL( suid.Category(), suid.Suid());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   383
            CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   384
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   385
        else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   386
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   387
            //Single Song
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   388
            RArray<TMPXAttribute> attrs;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   389
            CleanupClosePushL(attrs);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   390
            attrs.Append( KMPXMediaGeneralUri );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   391
            iPlaybackUtility->Source()->MediaL( attrs.Array(), *this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   392
            CleanupStack::PopAndDestroy( &attrs );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   393
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   394
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   395
    else 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   396
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   397
        //Not initialized
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   398
        CompleteSelf( KPlaybackErrContextInvalid );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   399
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   400
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   401
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_REQUESTMEDIAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   402
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   403
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   404
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   405
// CMTPPlaybackControlImpl::DoCommandL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   406
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   407
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   408
void CMTPPlaybackControlImpl::DoCommandL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   409
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   410
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOCOMMANDL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   411
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   412
    if ( iPrepareCmdArray.Count() != 0 )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   413
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   414
        InitiateMPXPlaybackCommandL( iPrepareCmdArray[0].iMPXCommand, ETrue );
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   415
        OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOCOMMANDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   416
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   417
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   418
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   419
    switch ( iMTPPBCmd )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   420
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   421
        case EPlaybackCmdInitObject:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   422
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   423
            const TMTPPbCategory category = iCmdParam->SuidSetL().Category();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   424
            if ( EMTPPbCatMusic == category )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   425
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   426
                iPlaybackUtility->InitL( iCmdParam->SuidSetL().Suid() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   427
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   428
            else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   429
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   430
                iPlaybackPlaylistHelper->GetPlayListFromCollectionL( iCmdParam->SuidSetL() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   431
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   432
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   433
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   434
        case EPlaybackCmdInitIndex:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   435
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   436
            iPlaybackPlaylistHelper->GetPlayListFromCollectionL( iCmdParam->Uint32L() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   437
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   438
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   439
        case EPlaybackCmdStop:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   440
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   441
            delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   442
            iPlayList = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   443
            SendMPXPlaybackCommandL( EPbCmdClose, ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   444
            CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   445
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   446
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   447
        case EPlaybackCmdSkip:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   448
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   449
            iPlaybackPlaylistHelper->GetPlayListFromCollectionL( iCmdParam->Int32L() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   450
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   451
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   452
        case EPlaybackCmdSetVolume:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   453
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   454
            iPlaybackUtility->SetL( EPbPropertyVolume, iCmdParam->Uint32L() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   455
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   456
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   457
        case EPlaybackCmdSetPosition:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   458
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   459
            iPlaybackUtility->PropertyL(*this, EPbPropertyDuration);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   460
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   461
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   462
        case EPlaybackCmdGetPosition:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   463
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   464
            iPlaybackUtility->PropertyL(*this, EPbPropertyPosition);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   465
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   466
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   467
        case EPlaybackCmdGetVolumeSet:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   468
        case EPlaybackCmdGetVolume:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   469
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   470
            iPlaybackUtility->PropertyL(*this, EPbPropertyVolume);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   471
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   472
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   473
        case EPlaybackCmdGetState:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   474
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   475
            delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   476
            iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   477
            TMTPPlaybackState state = MapState( CurrentState());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   478
            iCmdParam = CMTPPbCmdParam::NewL( static_cast<TUint32>( state ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   479
            CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   480
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   481
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   482
        case EPlaybackCmdGetObject:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   483
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   484
            RequestMediaL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   485
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   486
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   487
        case EPlaybackCmdGetIndex:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   488
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   489
            delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   490
            iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   491
            iCmdParam = CMTPPbCmdParam::NewL( static_cast<TUint32>( SongIndex()));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   492
            CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   493
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   494
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   495
        default:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   496
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   497
            if ( iResumeCmdArray.Count() != 0 )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   498
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   499
                InitiateMPXPlaybackCommandL( iResumeCmdArray[0].iMPXCommand, ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   500
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   501
            else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   502
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   503
                CompleteSelf( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   504
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   505
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   506
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   507
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   508
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   509
    OstTraceFunctionExit0( DUP1_CMTPPLAYBACKCONTROLIMPL_DOCOMMANDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   510
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   511
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   512
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   513
// CMTPPlaybackControlImpl::DoHandlePlaybackMessageL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   514
// ----------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   515
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   516
void CMTPPlaybackControlImpl::DoHandlePlaybackMessageL( const CMPXMessage& aMessage )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   517
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   518
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEPLAYBACKMESSAGEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   519
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   520
    TMPXMessageId id( 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   521
                aMessage.ValueTObjectL<TMPXMessageId>( KMPXMessageGeneralId ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   522
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   523
    if ( KMPXMessageGeneral == id )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   524
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   525
        TInt event( aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralEvent ) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   526
        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   527
        switch ( event )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   528
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   529
            case TMPXPlaybackMessage::EPropertyChanged:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   530
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   531
                DoHandlePropertyL(
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   532
                    aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralType ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   533
                    aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralData ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   534
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   535
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   536
            case TMPXPlaybackMessage::EStateChanged:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   537
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   538
                TMPXPlaybackState state( 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   539
                        aMessage.ValueTObjectL<TMPXPlaybackState>( 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   540
                                KMPXMessageGeneralType ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   541
                DoHandleStateChangedL( state );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   542
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   543
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   544
            case TMPXPlaybackMessage::EInitializeComplete:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   545
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   546
                DoHandleInitializeCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   547
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   548
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   549
            case TMPXPlaybackMessage::EMediaChanged:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   550
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   551
                DoHandleMediaChangedL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   552
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   553
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   554
            default:
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   555
                OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_DOHANDLEPLAYBACKMESSAGEL, "DoHandlePlaybackMessageL( TMPXPlaybackMessage event = 0x%X )", event );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   556
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   557
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   558
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   559
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   560
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEPLAYBACKMESSAGEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   561
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   562
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   563
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   564
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   565
// Handle playback property.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   566
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   567
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   568
void CMTPPlaybackControlImpl::DoHandlePropertyL( TInt aProperty, TInt aValue )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   569
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   570
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEPROPERTYL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   571
    OstTraceExt2( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_DOHANDLEPROPERTYL, "CMTPPlaybackControlImpl::DoHandlePropertyL( aProperty = 0x%X, aValue = 0x%X )", static_cast<TUint32>( aProperty ), aValue );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   572
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   573
    switch ( aProperty  )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   574
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   575
        case EPbPropertyPosition:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   576
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   577
            if ( EPlaybackCmdGetPosition == MTPPBCmdHandling())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   578
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   579
                delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   580
                iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   581
                iCmdParam = CMTPPbCmdParam::NewL(static_cast<TUint32>(aValue));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   582
                SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   583
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   584
            else if ( EPlaybackCmdSetPosition == MTPPBCmdHandling() )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   585
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   586
                if ( aValue == iCmdParam->Uint32L() )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   587
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   588
                    SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   589
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   590
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   591
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   592
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   593
        case EPbPropertyMute:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   594
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   595
            SendPlaybackEventL( EPlaybackEventVolumeUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   596
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   597
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   598
        case EPbPropertyVolume:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   599
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   600
            switch ( MTPPBCmdHandling() )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   601
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   602
                case EPlaybackCmdSetVolume:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   603
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   604
                    SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   605
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   606
                    break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   607
                case EPlaybackCmdGetVolumeSet:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   608
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   609
                    delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   610
                    iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   611
                    TMTPPbDataVolume volumeSet( KPbPlaybackVolumeLevelMax,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   612
                                                KPbPlaybackVolumeLevelMin,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   613
                                                KMPXPlaybackDefaultVolume,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   614
                                                aValue,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   615
                                                KMTPPlaybackVolumeStep );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   616
                    iCmdParam = CMTPPbCmdParam::NewL( volumeSet );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   617
                    SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   618
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   619
                    break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   620
                case EPlaybackCmdGetVolume:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   621
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   622
                    delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   623
                    iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   624
                    iCmdParam = CMTPPbCmdParam::NewL(static_cast<TUint32>( aValue ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   625
                    SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   626
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   627
                    break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   628
                default:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   629
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   630
                    SendPlaybackEventL( EPlaybackEventVolumeUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   631
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   632
                    break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   633
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   634
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   635
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   636
        case EPbPropertyDuration:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   637
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   638
            if ( EPlaybackCmdSetPosition == MTPPBCmdHandling())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   639
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   640
                if ( iCmdParam->Uint32L() < aValue )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   641
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   642
                    iPlaybackUtility->SetL( EPbPropertyPosition, iCmdParam->Uint32L() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   643
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   644
                else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   645
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   646
                    DoHandleError( KPlaybackErrParamInvalid );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   647
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   648
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   649
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   650
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   651
        default:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   652
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   653
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   654
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   655
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEPROPERTYL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   656
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   657
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   658
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   659
// Handle playback state changed.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   660
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   661
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   662
void CMTPPlaybackControlImpl::DoHandleStateChangedL( TMPXPlaybackState aState )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   663
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   664
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLESTATECHANGEDL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   665
    OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_DOHANDLESTATECHANGEDL, "CMTPPlaybackControlImpl::DoHandleStateChangedL( aState = 0x%X )", aState );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   666
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   667
    if (( iPrepareCmdArray.Count() != 0 ) && ( iPrepareCmdArray[0].iMPXExpectState == aState ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   668
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   669
        iPrepareCmdArray.Remove( 0 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   670
        DoCommandL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   671
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   672
    else if (( iResumeCmdArray.Count() != 0 ) && ( iResumeCmdArray[0].iMPXExpectState == aState ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   673
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   674
        iResumeCmdArray.Remove( 0 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   675
        SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   676
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   677
    else if (( iState != aState ) && ( MapState( aState )!= MapState( iState ) ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   678
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   679
        SendPlaybackEventL( EPlaybackEventStateUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   680
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   681
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   682
    if ( iState != aState )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   683
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   684
        iPreState = iState;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   685
        iState = aState;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   686
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   687
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   688
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLESTATECHANGEDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   689
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   690
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   691
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   692
// DoHandleMediaL.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   693
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   694
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   695
void CMTPPlaybackControlImpl::DoHandleMediaL( const CMPXMedia& aMedia )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   696
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   697
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEMEDIAL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   698
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   699
    TFileName filePath(aMedia.ValueText(KMPXMediaGeneralUri) );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   700
    delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   701
    iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   702
    iCmdParam = CMTPPbCmdParam::NewL( EMTPPbCatMusic, filePath );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   703
    SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   704
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   705
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEMEDIAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   706
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   707
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   708
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   709
// Handle media changed.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   710
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   711
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   712
void CMTPPlaybackControlImpl::DoHandleMediaChangedL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   713
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   714
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEMEDIACHANGEDL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   715
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   716
    if (( EPbStateNotInitialised == iState ) || ( EPbStateInitialising == iState ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   717
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   718
        if (( MTPPBCmdHandling() != EPlaybackCmdInitObject )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   719
                && ( MTPPBCmdHandling() != EPlaybackCmdInitIndex )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   720
                && ( MTPPBCmdHandling() != EPlaybackCmdSkip ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   721
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   722
            //should send an event
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   723
            MMPXSource* source = iPlaybackUtility->Source();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   724
            CMPXCollectionPlaylist* playlist = source->PlaylistL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   725
            if (( playlist != NULL ) && ( iPlayList != NULL ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   726
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   727
                CleanupStack::PushL( playlist );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   728
                //New media is a playlist or album
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   729
                TInt level = playlist->Path().Levels();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   730
                if ( IfEqual(iPlayList->Path(), playlist->Path(), level-1 ) && !IfEqual(iPlayList->Path(), playlist->Path(), level ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   731
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   732
                    SendPlaybackEventL( EPlaybackEventObjectIndexUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   733
                    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   734
                    CleanupStack::Pop( playlist );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   735
                    delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   736
                    iPlayList = playlist;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   737
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   738
                else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   739
                    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   740
                    SendPlaybackEventL( EPlaybackEventObjectUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   741
                    SendPlaybackEventL( EPlaybackEventObjectIndexUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   742
                    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   743
                    CleanupStack::PopAndDestroy( playlist );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   744
                    delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   745
                    iPlayList = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   746
                    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   747
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   748
            else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   749
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   750
                //New media is a single song
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   751
                SendPlaybackEventL( EPlaybackEventObjectUpdate );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   752
                
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   753
                delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   754
                iPlayList = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   755
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   756
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   757
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   758
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   759
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEMEDIACHANGEDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   760
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   761
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   762
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   763
// Handle Initialize complete.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   764
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   765
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   766
void CMTPPlaybackControlImpl::DoHandleInitializeCompleteL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   767
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   768
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEINITIALIZECOMPLETEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   769
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   770
    if ( EPlaybackCmdInitObject == MTPPBCmdHandling() 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   771
            || EPlaybackCmdInitIndex == MTPPBCmdHandling() 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   772
            || EPlaybackCmdSkip == MTPPBCmdHandling())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   773
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   774
        delete iPlayList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   775
        iPlayList = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   776
        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   777
        MMPXSource* source = iPlaybackUtility->Source();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   778
        if ( source )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   779
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   780
            iPlayList = source->PlaylistL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   781
            SendPlaybackCommandCompleteL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   782
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   783
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   784
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   785
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEINITIALIZECOMPLETEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   786
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   787
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   788
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   789
// Handle error.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   790
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   791
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   792
void CMTPPlaybackControlImpl::DoHandleError( TInt aErr )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   793
    {    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   794
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEERROR_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   795
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   796
    if ( aErr != KPlaybackErrNone )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   797
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   798
        if ( iCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   799
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   800
            TRAP_IGNORE( iCallback->HandlePlaybackCommandCompleteL( NULL, aErr ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   801
            ResetPlaybackCommand();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   802
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   803
        else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   804
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   805
            TRAP_IGNORE( iObserver->HandlePlaybackEventL( NULL, aErr ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   806
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   807
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   808
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   809
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_DOHANDLEERROR_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   810
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   811
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   812
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   813
// Compare two path according to level.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   814
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   815
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   816
TBool CMTPPlaybackControlImpl::IfEqual( const CMPXCollectionPath& aPathBase, const CMPXCollectionPath& aPathNew, TUint aLevel )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   817
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   818
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_IFEQUAL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   819
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   820
    if (( aPathBase.Levels() < aLevel ) || ( aPathNew.Levels() < aLevel ))
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   821
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   822
        OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_IFEQUAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   823
        return EFalse;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   824
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   825
    for ( TInt i = 0; i < aLevel; i++ )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   826
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   827
        if ( aPathBase.Index( i ) != aPathNew.Index( i ) )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   828
            {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   829
            OstTraceFunctionExit0( DUP1_CMTPPLAYBACKCONTROLIMPL_IFEQUAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   830
            return EFalse;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   831
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   832
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   833
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   834
    OstTraceFunctionExit0( DUP2_CMTPPLAYBACKCONTROLIMPL_IFEQUAL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   835
    return ETrue;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   836
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   837
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   838
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   839
// Map states from TMPXPlaybackState to TMTPPlaybackState
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   840
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   841
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   842
TMTPPlaybackState CMTPPlaybackControlImpl::MapState( TMPXPlaybackState aState )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   843
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   844
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_MAPSTATE_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   845
    OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_MAPSTATE, "CMTPPlaybackControlImpl::MapState( aState = 0x%X )", aState );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   846
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   847
    TMTPPlaybackState state = EPlayStateError;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   848
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   849
    switch ( aState )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   850
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   851
        case EPbStatePlaying:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   852
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   853
            state = EPlayStatePlaying;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   854
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   855
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   856
        case EPbStatePaused:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   857
        case EPbStateInitialising:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   858
        case EPbStateInitialised:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   859
        case EPbStateNotInitialised:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   860
        case EPbStateStopped:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   861
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   862
            state = EPlayStatePaused;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   863
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   864
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   865
        case EPbStateSeekingForward:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   866
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   867
            state = EPlayStateForwardSeeking;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   868
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   869
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   870
        case EPbStateSeekingBackward:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   871
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   872
            state = EPlayStateBackwardSeeking;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   873
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   874
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   875
        default:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   876
            break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   877
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   878
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   879
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_MAPSTATE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   880
    return state;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   881
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   882
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   883
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   884
// CMTPPlaybackControlImpl::MapError.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   885
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   886
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   887
TInt CMTPPlaybackControlImpl::MapError( TInt aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   888
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   889
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_MAPERROR_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   890
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   891
    TInt err( KPlaybackErrNone );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   892
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   893
    if ( KErrHardwareNotAvailable == aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   894
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   895
        err = KPlaybackErrDeviceUnavailable;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   896
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   897
    else if ( KErrArgument == aError )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   898
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   899
        err = KPlaybackErrParamInvalid;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   900
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   901
    else 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   902
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   903
        err = KPlaybackErrDeviceBusy;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   904
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   905
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   906
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_MAPERROR_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   907
    return err;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   908
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   909
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   910
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   911
// CMTPPlaybackControlImpl::CompleteSelf.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   912
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   913
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   914
void CMTPPlaybackControlImpl::CompleteSelf( TInt aCompletionCode )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   915
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   916
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_COMPLETESELF_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   917
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   918
    OstTrace1( TRACE_NORMAL, CMTPPLAYBACKCONTROLIMPL_COMPLETESELF, "CMTPPlaybackControlImpl::CompleteSelf( %d )", aCompletionCode );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   919
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   920
    SetActive();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   921
    TRequestStatus* status = &iStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   922
    User::RequestComplete( status, aCompletionCode );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   923
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   924
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_COMPLETESELF_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   925
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   926
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   927
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   928
// CMTPPlaybackControlImpl::InitiateMPXPlaybackCommandL.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   929
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   930
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   931
void CMTPPlaybackControlImpl::InitiateMPXPlaybackCommandL( TMPXPlaybackCommand aCommand, TBool aIsMTPPlaybackUtility )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   932
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   933
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_INITIATEMPXPLAYBACKCOMMANDL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   934
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   935
    switch ( aCommand )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   936
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   937
            case EPbCmdPlay:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   938
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   939
                DeActiveOtherPlayerL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   940
                SendMPXPlaybackCommandL( EPbCmdPlay, aIsMTPPlaybackUtility );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   941
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   942
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   943
            case EPbCmdPlayPause:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   944
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   945
                DeActiveOtherPlayerL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   946
                SendMPXPlaybackCommandL( EPbCmdPlayPause, aIsMTPPlaybackUtility );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   947
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   948
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   949
            default:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   950
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   951
                SendMPXPlaybackCommandL( aCommand, aIsMTPPlaybackUtility );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   952
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   953
                break;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   954
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   955
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   956
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_INITIATEMPXPLAYBACKCOMMANDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   957
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   958
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   959
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   960
// CMTPPlaybackControlImpl::SendMPXPlaybackCommandL.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   961
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   962
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   963
void CMTPPlaybackControlImpl::SendMPXPlaybackCommandL( TMPXPlaybackCommand aCommand, TBool aIsMTPPlaybackUtility )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   964
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   965
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SENDMPXPLAYBACKCOMMANDL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   966
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   967
    CMPXCommand* cmd( CMPXCommand::NewL() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   968
    CleanupStack::PushL( cmd );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   969
    cmd->SetTObjectValueL<TInt>( KMPXCommandGeneralId, KMPXCommandIdPlaybackGeneral );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   970
    cmd->SetTObjectValueL<TBool>( KMPXCommandGeneralDoSync, ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   971
    cmd->SetTObjectValueL<TInt>( KMPXCommandPlaybackGeneralType, aCommand );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   972
    cmd->SetTObjectValueL<TInt>( KMPXCommandPlaybackGeneralData, 0 ); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   973
   
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   974
    if ( aIsMTPPlaybackUtility )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   975
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   976
        iPlaybackUtility->CommandL( *cmd, this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   977
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   978
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   979
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   980
        iNowActivePlaybackUtility->CommandL( *cmd );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   981
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   982
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   983
    CleanupStack::PopAndDestroy( cmd );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   984
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   985
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SENDMPXPLAYBACKCOMMANDL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   986
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   987
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   988
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   989
// CMTPPlaybackControlImpl::SendPlaybackCommandCompleteL.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   990
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   991
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   992
void CMTPPlaybackControlImpl::SendPlaybackCommandCompleteL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   993
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   994
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SENDPLAYBACKCOMMANDCOMPLETEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   995
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   996
    __ASSERT_DEBUG( iCallback, Panic( EMTPPBCallbackInvalid ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   997
    __ASSERT_DEBUG(( iMTPPBCmd > EPlaybackCmdNone ) && ( iMTPPBCmd < EPlaybackCmdEnd ), Panic( EMTPPBCallbackInvalid ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   998
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   999
    if ( iResumeCmdArray.Count() != 0 )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1000
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1001
        InitiateMPXPlaybackCommandL( iResumeCmdArray[0].iMPXCommand, ETrue );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1002
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1003
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1004
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1005
        CMTPPlaybackCommand* cmd = CMTPPlaybackCommand::NewL( iMTPPBCmd, iCmdParam );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1006
        iCmdParam = NULL;//Ownership is handled to CMTPPlaybackCommand
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1007
        CleanupStack::PushL(cmd);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1008
        iCallback->HandlePlaybackCommandCompleteL( cmd );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1009
        CleanupStack::PopAndDestroy(cmd);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1010
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1011
        ResetPlaybackCommand();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1012
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1013
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1014
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SENDPLAYBACKCOMMANDCOMPLETEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1015
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1016
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1017
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1018
// CMTPPlaybackControlImpl::SendPlaybackEventL.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1019
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1020
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1021
void CMTPPlaybackControlImpl::SendPlaybackEventL( TMTPPlaybackEvent aEvt )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1022
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1023
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SENDPLAYBACKEVENTL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1024
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1025
    CMTPPlaybackEvent* event = CMTPPlaybackEvent::NewL( aEvt, NULL );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1026
    CleanupStack::PushL(event);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1027
    iObserver->HandlePlaybackEventL( event );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1028
    CleanupStack::PopAndDestroy(event);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1029
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1030
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SENDPLAYBACKEVENTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1031
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1032
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1033
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1034
// CMTPPlaybackControlImpl::ResetPlaybackCommand.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1035
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1036
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1037
void CMTPPlaybackControlImpl::ResetPlaybackCommand()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1038
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1039
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_RESETPLAYBACKCOMMAND_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1040
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1041
    iCallback = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1042
    iMTPPBCmd = EPlaybackCmdNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1043
    iPrepareCmdArray.Reset();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1044
    iResumeCmdArray.Reset();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1045
    delete iCmdParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1046
    iCmdParam = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1047
    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1048
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_RESETPLAYBACKCOMMAND_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1049
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1050
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1051
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1052
// Return current state
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1053
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1054
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1055
TMPXPlaybackState CMTPPlaybackControlImpl::CurrentState() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1056
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1057
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_CURRENTSTATE_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1058
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_CURRENTSTATE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1059
    return iState;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1060
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1061
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1062
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1063
// Return previous state
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1064
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1065
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1066
TMPXPlaybackState CMTPPlaybackControlImpl::PreviousState() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1067
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1068
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_PREVIOUSSTATE_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1069
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_PREVIOUSSTATE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1070
    return iPreState;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1071
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1072
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1073
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1074
// Return song count
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1075
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1076
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1077
TInt32 CMTPPlaybackControlImpl::SongCount() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1078
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1079
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SONGCOUNT_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1080
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1081
    TInt32 songCount = -1;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1082
    if ( iPlayList )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1083
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1084
        songCount = iPlayList->Count();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1085
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1086
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1087
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SONGCOUNT_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1088
    return songCount;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1089
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1090
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1091
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1092
// Return song index
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1093
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1094
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1095
TInt32 CMTPPlaybackControlImpl::SongIndex() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1096
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1097
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SONGINDEX_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1098
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1099
    TInt32 songIndex = -1;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1100
    if ( iPlayList )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1101
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1102
        TInt level = iPlayList->Path().Levels();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1103
        songIndex = iPlayList->Path().Index( level-1 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1104
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1105
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1106
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SONGINDEX_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1107
    return songIndex;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1108
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1109
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1110
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1111
// Set mtp playback command
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1112
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1113
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1114
void CMTPPlaybackControlImpl::SetMTPPBCmd( TMTPPlaybackCommand aMTPPBCmd )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1115
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1116
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_SETMTPPBCMD_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1117
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1118
    iMTPPBCmd = aMTPPBCmd;
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1119
    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1120
    OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_SETMTPPBCMD_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1121
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1122
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1123
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1124
// Return mtp playback command which is handling
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1125
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1126
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1127
TMTPPlaybackCommand CMTPPlaybackControlImpl::MTPPBCmdHandling() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1128
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1129
    OstTraceFunctionEntry0( CMTPPLAYBACKCONTROLIMPL_MTPPBCMDHANDLING_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1130
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1131
    if ( iPrepareCmdArray.Count() == 0 )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1132
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1133
        OstTraceFunctionExit0( CMTPPLAYBACKCONTROLIMPL_MTPPBCMDHANDLING_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1134
        return iMTPPBCmd;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1135
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1136
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1137
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
  1138
        OstTraceFunctionExit0( DUP1_CMTPPLAYBACKCONTROLIMPL_MTPPBCMDHANDLING_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1139
        return EPlaybackCmdNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1140
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1141
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
  1142