diff -r ebdbd102c78a -r 2eacb6118286 phoneapp/phoneringingtoneplayer/src/cphoneringingtonecontroller.cpp --- a/phoneapp/phoneringingtoneplayer/src/cphoneringingtonecontroller.cpp Fri May 14 15:51:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,588 +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: -* -*/ - -// INCLUDE FILES -#include -#include "cphoneringingtonecontroller.h" -#include "phonelogger.h" -#include "cphoneringingtone.h" -#include "tphonecmdparamringtone.h" -#include "cphonecenrepproxy.h" -#include "cphoneringingtoneplayer.h" -#include "cphonettsplayer.h" - -// CONSTANTS - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::NewL -// ----------------------------------------------------------------------------- -// -EXPORT_C CPhoneRingingToneController* CPhoneRingingToneController::NewL() - { - CPhoneRingingToneController* self = - new ( ELeave ) CPhoneRingingToneController(); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::CPhoneRingingToneController -// ----------------------------------------------------------------------------- -// -CPhoneRingingToneController::CPhoneRingingToneController() - { - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::ConstructL -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::ConstructL() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::ConstructL()" ); - //iMediatorSender = CPhoneMediatorSender::NewL(); - //iMediatorSender->AttachCoverUiObserverL( this ); - - iRingingtonePlayer = CPhoneRingingtonePlayer::NewL(); - - // Check video player configuration. - iArbitraryVideoScaling = - CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported( - KTelephonyLVFlagArbitraryVideoScaling ); - - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::~CPhoneRingingToneController -// ----------------------------------------------------------------------------- -// -CPhoneRingingToneController::~CPhoneRingingToneController() - { - /*if ( iMediatorSender ) - { - iMediatorSender->DetachCoverUiObserver( this ); - }*/ - - //delete iMediatorSender; - //iMediatorSender = NULL - - - delete iAudioVideoRingingTone; - iAudioVideoRingingTone = NULL; - delete iTTSPlayer; - iTTSPlayer = NULL; - delete iRingingtonePlayer; - iRingingtonePlayer = NULL; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::PlayRingToneL -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneRingingToneController::PlayRingToneL( - TPhoneCommandParam* aCommandParam ) - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::PlayRingToneL()" ); - - if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdRingTone ) - { - TPhoneCmdParamRingTone* ringToneParam = - static_cast( aCommandParam ); - - const TInt volume = ringToneParam->Volume(); - TProfileRingingType ringingType = - static_cast( ringToneParam->RingingType() ); - - if ( !iAudioVideoRingingTone ) - { - iAudioVideoRingingTone = CPhoneRingingTone::NewL( - ringToneParam->RingTone() ); - } - - // Store pofile based parameters. - iAudioVideoRingingTone->SetFileName( ringToneParam->RingTone() ); - iAudioVideoRingingTone->SetVolume( volume ); - iAudioVideoRingingTone->SetRingingType ( ringingType ); - iAudioVideoRingingTone->SetTtsToneToBePlayed( - ringToneParam->TextToSay().Length()? ETrue : EFalse); - - - // Caller contact text and image and image has - // higher priority than video ringing tone set for caller. - if ( iAudioVideoRingingTone->IsVideoRingingTone() ) - { - if ( ringToneParam->IsCallerImage() ) - { - // Play only audio from video ringingtone - PlayAudioRingTone( - volume, - ringingType ); - } - else - { - // Play video ring tone - const TBool ringToneIsPersonal = ringToneParam->Type() == - EPhoneRingTonePersonal; - PlayVideoRingingTone( - *iAudioVideoRingingTone, - volume, - ringingType, - ringToneIsPersonal ); - } - } - else - { - // Play text to speech, if available - if ( ringToneParam->TextToSay().Length() ) - { - if (iTTSPlayer) - { - delete iTTSPlayer; - iTTSPlayer = NULL; - } - iTTSPlayer = CPhoneTTSPlayer::NewL(iRingingtonePlayer); - iTTSPlayer->AddTtsPlaybackIfNeeded(); - iTTSPlayer->PlayTtsTone( - ringToneParam->TextToSay(), - iAudioVideoRingingTone ); - } - // Play audio ring tone - PlayAudioRingTone( - volume, - ringingType ); - } - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::PlayAudioRingTone -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::PlayAudioRingTone( - TInt aVolume, - TProfileRingingType aRingingType ) - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::PlayAudioRingTone()" ); - __PHONELOG2( - EBasic, - EPhoneControl, - "CPhoneRingingToneController::PlayAudioRingTone - aVolume(%d), aRingingType(%d)", - aVolume, - aRingingType ); - - if ( !iAudioVideoRingingTone || - !iAudioVideoRingingTone->CheckAndHandleToneSizeLimit() ) - { - iRingingtonePlayer->PlayDefaultTone( aVolume, aRingingType ); - } - else if ( aRingingType == EProfileRingingTypeSilent ) - { - iRingingtonePlayer->PlaySilentTone(); - } - else if ( aRingingType == EProfileRingingTypeBeepOnce ) - { - iRingingtonePlayer->PlayBeepOnce( aVolume ); - } - else - { - iRingingtonePlayer->PlayProfileBasedTone(iAudioVideoRingingTone); - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::MuteRingingToneOnAnswer -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneRingingToneController::MuteRingingToneOnAnswer() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::MuteRingingToneOnAnswer()" ); - - /* if ( iVideoPlayer && iTonePlayingStatus == EVideoTonePlaying || - iTonePlayingStatus == EPersonalVideoTonePlaying ) - { - // Mute the video audio - iVideoPlayer->MuteVideoRingTone(); - iTonePlayingStatus = ESilentVideoTonePlaying; - iVolume = 0; - } - else - {*/ - DoMuteRingingTone(); - //} - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::MuteRingingTone -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneRingingToneController::MuteRingingTone() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::MuteRingingTone()" ); - - /* if ( iVideoPlayer && iTonePlayingStatus == EVideoTonePlaying || - iTonePlayingStatus == EPersonalVideoTonePlaying ) - { - // Mute the video audio - iVideoPlayer->MuteVideoRingTone(); - iTonePlayingStatus = ESilentVideoTonePlaying; - iVolume = 0; - } - else - {*/ - StopPlaying(); - //} - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::StopPlaying -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneRingingToneController::StopPlaying() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::StopPlaying()" ); - if ( iTTSPlayer ) - { - iTTSPlayer->StopPlaying(); - delete iTTSPlayer; - iTTSPlayer = NULL; - } - iRingingtonePlayer->StopPlaying(); - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::DoMuteRingingTone -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::DoMuteRingingTone() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::DoMuteRingingTone()" ); - - /* switch( iTonePlayingStatus ) - { - case EVideoTonePlaying: // video ringing tone, fall through - case EPersonalVideoTonePlaying: // fall through - case ESilentVideoTonePlaying: - if ( iVideoPlayer ) - { - iVideoPlayer->MuteVideoRingTone(); - return; - } - break; - - default: - break; - }*/ - - iRingingtonePlayer->MuteActiveAudioPlayer(); - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::ConvertVideoRingingType -// ----------------------------------------------------------------------------- -// -MPhoneVideoPlayer::TPlayMode CPhoneRingingToneController::ConvertVideoRingingType( - TProfileRingingType aRingingType ) - { - MPhoneVideoPlayer::TPlayMode playMode; - - switch ( aRingingType ) - { - case EProfileRingingTypeAscending: - playMode = MPhoneVideoPlayer::EPlayAscending; - break; - case EProfileRingingTypeRingingOnce: - playMode = MPhoneVideoPlayer::EPlayOnce; - break; - case EProfileRingingTypeRinging: - default: - playMode = MPhoneVideoPlayer::EPlayInLoop; - break; - } - - return playMode; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::SetVideoPlayer -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::SetVideoPlayer( - MPhoneVideoPlayer* aVideoPlayer ) - { - iVideoPlayer = aVideoPlayer; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::PlayVideoRingingTone -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::PlayVideoRingingTone( - const CPhoneRingingTone& /*aRingingTone*/, - TInt /*aVolume*/, - TProfileRingingType /*aRingingType*/, - TBool /*aPersonalTone*/ ) - { - /* - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::PlayVideoRingingTone()" ); - - __ASSERT_DEBUG( iVideoPlayer, Panic( EPhoneViewGeneralError ) ); - - iVolume = aVolume; - iRingingType = aRingingType; - TBool startTimer( ETrue ); - - // Extended security check - if ( ExtendedSecurity() ) - { - if ( !aRingingTone.IsFileInRom() && - !aRingingTone.IsFileDrmProtected() ) - { - __PHONELOG( EBasic, - EPhoneControl, - "CPhoneRingingToneController::HandleVideoPlayerError - PermissionDenied" ); - iRingingtonePlayer->PlayDefaultTone( iVolume, iRingingType ); - return; - } - __PHONELOG( EBasic, - EPhoneControl, - "CPhoneRingingToneController::HandleVideoPlayerError - ExtSecChk ok" ); - } - - // If flip is closed then show video on Cover UI - TBool videoPlaySentToCoverUi( EFalse ); - TInt leaveCode( KErrNone ); - if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) ) - { - const TInt flipOpen = CPhonePubSubProxy::Instance()->Value( - KPSUidUikon, KUikFlipStatus ); - if( !flipOpen ) - { - TRAP( leaveCode, videoPlaySentToCoverUi = CoverUIPlayVideoRingingToneL( - aRingingTone ) ); - } - } - // Play ringing tone here if video play sending did leave or - // video playing wasn't delegated to Cover UI - if( !leaveCode && videoPlaySentToCoverUi ) - { - iTimer->After( KPhoneMaxRingingWaiting, this ); - return; - } - - __PHONELOG( EBasic, EPhoneControl, "CPhoneRingingToneController::PlayVideoRingingTone - play" ); - switch( aRingingType ) - { - case EProfileRingingTypeSilent: - iVideoPlayer->PlayVideoRingTone( - aRingingTone.FileName(), - ConvertVideoRingingType( aRingingType ), - 0, - iArbitraryVideoScaling, - this ); - iRingingtonePlayer->PlaySilentTone(); - iVolume = 0; // for repeat - startTimer = EFalse; // no need for fallback - break; - - case EProfileRingingTypeBeepOnce: - iVideoPlayer->PlayVideoRingTone( - aRingingTone.FileName(), - ConvertVideoRingingType( aRingingType ), - 0, - iArbitraryVideoScaling, - this ); - iRingingtonePlayer->BeepOnce( aVolume ); - iVolume = 0; // for repeat - startTimer = EFalse; // no need for fallback - break; - default: - iVideoPlayer->PlayVideoRingTone( - aRingingTone.FileName(), - ConvertVideoRingingType( aRingingType ), - iVolume, - iArbitraryVideoScaling, - this ); - break; - } - - if ( aPersonalTone ) - { - iTonePlayingStatus = EPersonalVideoTonePlaying; - } - else - { - iTonePlayingStatus = EVideoTonePlaying; - } - - if ( startTimer && !iTimer->IsActive() ) - { - // Start timer to guard video opening - iTimer->After( KPhoneMaxRingingWaiting, this ); - } - */ - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::HandleVideoPlayerError -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::HandleVideoPlayerError( - TPhoneVideoPlayerErrorEvent /*aEvent*/, - TInt /*aError*/ ) - { - /* __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::HandleVideoPlayerError()" ); - - if ( aError ) - { - __PHONELOG1( EBasic, - EPhoneControl, - "CPhoneRingingToneController::HandleVideoPlayerError - error (%d)", - aError ); - } - - // cancel guarding timer - iTimer->Cancel(); - - // to remove video window - iVideoPlayer->CancelVideoRingTone(); - - if ( iTonePlayingStatus == EPersonalVideoTonePlaying ) - { - // Play default tone (active profile tone). - if ( iAudioVideoRingingTone && - !iAudioVideoRingingTone->IsVideoRingingTone() ) - { - PlayAudioRingTone( iVolume, iRingingType ); - } - else // audio/video tone is video - { - PlayDefaultVideoAsync(); - } - } - else - { - // Play backup tone - iRingingtonePlayer->PlayDefaultTone( iVolume, iRingingType ); - } -*/ - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::HandleVideoPlayerInitComplete -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::HandleVideoPlayerInitComplete() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::HandleVideoPlayerInitComplete()" ); - - // cancel guarding timer - //iTimer->Cancel(); - - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::HandleVideoPlayerPlayingComplete -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::HandleVideoPlayerPlayingComplete() - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::HandleVideoPlayerPlayingComplete()" ); - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::PlayDefaultVideoAsync -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::PlayDefaultVideoAsync() - { - /* __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::PlayDefaultVideoAsync()" ); - - Cancel(); - - iState = EPlayingDefaultVideo; - - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - SetActive();*/ - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::ExtendedSecurity -// ----------------------------------------------------------------------------- -// -TBool CPhoneRingingToneController::ExtendedSecurity() const - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::ExtendedSecurity()" ); - return EFalse; - //return iExtSecNeeded; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::CoverUIPlayVideoRingingToneL -// ----------------------------------------------------------------------------- -// -TBool CPhoneRingingToneController::CoverUIPlayVideoRingingToneL( - const CPhoneRingingTone& aRingingTone ) - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::CoverUIPlayVideoRingingToneL()" ); - - TBool showVideo( EFalse ); - - RBuf8 data; - CleanupClosePushL( data ); - data.CreateL( aRingingTone.FileName().Length() ); - data.Copy( aRingingTone.FileName() ); - /*TInt err = iMediatorSender->IssueCommand( - EPhoneCmdCoverUiShowMultimediaRingingTone, - data ); - if ( err == KErrNone ) - { - showVideo = ETrue; - iActiveCoverUICommand = ETrue; - }*/ - CleanupStack::PopAndDestroy(); //data - - return showVideo; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingToneController::ShowMultimediaRingingToneResponseL -// ----------------------------------------------------------------------------- -// -void CPhoneRingingToneController::ShowMultimediaRingingToneResponseL( - TInt aStatus ) - { - __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingToneController::ShowMultimediaRingingToneResponseL()" ); - - //iTimer->Cancel(); - if( aStatus != KErrNone && iActiveCoverUICommand ) - { - iRingingtonePlayer->PlayDefaultTone( iVolume, iRingingType ); - } - iActiveCoverUICommand = EFalse; - } - - - -// End of File