diff -r 2b7283837edb -r 3104fc151679 instantmessagesalert/src/cimalertmanager.cpp --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//to get message tone file -#include - - -// 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 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 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