--- a/instantmessagesalert/src/cimalertmanager.cpp Thu Aug 19 09:41:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,920 +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: This class gives interface to play IM message alert.
-*
-*/
-
-// INCLUDE FILES
-#include "cimalertmanager.h"
-#include "imalertdebugprint.h"
-#include "mimalertmanagerobserver.h"
-#include "mimalertnotifierinterface.h"
-#include "imalertnotifierfactory.h"
-
-#include <MProfileEngine.h>
-#include <pathinfo.h>
-#include <mda/common/resource.h>
-#include <AudioPreference.h>
-#include <bautils.h>
-#include <hwrmvibrasdkcrkeys.h>
-#include <coreapplicationuisdomainpskeys.h>
-#include <ProfileEngineSDKCRKeys.h>
-#include <MProfileTones.h>
-#include <TProfileToneSettings.h>
-#include <MProfile.h>
-#include <hwrmvibra.h>
-
-//to get message tone file
-#include <cvimpstsettingsstore.h>
-
-
-// CONSTANTS
-const TInt KMinVolumeLevel( 1 );
-const TInt KMaxVolumeLevel( 10 );
-const TInt KToneInterval( 1000000 ); // 1 second pause between tones
-
-_LIT( KChatRngMimeType, "application/vnd.nokia.ringing-tone" );
-_LIT( KBeepOnceSound, "beep.rng" );
-_LIT( KProfileSilentTone, "No_Sound.wav" );
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CIMAlertManager::CIMAlertManager
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CIMAlertManager::CIMAlertManager()
- : iAudioPlayerStatus( EAudioPlayerNotCreated ),
- iTonePlayerStatus( EAudioPlayerNotCreated ),
- iIsPlayingDefaultIMSound( EFalse )
- {
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::ConstructL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-void CIMAlertManager::ConstructL()
- {
- CHAT_DP_FUNC_ENTER("ConstructL");
- iProfileApi = CreateProfileEngineL();
-
- User::LeaveIfError( iFs.Connect() );
-
- CHAT_DP_TXT("CMdaAudioPlayerUtility::NewL()" );
-
- iAudioPlayer = CMdaAudioPlayerUtility::NewL( *this );
- iAudioPlayerStatus = EAudioPlayerReady;
-
- CHAT_DP_TXT("CMdaAudioToneUtility::NewL()" );
- iTonePlayer = CMdaAudioToneUtility::NewL( *this );
- iTonePlayerStatus = EAudioPlayerReady;
-
- iProfilesRepository = CRepository::NewL( KCRUidProfileEngine );
- iVibraRepository = CRepository::NewL( KCRUidVibraCtrl );
-
- // Get initial settings from active profile
- iRingingVolumeNotifyHandler = CCenRepNotifyHandler::NewL( *this,
- *iProfilesRepository,
- CCenRepNotifyHandler::EIntKey,
- KProEngActiveRingingVolume );
- iRingingVolumeNotifyHandler->StartListeningL();
-
-
- iRingingTypeNotifyHandler = CCenRepNotifyHandler::NewL( *this,
- *iProfilesRepository,
- CCenRepNotifyHandler::EIntKey,
- KProEngActiveRingingType );
- iRingingTypeNotifyHandler->StartListeningL();
-
-
- iVibraNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iVibraRepository,
- CCenRepNotifyHandler::EIntKey,
- KVibraCtrlProfileVibraEnabled );
- iVibraNotifyHandler->StartListeningL();
-
- User::LeaveIfError( iProfilesRepository->Get( KProEngActiveRingingVolume,
- iRingingVolume ) );
-
- User::LeaveIfError( iVibraRepository->Get( KVibraCtrlProfileVibraEnabled,
- iVibra ) );
-
- User::LeaveIfError( iApaSession.Connect() );
-
- // register for changes in message Tone quitting
- iNotifierAPI = IMAlertNotifierFactory::CreateNotifierL( this );
- iNotifierAPI->ListenKeyChanges( MIMAlertNotifierInterface::EMSGToneQuitKey );
-
- iToneFileName = HBufC::NewL( KMaxPath );
-
- // Get path to beep once ringing tone, first check simple sound folder.
- TFileName beepFile = PathInfo::RomRootPath();
- beepFile.Append( PathInfo::SimpleSoundsPath() );
- beepFile.Append( KBeepOnceSound );
- RFile file;
- TInt openErr = file.Open( iFs, beepFile, EFileRead );
- file.Close();
-
- if ( openErr == KErrNotFound || openErr == KErrPathNotFound )
- {
- // Check digital sounds folder
- beepFile.Zero();
- beepFile.Append( PathInfo::RomRootPath() );
- beepFile.Append( PathInfo::DigitalSoundsPath() );
- beepFile.Append( KBeepOnceSound );
- openErr = file.Open( iFs, beepFile, EFileRead );
- file.Close();
- }
-
- CHAT_DP( D_PLAIN_LIT( "CIMAlertManager::ConstructL() openErr = %d" ), openErr );
-
- if ( openErr == KErrNone )
- {
- iBeepRingingTone = beepFile.AllocL();
- TPtrC ptr = iBeepRingingTone->Des();
- CHAT_DP( D_PLAIN_LIT( "CIMAlertManager::ConstructL() iBeepRingingTone = %S" ), &ptr );
- }
- else
- {
- HandleError( openErr );
- }
-
- // get active ringing type, change events come to us later...
- iActiveProfile = iProfileApi->ActiveProfileL();
- const MProfileTones& profileTones = iActiveProfile->ProfileTones();
- const TProfileToneSettings& profileSettings = profileTones.ToneSettings();
- iRingingType = profileSettings.iRingingType;
- iActiveProfile->Release();
- iActiveProfile = NULL; // prevent further usage
- // after this, active ringing type changes are notified via the cenrep
- // notify handler callback through HandleNotifyInt
-
- // TRAP to catch leaves, leaves with KErrNotSupported if vibra
- // is not supported
- TRAPD( err, iVibrator = CHWRMVibra::NewL() );
- if ( err == KErrNotSupported )
- {
- // Make sure it's NULL
- iVibrator = NULL;
- }
- else
- {
- // Leave with other errors e.g. KErrNoMemory
- User::LeaveIfError( err );
- }
- iSettingsStore = CVIMPSTSettingsStore::NewL();
- CHAT_DP_FUNC_DONE("ConstructL");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::NewL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-EXPORT_C CIMAlertManager* CIMAlertManager::NewL()
- {
- CIMAlertManager* self = new( ELeave ) CIMAlertManager();
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-
-// ---------------------------------------------------------
-// CIMAlertManager::~CIMAlertManager
-// (other items were commented in a header).
-// ---------------------------------------------------------
-CIMAlertManager::~CIMAlertManager()
- {
- CHAT_DP_FUNC_ENTER("~CIMAlertManager");
- Stop(); // Stops possible playback
-
- if ( iActiveProfile )
- {
- iActiveProfile->Release();
- iActiveProfile = NULL; // prevent further usage
- }
-
- if ( iProfileApi )
- {
- iProfileApi->Release();
- iProfileApi = NULL;
- }
-
- if ( iVibraNotifyHandler )
- {
- iVibraNotifyHandler->StopListening();
- delete iVibraNotifyHandler;
- iVibraNotifyHandler = NULL;
- }
-
- if ( iRingingTypeNotifyHandler )
- {
- iRingingTypeNotifyHandler->StopListening();
- delete iRingingTypeNotifyHandler;
- iRingingTypeNotifyHandler = NULL;
- }
-
-
- if ( iRingingVolumeNotifyHandler )
- {
- iRingingVolumeNotifyHandler->StopListening();
- delete iRingingVolumeNotifyHandler;
- iRingingVolumeNotifyHandler = NULL;
- }
- if(iProfilesRepository)
- {
- delete iProfilesRepository;
- iProfilesRepository = NULL;
- }
- if(iVibraRepository)
- {
- delete iVibraRepository;
- iVibraRepository = NULL;
- }
-
- iApaSession.Close();
-
- if(iNotifierAPI)
- {
- delete iNotifierAPI;
- iNotifierAPI = NULL;
- }
-
- if(iAudioPlayer)
- {
- CHAT_DP_TXT( "delete CMdaAudioPlayerUtility" );
- iAudioPlayer->Close();
- delete iAudioPlayer;
- iAudioPlayer = NULL;
- }
- if(iTonePlayer)
- {
- CHAT_DP_TXT( "delete CMdaAudioToneUtility" );
- delete iTonePlayer;
- iTonePlayer = NULL;
- }
-
- iObservers.Close();
-
- if(iToneFileName)
- {
- delete iToneFileName;
- iToneFileName = NULL;
- }
-
- if(iVibrator)
- {
- delete iVibrator;
- iVibrator = NULL;
- }
-
- if(iBeepRingingTone)
- {
- delete iBeepRingingTone;
- iBeepRingingTone = NULL;
- }
-
- iFs.Close();
-
- if(iSettingsStore)
- {
- delete iSettingsStore;
- iSettingsStore = NULL;
- }
-
- CHAT_DP_FUNC_DONE("~CIMAlertManager");
- }
-
-
-// ---------------------------------------------------------
-// CIMAlertManager::Play
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::PlayL(TUint32 aServiceId)
- {
- CHAT_DP_FUNC_ENTER("Play");
- TInt emergencyCallOngoing(0);
- TInt err = RProperty::Get( KPSUidCtsyEmergencyCallInfo, KCTSYEmergencyCallInfo, emergencyCallOngoing );
-
- if( !emergencyCallOngoing )
- {
- Stop();
- TRAPD( err, DoPlayL(aServiceId) );
- if( err )
- {
- HandleError( err );
- }
- }
- CHAT_DP_FUNC_DONE("Play");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::DoPlayL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::DoPlayL(TUint32 aServiceId)
- {
- CHAT_DP_FUNC_ENTER("DoPlayL");
-
- TBuf<KMaxPath> toneFileName;
-
- // check if we're silent or not
- iActiveProfile = iProfileApi->ActiveProfileL();
- TBool isSilent = iActiveProfile->IsSilent();
- iActiveProfile->Release();
- iActiveProfile = NULL; // prevent further usage
-
- // vibrate, if it's allowed
- CHWRMVibra::TVibraModeState vibraModeState = iVibrator->VibraSettings();
- CHWRMVibra::TVibraStatus vibraStatus = iVibrator->VibraStatus();
-
- // TODO: Find from Nikhil what the behaviour should be if Vibra is already
- // on and you get a new message. Aare you supposed to truncate the existing
- // vibration and start afresh or let the existing vibration continue?
- if ( vibraModeState == CHWRMVibra::EVibraModeON &&
- vibraStatus == CHWRMVibra::EVibraStatusStopped )
- {
- iVibrator->StartVibraL( KIMVibraDuration );
- }
-
- // sound ordering:
- // silent: get out.
- // beep once: beep, and if ok, exit.
- // if beep failed, or not active: try to play sound
- // for this server.
- // if it failed, play default sound.
-
- if ( isSilent )
- {
- // Silent profile, get out.
- CHAT_DP_TXT( "DoPlayL - Returning" );
- return;
- }
-
- TInt err = KErrNone;
-
- if ( iRingingType == EProfileRingingTypeBeepOnce && iBeepRingingTone )
- {
- // Play beep.rng
- TRAP( err, ProcessFileL( *iBeepRingingTone ) );
- }
-
- if ( err != KErrNone || iRingingType != EProfileRingingTypeBeepOnce )
- {
- err = KErrNone;
-
- // Beep once not active, or beep once failed.
- // Try to play the sound set for this server
- TBuf<KMaxPath> toneFileName;
- GetToneFileNameL( toneFileName, aServiceId );
- TParsePtr parsedPtr( toneFileName );
-
- CHAT_DP( D_CHAT_LIT(" file = [%S] "),&toneFileName);
-
- // If alert tone OFF, don't play anything
- if( parsedPtr.NameAndExt().Compare( KProfileSilentTone ) != 0 )
- {
- // Not OFF
- TRAP( err, ProcessFileL( toneFileName ) );
- }
- }
-
- // Not ringing once, but left
- User::LeaveIfError( err );
-
- CHAT_DP_FUNC_DONE("DoPlayL");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::Stop
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::Stop()
- {
- CHAT_DP_FUNC_ENTER("Stop");
-
- if( iAudioPlayerStatus == EAudioPlayerPlaying )
- {
- CHAT_DP_TXT(
- "Audio player is playing. CMdaAudioPlayerUtility::Stop()" );
- iAudioPlayer->Stop();
- iAudioPlayer->Close();
- iAudioPlayerStatus = EAudioPlayerReady;
- }
-
- if( iTonePlayerStatus == EAudioPlayerPlaying )
- {
- CHAT_DP_TXT(
- "Tone player is playing. CMdaAudioToneUtility::CancelPlay()" );
- iTonePlayer->CancelPlay();
- iTonePlayerStatus = EAudioPlayerReady;
- }
-
- CHAT_DP_FUNC_DONE("Stop");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::SetVolume
-// Set the volume at which the sound is played
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::SetVolume( TInt aVolume )
- {
- iRingingVolumeNotifyHandler->StopListening();
- iRingingVolume = aVolume;
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::SetRingingType
-// Sets the ringing type how the sound is played
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::SetRingingType( TProfileRingingType aRingingType )
- {
- if(iRingingTypeNotifyHandler)
- {
- iRingingTypeNotifyHandler->StopListening();
- iRingingType = aRingingType;
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::SetVibra
-// Sets the vibrating alert on or off
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::SetVibra( TBool aVibra )
- {
- if(iVibraNotifyHandler)
- {
- iVibraNotifyHandler->StopListening();
- iVibra = aVibra;
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::AddObserverL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::AddObserverL( const MIMAlertManagerObserver* aObserver )
- {
- // make sure that aObserver does not get appended in release mode also.
- if( aObserver )
- {
- User::LeaveIfError( iObservers.Append( aObserver ) );
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::RemoveObserver
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void CIMAlertManager::RemoveObserver( const MIMAlertManagerObserver* aObserver )
- {
- TInt index( iObservers.Find( aObserver ) );
-
- if( index != KErrNotFound )
- {
- iObservers.Remove( index );
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::ProcessFileL
-// If filename is defined, prepare the audioplayer.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::ProcessFileL( const TDesC& aFileName )
- {
- CHAT_DP_FUNC_ENTER("ProcessFileL");
-
- TFileName *fileName = new (ELeave) TFileName();
- CleanupStack::PushL( fileName );
-
- // if filename is empty, use default sound
- if ( aFileName.Length() == 0 )
- {
- return;
- }
- else
- {
- *fileName = aFileName;
- }
-
- TPtr filePtr( NULL, 0 );
- if( !BaflUtils::FileExists( iFs, *fileName ) )
- {
- CHAT_DP( D_CHAT_LIT( "File does not exist ( %S )" ), &(*fileName) );
- User::Leave( KErrNotFound );
- }
-
- Stop(); // Stops possible playback
-
- TUid dummyUid( KNullUid );
- TDataType dataType;
-
- User::LeaveIfError( iApaSession.AppForDocument( *fileName, dummyUid,
- dataType ) );
-
- if( dataType.Des().CompareF( KChatRngMimeType ) == 0 )
- {
- // making sure that another initializing is not already ongoing
- if( iTonePlayerStatus == EAudioPlayerReady )
- {
- CHAT_DP( D_CHAT_LIT(
- "CMdaAudioToneUtility::PrepareToPlayFileSequence( %S )" ),
- &(*fileName));
- iTonePlayerStatus = EAudioPlayerInitializing;
- iTonePlayer->PrepareToPlayFileSequence( *fileName );
- }
- }
- else
- {
- // making sure that another initializing is not already ongoing
- if( iAudioPlayerStatus == EAudioPlayerReady )
- {
- CHAT_DP( D_CHAT_LIT(
- "FileList - CMdaAudioPlayerUtility::OpenFileL( %S )" ),
- &(*fileName));
- iAudioPlayerStatus = EAudioPlayerInitializing;
- TRAPD( err, iAudioPlayer->OpenFileL( *fileName ) );
- CHAT_DP( D_CHAT_LIT(
- "FileList - CMdaAudioPlayerUtility::OpenFileL err = %d" ),
- err );
- if( err )
- {
- iAudioPlayerStatus = EAudioPlayerReady;
- User::Leave( err );
- }
- }
- }
-
- CleanupStack::PopAndDestroy( fileName );
- CHAT_DP_FUNC_DONE("ProcessFileL");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::DoSetRingingType
-// When audioplayer is ready, set its ringing type
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-void CIMAlertManager::DoSetRingingType( TInt aRingingType )
- {
- if( iAudioPlayerStatus == EAudioPlayerInitialized )
- {
- switch( aRingingType )
- {
- // Fall through
- case EProfileRingingTypeRingingOnce:
- {
- iAudioPlayer->SetRepeats( 0,
- TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- case EProfileRingingTypeBeepOnce:
- {
- iAudioPlayer->SetRepeats( 0,
- TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- default:
- {
- break;
- }
- }
- }
- else if( iTonePlayerStatus == EAudioPlayerInitialized )
- {
- switch( aRingingType )
- {
- // Fall through
- case EProfileRingingTypeRingingOnce:
- {
- iTonePlayer->SetRepeats( 0,
- TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- case EProfileRingingTypeBeepOnce:
- {
- iTonePlayer->SetRepeats( 0,
- TTimeIntervalMicroSeconds( KToneInterval ) );
- break;
- }
- default:
- {
- break;
- }
- }
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::ConvertVolume
-// Convert volume to the scale used by hardware.
-// E.g. Profiles lets user select volume 1-10, but hw's scale is normally 1-9.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TInt CIMAlertManager::ConvertVolume( TInt aVolume )
- {
- TInt result( 0 );
- // if ringing type is "silent" then volume
- // is zero
- if( iRingingType != EProfileRingingTypeSilent )
- {
- if ( iAudioPlayerStatus == EAudioPlayerInitialized ||
- iAudioPlayerStatus == EAudioPlayerPlaying )
- {
- result = iAudioPlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
- if ( aVolume == KMinVolumeLevel && result == 0 )
- {
- result = 1;
- }
- }
- else if( iTonePlayerStatus == EAudioPlayerInitialized ||
- iTonePlayerStatus == EAudioPlayerPlaying )
- {
- result = iTonePlayer->MaxVolume() * aVolume / KMaxVolumeLevel;
- if ( aVolume == KMinVolumeLevel && result == 0 )
- {
- result = 1;
- }
- }
- }
- return result;
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::HandleError
-// Notifies all observers that playing is completed
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::HandleError( TInt aError )
- {
- if ( ( aError == KErrNoMemory ) ||
- ( aError == KErrDiskFull ) )
- {
- CActiveScheduler::Current()->Error( aError );
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::GetToneFileNameL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::GetToneFileNameL( TDes& aToneFileName ,TUint32 aServiceId)
- {
- RBuf buffer;
- buffer.CreateL( RProperty::KMaxPropertySize );
- CleanupClosePushL( buffer );
- iSettingsStore->GetL(aServiceId, EServiceToneFileName, buffer);
- aToneFileName.Copy( buffer );
- CleanupStack::PopAndDestroy(); //buffer
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::MapcInitComplete
-// This method is called when the audioplayer initialisation is ready.
-// If file format is supported, start playing the sound file.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::MapcInitComplete(
- TInt aError, const TTimeIntervalMicroSeconds& /* aDuration */ )
- {
- CHAT_DP( D_CHAT_LIT(
- "MMdaAudioPlayerCallback::MapcInitComplete() callback, error == %d" ),
- aError);
-
- if ( !aError && iAudioPlayerStatus == EAudioPlayerInitializing )
- {
- iAudioPlayerStatus = EAudioPlayerInitialized;
- // currently IM messages supports only this ringing type
- // ringing once
- DoSetRingingType( EProfileRingingTypeRingingOnce );
- CHAT_DP( D_CHAT_LIT("CMdaAudioPlayerUtility::SetVolume( %d )" ),
- iRingingVolume);
-
- iAudioPlayer->SetVolume( ConvertVolume( iRingingVolume ) );
-
- // TODO: please check the value KAudioPrefNewSpecialMessage.
- // WHy does it have this particular value? What is the rationale.
- //
- CHAT_DP( D_CHAT_LIT("CMdaAudioPlayerUtility::SetPriority( %d, %d )" ),
- KAudioPriorityRecvMsg,
- TMdaPriorityPreference( KAudioPrefNewSpecialMessage ) );
-
- iAudioPlayer->SetPriority( KAudioPriorityRecvMsg,
- TMdaPriorityPreference( KAudioPrefNewSpecialMessage ) );
-
- CHAT_DP_TXT("CMdaAudioPlayerUtility::Play()" );
- iAudioPlayer->Play();
- iAudioPlayerStatus = EAudioPlayerPlaying;
- iNotifierAPI->SetInt( MIMAlertNotifierInterface::EMSGToneQuitKey,
- ECoreAppUIsTonePlaying );
- }
- else
- {
- Stop();
- iAudioPlayerStatus = EAudioPlayerReady;
- if( ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) ))
- {
- return;
- }
- else
- {
- HandleError( aError );
- iIsPlayingDefaultIMSound = EFalse;
- }
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::MapcPlayComplete
-// This method is called when the audioplayer has finished playing a sound
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::MapcPlayComplete( TInt aError )
- {
- CHAT_DP( D_CHAT_LIT(
- "MMdaAudioPlayerCallback::MapcPlayComplete() callback, error == %d" ),
- aError);
- iNotifierAPI->SetInt( MIMAlertNotifierInterface::EMSGToneQuitKey, ECoreAppUIsTonePlayingUninitialized );
- iAudioPlayer->Close();
- iAudioPlayerStatus = EAudioPlayerReady;
-
- if( ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) ) )
- {
- return;
- }
- else
- {
- HandleError( aError );
- iIsPlayingDefaultIMSound = EFalse;
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::HandleKeyChange
-// This method receives notifications from the shared data server
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::HandleKeyChange( TUpdatedKey& aUpdatedValues )
- {
- CHAT_DP_FUNC_ENTER("HandleKeyChange");
-
- // If we have an event which changes the key value to
- // ECoreAppUIsStopTonePlaying -> stop playing.
- if( aUpdatedValues.iValue == ECoreAppUIsStopTonePlaying )
- {
- // Message tone should be stopped
- CHAT_DP_TXT( "**stop playing!**" );
- Stop();
- }
-
- CHAT_DP_FUNC_DONE("HandleKeyChange");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::HandleNotifyInt
-// (other items were commented in a header).
-// ---------------------------------------------------------
-void CIMAlertManager::HandleNotifyInt( TUint32 aId, TInt aNewValue )
- {
- CHAT_DP_FUNC_ENTER("HandleNotifyL");
- CHAT_DP( D_CHAT_LIT("aKey == %d" ), aId);
- CHAT_DP( D_CHAT_LIT("aValue == %d" ), aNewValue);
-
-
- if ( aId == KProEngActiveRingingVolume ) // Ringing volume has changed
- {
- iRingingVolume = aNewValue;
- }
- else if ( aId == KProEngActiveRingingType ) // Ringing type has changed
- {
- iRingingType = aNewValue;
- }
-
- if ( aId == KVibraCtrlProfileVibraEnabled ) // Vibra setting has changed
- {
- iVibra = aNewValue;
- }
-
- CHAT_DP_FUNC_DONE("HandleNotifyL");
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::MatoPrepareComplete
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::MatoPrepareComplete( TInt aError )
- {
- CHAT_DP( D_CHAT_LIT(
- "MMdaAudioToneObserver::MatoPrepareComplete() callback, error == %d" ),
- aError);
-
- if ( !aError && iTonePlayerStatus == EAudioPlayerInitializing )
- {
- iTonePlayerStatus = EAudioPlayerInitialized;
- // TODO: confirm with UI spec/Nikhil if only this ringing type is
- // supported. If not in writing, get an entry into the UI spec done.
- // TODO: where is this requirement specified?
-
- // currently IM messages supports only this ringing type
- // ringing once
- DoSetRingingType( EProfileRingingTypeRingingOnce );
- CHAT_DP( D_CHAT_LIT("CMdaAudioToneUtility::SetVolume( %d )" ),
- ConvertVolume( iRingingVolume ));
- iTonePlayer->SetVolume( ConvertVolume( iRingingVolume ) );
-
-
- CHAT_DP( D_CHAT_LIT("CMdaAudioToneUtility::SetPriority( %d, %d )" ),
- KAudioPriorityRecvMsg,
- TMdaPriorityPreference( KAudioPrefNewSpecialMessage ) );
-
- iTonePlayer->SetPriority( KAudioPriorityRecvMsg,
- TMdaPriorityPreference( KAudioPrefNewSpecialMessage ) );
-
- CHAT_DP_TXT("CMdaAudioToneUtility::Play()" );
- iTonePlayer->Play();
- iTonePlayerStatus = EAudioPlayerPlaying;
- iNotifierAPI->SetInt( MIMAlertNotifierInterface::EMSGToneQuitKey,
- ECoreAppUIsTonePlaying );
- }
- else
- {
- Stop();
- iTonePlayerStatus = EAudioPlayerReady;
-
- if( ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) ) )
- {
- return;
- }
- else
- {
- HandleError( aError );
- iIsPlayingDefaultIMSound = EFalse;
- }
- }
- }
-
-// ---------------------------------------------------------
-// CIMAlertManager::MatoPlayComplete
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMAlertManager::MatoPlayComplete( TInt aError )
- {
- CHAT_DP( D_CHAT_LIT(
- "MMdaAudioToneObserver::MatoPlayComplete() callback, error == %d" ),
- aError);
- iNotifierAPI->SetInt( MIMAlertNotifierInterface::EMSGToneQuitKey, ECoreAppUIsTonePlayingUninitialized );
- iTonePlayerStatus = EAudioPlayerReady;
-
- if( ( ( aError == KErrNotSupported ) || ( aError == KErrCorrupt ) ) )
- {
- return ;
- }
- else
- {
- HandleError( aError );
- iIsPlayingDefaultIMSound = EFalse;
- }
- }
-
-// End of File