diff -r 79c49924ae23 -r af3740e3753f mpengine/src/mpmediakeyhandler_p.cpp --- a/mpengine/src/mpmediakeyhandler_p.cpp Tue Jul 06 14:13:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,501 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Music Player media key handler - private implementation. -* -*/ - -#include "mpmediakeyhandler_p.h" -#include "mpmediakeyhandler.h" -#include "mpmediakeyremconresponse.h" -#include "mpcommondefs.h" - -//symbian header files -#include -#include - -//mpx header files -#include -#include -#include -#include - -const TInt KFirstTimerExpiryInterval( 1 ); // Expire immediately -const TInt KTimerExpiryInterval( 1000000/6 ); - -// --------------------------------------------------------------------------- -// MpMediaKeyHandlerPrivate() -// --------------------------------------------------------------------------- -// -MpMediaKeyHandlerPrivate::MpMediaKeyHandlerPrivate( MpMediaKeyHandler *wrapper ) - : q_ptr( wrapper ), - iInterfaceSelector(NULL), - iResponseHandler(NULL), - iTimer(NULL), - iPlaybackUtility(NULL), - iEnabled(ETrue) -{ -} - -// --------------------------------------------------------------------------- -// ~MpMediaKeyHandlerPrivate() -// --------------------------------------------------------------------------- -// -MpMediaKeyHandlerPrivate::~MpMediaKeyHandlerPrivate() -{ - if ( iPlaybackUtility ) { - //TRAP_IGNORE( iPlaybackUtility->RemoveObserverL( *this ) ); - iPlaybackUtility->Close(); - } - - delete iResponseHandler; - delete iInterfaceSelector; - - if ( iTimer ) { - iTimer->Cancel(); - delete iTimer; - } - -} - -// --------------------------------------------------------------------------- -// init -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::init() -{ - TRAPD(err, DoInitL()); - if ( err != KErrNone ) { - emit q_ptr->errorOccured(err); - } - -} - -// --------------------------------------------------------------------------- -// setEnabled -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::setEnabled( bool enable ) -{ - iEnabled = enable; -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A command has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoCommand( - TRemConCoreApiOperationId aOperationId, - TRemConCoreApiButtonAction aButtonAct ) -{ - MPX_DEBUG3( "MpMediaKeyHandlerPrivate::MrccatoCommand(aOperationId=%d, aButtonAct=%d)", - aOperationId, aButtonAct ); - - switch ( aOperationId ) { - case ERemConCoreApiPausePlayFunction: - if ( aButtonAct == ERemConCoreApiButtonClick ) { - SendCommand( EPbCmdPlayPause ); - } - break; - case ERemConCoreApiPlay: - if ( aButtonAct == ERemConCoreApiButtonClick - || aButtonAct == ERemConCoreApiButtonPress ) { - SendCommand( EPbCmdPlay ); - } - break; - case ERemConCoreApiStop: - if ( aButtonAct == ERemConCoreApiButtonClick - || aButtonAct == ERemConCoreApiButtonPress ) { - SendCommand( EPbCmdStop ); - } - break; - case ERemConCoreApiPause: - if ( aButtonAct == ERemConCoreApiButtonClick - || aButtonAct == ERemConCoreApiButtonPress ) { - SendCommand( EPbCmdPause ); - } - break; - case ERemConCoreApiRewind: - switch ( aButtonAct ) { - case ERemConCoreApiButtonPress: - SendCommand( EPbCmdStartSeekBackward ); - break; - case ERemConCoreApiButtonRelease: - SendCommand( EPbCmdStopSeeking ); - break; - default: - break; - } - break; - case ERemConCoreApiFastForward: - switch ( aButtonAct ) { - case ERemConCoreApiButtonPress: - SendCommand( EPbCmdStartSeekForward ); - break; - case ERemConCoreApiButtonRelease: - SendCommand( EPbCmdStopSeeking ); - break; - default: - break; - } - break; - case ERemConCoreApiBackward: - if ( aButtonAct == ERemConCoreApiButtonClick ) { - SendCommand( EPbCmdPrevious ); - } - break; - case ERemConCoreApiForward: - if ( aButtonAct == ERemConCoreApiButtonClick ) { - SendCommand( EPbCmdNext ); - } - break; - case ERemConCoreApiVolumeUp: - iTimer->Cancel(); - iIncreaseVol = ETrue; - switch ( aButtonAct ) { - case ERemConCoreApiButtonPress: - //Start Timer - iTimer->Start( - KFirstTimerExpiryInterval, - KTimerExpiryInterval, - TCallBack( TimerCallback, this ) ); - break; - case ERemConCoreApiButtonClick: - SendCommand( EPbCmdIncreaseVolume ); - break; - case ERemConCoreApiButtonRelease: - default: - break; - } - break; - case ERemConCoreApiVolumeDown: - iTimer->Cancel(); - iIncreaseVol = EFalse; - switch ( aButtonAct ) { - case ERemConCoreApiButtonPress: - //Start Timer - iTimer->Start( - KFirstTimerExpiryInterval, - KTimerExpiryInterval, - TCallBack( TimerCallback, this ) ); - break; - case ERemConCoreApiButtonClick: - SendCommand( EPbCmdDecreaseVolume ); - break; - case ERemConCoreApiButtonRelease: - default: - break; - } - break; - default: - break; - } - iResponseHandler->CompleteAnyKey( aOperationId ); - -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A 'play' command has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoPlay( - TRemConCoreApiPlaybackSpeed aSpeed, - TRemConCoreApiButtonAction aButtonAct ) -{ - MPX_DEBUG2( "MpMediaKeyHandlerPrivate::MrccatoPlay(aButtonAct=%d)", aButtonAct ); - Q_UNUSED(aSpeed); - - if ( ( aButtonAct == ERemConCoreApiButtonClick ) || - ( aButtonAct == ERemConCoreApiButtonPress ) ) - { - SendCommand( EPbCmdPlay ); - } - iResponseHandler->CompleteAnyKey( ERemConCoreApiPlay ); - -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A 'tune function' command has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoTuneFunction( - TBool aTwoPart, - TUint aMajorChannel, - TUint aMinorChannel, - TRemConCoreApiButtonAction aButtonAct ) -{ - Q_UNUSED(aTwoPart); - Q_UNUSED(aMajorChannel); - Q_UNUSED(aMinorChannel); - Q_UNUSED(aButtonAct); - - iResponseHandler->CompleteAnyKey( ERemConCoreApiTuneFunction ); - -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A 'select disk function' has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoSelectDiskFunction( - TUint aDisk, - TRemConCoreApiButtonAction aButtonAct ) -{ - Q_UNUSED(aDisk); - Q_UNUSED(aButtonAct); - - iResponseHandler->CompleteAnyKey( ERemConCoreApiSelectDiskFunction ); - -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A 'select AV input function' has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoSelectAvInputFunction( - TUint8 aAvInputSignalNumber, - TRemConCoreApiButtonAction aButtonAct ) -{ - Q_UNUSED(aAvInputSignalNumber); - Q_UNUSED(aButtonAct); - - iResponseHandler->CompleteAnyKey( ERemConCoreApiSelectAvInputFunction ); - -} - -// --------------------------------------------------------------------------- -// From MRemConCoreApiTargetObserver -// A 'select audio input function' has been received. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::MrccatoSelectAudioInputFunction( - TUint8 aAudioInputSignalNumber, - TRemConCoreApiButtonAction aButtonAct ) -{ - Q_UNUSED(aAudioInputSignalNumber); - Q_UNUSED(aButtonAct); - - iResponseHandler->CompleteAnyKey( ERemConCoreApiSelectAudioInputFunction ); - -} - -// --------------------------------------------------------------------------- -// From MMPXPlaybackCallback -// Handle playback property. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::HandlePropertyL( - TMPXPlaybackProperty aProperty, - TInt aValue, - TInt aError ) -{ - MPX_FUNC( "MpMediaKeyHandlerPrivate::DoHandlePropertyL" ); - MPX_DEBUG4( "MpMediaKeyHandlerPrivate::HandlePropertyL - Property(%d); Value(%d); Error(%d)", aProperty, aValue, aError ); - - if ( KErrNone == aError ) { - switch ( aProperty ) { - case EPbPropertyVolume: - q_ptr->emit volumeChanged(aValue); - break; - case EPbPropertyPosition: - case EPbPropertyMaxVolume: - case EPbPropertyMute: - default: - break; - } - } - -} - -// --------------------------------------------------------------------------- -// From MMPXPlaybackCallback -// HandleSubPlayerNamesL -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::HandleSubPlayerNamesL( - TUid aPlayer, - const MDesCArray* aSubPlayers, - TBool aComplete, - TInt aError ) -{ - MPX_FUNC( "MpMediaKeyHandlerPrivate::HandleSubPlayerNamesL" ); - Q_UNUSED(aPlayer); - Q_UNUSED(aSubPlayers); - Q_UNUSED(aComplete); - Q_UNUSED(aError); - -} - -// --------------------------------------------------------------------------- -// From MMPXPlaybackCallback -// Handle media properties. -// Notes: The client is responsible for delete the object of aMedia. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::HandleMediaL( - const CMPXMedia& aMedia, - TInt aError ) -{ - MPX_FUNC( "MpMediaKeyHandlerPrivate::DoHandleMediaL" ); - Q_UNUSED(aMedia); - Q_UNUSED(aError); - -} - -// --------------------------------------------------------------------------- -// DoInitL() -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::DoInitL() -{ - // Register to remote control framework - iInterfaceSelector = CRemConInterfaceSelector::NewL(); - CRemConCoreApiTarget *coreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this ); - CleanupStack::PushL( coreTarget ); - iInterfaceSelector->OpenTargetL(); - iResponseHandler = MpMediaKeyRemConResponse::NewL( *coreTarget ); - CleanupStack::Pop(coreTarget); - - // Timer for implementing repeat - iTimer = CPeriodic::NewL( CActive::EPriorityStandard ); - - // Get the playback utility instance from engine. - iPlaybackUtility = MMPXPlaybackUtility::UtilityL( TUid::Uid(MpCommon::KMusicPlayerUid) ); - //iPlaybackUtility->AddObserverL( *this ); - - iEnabled = ETrue; -} - -// --------------------------------------------------------------------------- -// Send command to playback utility. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::SendCommand( TMPXPlaybackCommand aCommandId ) -{ - MPX_FUNC( "MpMediaKeyHandlerPrivate::SendCommand" ); - TRAP_IGNORE( DoSendCommandL( aCommandId ) ); - -} - -// --------------------------------------------------------------------------- -// Send command to playback utility. -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::DoSendCommandL( TMPXPlaybackCommand aCommandId ) -{ - MPX_FUNC( "MpMediaKeyHandlerPrivate::DoFilterAndSendCommandL" ); - - if ( iEnabled ) - { - TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); - - switch ( aCommandId ) { - case EPbCmdPlayPause: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused - || playerState == EPbStateStopped ) { - iPlaybackUtility->CommandL( EPbCmdPlayPause ); - } - break; - case EPbCmdPlay: - if ( playerState == EPbStateStopped || playerState == EPbStatePaused ) { - iPlaybackUtility->CommandL( EPbCmdPlay ); - } - break; - case EPbCmdStop: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused ) { - iPlaybackUtility->CommandL( EPbCmdStop ); - } - break; - case EPbCmdPause: - if ( playerState == EPbStatePlaying ) { - iPlaybackUtility->CommandL( EPbCmdPause ); - } - break; - case EPbCmdStartSeekBackward: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused ) { - iPlaybackUtility->CommandL( EPbCmdStartSeekBackward ); - } - break; - case EPbCmdStartSeekForward: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused ) { - iPlaybackUtility->CommandL( EPbCmdStartSeekForward ); - } - break; - case EPbCmdStopSeeking: - if ( playerState == EPbStateSeekingBackward || playerState == EPbStateSeekingForward ) { - iPlaybackUtility->CommandL( EPbCmdStopSeeking ); - } - break; - case EPbCmdPrevious: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused - || playerState == EPbStateStopped ) { - iPlaybackUtility->CommandL( EPbCmdPrevious ); - } - break; - case EPbCmdNext: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused - || playerState == EPbStateStopped ) { - iPlaybackUtility->CommandL( EPbCmdNext ); - } - break; - case EPbCmdIncreaseVolume: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused - || playerState == EPbStateStopped ) { - iPlaybackUtility->CommandL( EPbCmdIncreaseVolume ); - } - break; - case EPbCmdDecreaseVolume: - if ( playerState == EPbStatePlaying || playerState == EPbStatePaused - || playerState == EPbStateStopped ) { - iPlaybackUtility->CommandL( EPbCmdDecreaseVolume ); - } - break; - default: - break; - } - } -} - -// --------------------------------------------------------------------------- -// Callback for timer -// --------------------------------------------------------------------------- -// -TInt MpMediaKeyHandlerPrivate::TimerCallback( TAny* aPtr ) -{ - - static_cast( aPtr )->HandleRepeatEvent(); - - return KErrNone; -} - -// --------------------------------------------------------------------------- -// Handle repeat event -// --------------------------------------------------------------------------- -// -void MpMediaKeyHandlerPrivate::HandleRepeatEvent() -{ - - if ( iIncreaseVol ) { - SendCommand( EPbCmdIncreaseVolume ); - } - else { - SendCommand( EPbCmdDecreaseVolume ); - } - -} -