--- a/profilesservices/FileList/Src/CFLDRingingTonePlayer.cpp Thu Aug 19 10:12:30 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,474 +0,0 @@
-/*
-* Copyright (c) 2002 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:
-* CFLDRingingTonePlayer is used to play sound files. It takes into account
-* the current volume and ringing type settings.
-*
-*
-*/
-
-
-// CLASS HEADER
-#include "CFLDRingingTonePlayer.h"
-
-// EXTERNAL INCLUDES
-#include <AudioPreference.h>
-#include <mda/common/resource.h>
-#include <c3dringingtoneinterface.h> // C3DRingingToneInterface
-#include <ScreensaverInternalPSKeys.h>
-
-// CONSTANTS
-namespace
- {
- const TInt KAscendingVolumeInterval( 3000000 ); // 3 seconds
- const TInt KToneInterval( 1000000 ); // 1 second pause between tones
-
- _LIT( KDataTypeNone, "" );
- _LIT( KFileListRngMimeType, "application/vnd.nokia.ringing-tone" );
- _LIT8( KFileListBeepSequence, "\x00\x11\x06\x0A\x08\x73\x0A\x40\x28\x0A\xF7\
- \x05\xFC\x40\x64\x0A\x08\x40\x32\x0A\xF7\x06\x0B" ); //sequence for playing a beep once sound
- }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CFLDRingingTonePlayer* CFLDRingingTonePlayer::NewL( TBool aShowErrorMsgs )
- {
- CFLDRingingTonePlayer* self = new( ELeave ) CFLDRingingTonePlayer( aShowErrorMsgs );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self ); // self
- return self;
- }
-
-// Destructor
-CFLDRingingTonePlayer::~CFLDRingingTonePlayer()
- {
- Cancel(); // Stops possible playback
-
- delete iAudioPlayer;
- delete iTonePlayer;
-
- delete i3dRingingTonePlugin;
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::CFLDRingingTonePlayer
-// C++ constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CFLDRingingTonePlayer::CFLDRingingTonePlayer( TBool aShowErrorMsgs )
- : CFLDPlayerBase( aShowErrorMsgs ),
- iAudioPlayerStatus( EAudioPlayerNotCreated ),
- iTonePlayerStatus( EAudioPlayerNotCreated )
- {
- i3dEffects = ETrue;
- i3DEffect = KErrNotFound;
- i3DEcho = KErrNotFound;
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::ConstructL()
- {
- BaseConstructL();
-
- // To allow/not allow screensaver
- // Errors ignored, no actions needed if API is not available
- iPropScreenSaver.Attach( KPSUidScreenSaver, KScreenSaverAllowScreenSaver );
-
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::ProcessFileL()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::ProcessFileL( const TDesC& aFileName, RWindow* /*aWindow*/ )
- {
- if ( aFileName == KNullDesC || iFocusLost )
- {
- return;
- }
-
- Cancel(); // Stops possible playback
-
- TDataType dataType;
- TInt error( DataType( aFileName, dataType ) );
- if( ( error != KErrNotFound ) && ( error != KErrNone ) )
- {
- User::Leave( error );
- }
-
- // Do not allow screen saver while playing
- // Errors ignored, no actions needed if API is not available
- iPropScreenSaver.Set( KPSUidScreenSaver,
- KScreenSaverAllowScreenSaver, EFLScreenSaverNotAllowed );
-
- delete iTonePlayer;
- iTonePlayer = NULL;
-
- delete iAudioPlayer;
- iAudioPlayer = NULL;
-
- if ( iRingingType == ERingingTypeBeepOnce )
- {
- // Active profile ringing tone is set to Beep Once
- // Don't initialize a FileSequence but use DesSequence instead
- iTonePlayer = CMdaAudioToneUtility::NewL( *this );
- iTonePlayer->PrepareToPlayDesSequence( KFileListBeepSequence() );
- iTonePlayerStatus = EAudioPlayerInitializing;
- }
- else
- {
- TPtrC ptr( aFileName );
- if( error )
- {
- ptr.Set( iDefaultTone );
- }
- if( dataType.Des().CompareF( KFileListRngMimeType ) == 0 )
- {
- //Ringingtone is a RNG-file
- iTonePlayer = CMdaAudioToneUtility::NewL( *this );
- iTonePlayer->PrepareToPlayFileSequence( ptr );
- iTonePlayerStatus = EAudioPlayerInitializing;
- }
- // If the mime type is NULL, the file can't be play.
- else if ( dataType.Des().CompareF( KDataTypeNone ) == 0 )
- {
- return;
- }
- else
- {
- iAudioPlayer = CDrmPlayerUtility::NewFilePlayerL(
- ptr, *this, KAudioPriorityRingingTonePreview,
- TMdaPriorityPreference (
- iVibra ? KAudioPrefRingFilePreviewVibra :
- KAudioPrefRingFilePreview ) );
-
- iAudioPlayerStatus = EAudioPlayerInitializing;
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::Cancel()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::Cancel()
- {
- if ( iAudioPlayerStatus == EAudioPlayerPlayingWith3DEffect )
- {
- i3dRingingTonePlugin->Stop();
- // plugin calls AudioPlayer->Stop()
- iAudioPlayer->Close();
- delete iAudioPlayer;
- iAudioPlayer = NULL;
- }
-
- if ( iAudioPlayerStatus == EAudioPlayerPlaying )
- {
- if( iAudioPlayer )
- {
- iAudioPlayer->Stop();
- iAudioPlayer->Close();
- delete iAudioPlayer;
- iAudioPlayer = NULL;
- }
- }
-
- iAudioPlayerStatus = EAudioPlayerReady;
-
- if ( iTonePlayerStatus == EAudioPlayerPlaying )
- {
- if( iTonePlayer )
- {
- iTonePlayer->CancelPlay();
- delete iTonePlayer;
- iTonePlayer = NULL;
- }
- }
- iTonePlayerStatus = EAudioPlayerReady;
-
- // Allow screen saver, unless there's a call ongoing
- if( !IsCallOngoing() )
- {
- // Errors ignored, no actions needed if API is not available
- iPropScreenSaver.Set( KPSUidScreenSaver,
- KScreenSaverAllowScreenSaver, EFLScreenSaverAllowed );
- }
-
-}
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::DoSetRingingType()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::DoSetRingingType( TInt aRingingType )
- {
- if( iAudioPlayerStatus == EAudioPlayerInitialized )
- {
- switch( aRingingType )
- {
- // Fall through
- case ERingingTypeRinging:
- case ERingingTypeSilent:
- {
- iAudioPlayer->SetRepeats(
- KMdaRepeatForever, TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- case ERingingTypeAscending:
- {
- iAudioPlayer->SetRepeats(
- KMdaRepeatForever, TTimeIntervalMicroSeconds( KToneInterval ) );
- TInt volRamp = KAscendingVolumeInterval * iRingingVolume;
- iAudioPlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( volRamp ) );
- break;
- }
- case ERingingTypeRingOnce:
- {
- iAudioPlayer->SetRepeats(
- 0, TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
- else if( iTonePlayerStatus == EAudioPlayerInitialized )
- {
- switch( aRingingType )
- {
- // Fall through
- case ERingingTypeRinging:
- case ERingingTypeSilent:
- {
- iTonePlayer->SetRepeats(
- KMdaRepeatForever, TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- case ERingingTypeAscending:
- {
- iTonePlayer->SetRepeats(
- KMdaRepeatForever, TTimeIntervalMicroSeconds( KToneInterval ) );
- TInt volRamp = KAscendingVolumeInterval * iRingingVolume;
- iTonePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( volRamp ) );
- break;
- }
- // Fall through
- case ERingingTypeRingOnce:
- case ERingingTypeBeepOnce:
- {
- iTonePlayer->SetRepeats(
- 0, TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- default:
- {
- break;
- }
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::ConvertVolume()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CFLDRingingTonePlayer::ConvertVolume( TInt aVolume )
- {
- TInt result( 0 );
- if ( iAudioPlayerStatus == EAudioPlayerInitialized ||
- iAudioPlayerStatus == EAudioPlayerPlaying )
- {
- result = BaseConvertVolume( aVolume, iAudioPlayer->MaxVolume() );
- }
- else if( iTonePlayerStatus == EAudioPlayerInitialized ||
- iTonePlayerStatus == EAudioPlayerPlaying )
- {
- result = BaseConvertVolume( aVolume, iTonePlayer->MaxVolume() );
- }
- //if user has selected silent ringing type, set volume off
- if( iRingingType == ERingingTypeSilent )
- {
- result = 0;
- }
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::MdapcInitComplete()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::MdapcInitComplete(
- TInt aError, const TTimeIntervalMicroSeconds& /* aDuration */ )
- {
- if ( !aError && iAudioPlayerStatus == EAudioPlayerInitializing )
- {
- iAudioPlayerStatus = EAudioPlayerInitialized;
- DoSetRingingType( iRingingType );
- iAudioPlayer->SetVolume( ConvertVolume( iRingingVolume ) );
- iAudioPlayer->SetPriority( KAudioPriorityPreview,
- TMdaPriorityPreference( iVibra ? KAudioPrefRingFilePreviewVibra :
- KAudioPrefRingFilePreview ) );
-
- if ( iRingingType == ERingingTypeBeepOnce )
- {
- return; // beeb once not handled here
- }
-
- if( !i3dEffects )
- {
- iAudioPlayer->Play();
- iAudioPlayerStatus = EAudioPlayerPlaying;
- return;
- }
-
- if ( !i3dRingingTonePlugin )
- {
- TUid emptyUid = { 0 };
- TRAPD( err, i3dRingingTonePlugin = C3DRingingToneInterface::NewL( emptyUid ) );
- if ( err != KErrNone || !i3dRingingTonePlugin )
- {
- iAudioPlayer->Play();
- iAudioPlayerStatus = EAudioPlayerPlaying;
- return;
- }
- }
- if ( i3DEffect != KErrNotFound && i3DEcho != KErrNotFound )
- {
- i3dRingingTonePlugin->SetAttr( E3DRTIAttr3DEffect, i3DEffect );
- i3dRingingTonePlugin->SetAttr( E3DRTIAttr3DEcho, i3DEcho );
- }
-
- i3dRingingTonePlugin->SetAttr( E3DRTIAttrDrmPlayerUtility, iAudioPlayer );
- TRAP_IGNORE( i3dRingingTonePlugin->PlayL() );
- iAudioPlayerStatus = EAudioPlayerPlayingWith3DEffect;
- }
- else
- {
- Cancel();
- if ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) )
- {
- // Don't care about leave, if the note can't be displayed.
- TRAP_IGNORE( DisplayErrorNoteL() );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::MdapcPlayComplete()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::MdapcPlayComplete( TInt aError )
- {
- if ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) )
- {
- // Don't care about leave, if the note can't be displayed.
- TRAP_IGNORE( DisplayErrorNoteL() );
- }
-
- Cancel();
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::MatoPrepareComplete()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::MatoPrepareComplete( TInt aError )
- {
- if ( !aError && iTonePlayerStatus == EAudioPlayerInitializing )
- {
- iTonePlayerStatus = EAudioPlayerInitialized;
- DoSetRingingType( iRingingType );
- iTonePlayer->SetVolume( ConvertVolume( iRingingVolume ) );
- iTonePlayer->SetPriority( KAudioPriorityPreview,
- TMdaPriorityPreference( iVibra ? KAudioPrefRingFilePreviewVibra :
- KAudioPrefRingFilePreview ) );
- iTonePlayer->Play();
- iTonePlayerStatus = EAudioPlayerPlaying;
- }
- else
- {
- Cancel();
- if ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) )
- {
- // Don't care about leave, if the note can't be displayed.
- TRAP_IGNORE( DisplayErrorNoteL() );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::MatoPlayComplete()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::MatoPlayComplete( TInt aError )
- {
- if ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) )
- {
- // Don't care about leave, if the note can't be displayed.
- TRAP_IGNORE( DisplayErrorNoteL() );
- }
-
- Cancel();
- }
-
-
-// -----------------------------------------------------------------------------
-// CFLDRingingTonePlayer::Set3dEffects()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CFLDRingingTonePlayer::Set3dEffects( TBool a3dEffects )
- {
- const TInt K3DEffectBase = 1000;
- const TInt K3DEchoBase = 2000;
-
- i3dEffects = a3dEffects;
-
- if ( a3dEffects >= K3DEffectBase && a3dEffects < K3DEchoBase )
- {
- i3DEffect = a3dEffects - K3DEffectBase;
- return;
- }
-
- if ( a3dEffects >= K3DEchoBase )
- {
- i3DEcho = a3dEffects - K3DEchoBase;
- return;
- }
- }
-
-
-// End of File