diff -r 000000000000 -r f0cf47e981f9 mmsharing/mmshindicator/inc/mussoundplayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshindicator/inc/mussoundplayer.h Thu Dec 17 08:44:37 2009 +0200 @@ -0,0 +1,172 @@ +/* +* Copyright (c) 2007 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: Provides means to play custom indication sound. +* +*/ + + + +#ifndef C_MUSSOUNDPLAYER_H +#define C_MUSSOUNDPLAYER_H + + +#include "musunittesting.h" +#include "mussoundplayerobserver.h" +#include +#include + + +/** + * CMusSoundPlayer provides means to play custom indication sounds. + * + * @code + * void CMyClass::PlaySoundL() + * { + * if ( iPlayer ) + * { + * User::Leave( KErrInUse ); + * } + * iPlayer = CMusSoundPlayer::NewL( *this ); + * TRAPD( error, iPlayer->PlayL( CMusSoundPlayer::EVsAvailableSound ) ); + * if ( error ) + * { + * delete iPlayer; + * iPlayer = NULL; + * User::Leave( error ); + * } + * } + * + * // from MMusSoundPlayerObserver + * void CMyClass::PlaySoundComplete( TInt aError ) + * { + * delete iPlayer; + * iPlayer = NULL; + * } + * + * void CMyClass::~CMyClass() + * { + * delete iPlayer; + * iPlayer = NULL; + * } + * @endcode + * + * @lib musindicator.lib + */ +class CMusSoundPlayer : public CBase, protected MMdaAudioPlayerCallback + { +public: + + MUS_UNITTEST( UT_CMusSoundPlayer ) + + /** VS sound indications */ + enum TVsSoundIndication + { + EVsAvailableSound // Plays sound associated to VS becoming available. + }; + + /** + * Two-phased constructor. + * + * @param aObserver Reference to observer interface. + * @return Pointer to newly instantiated CMusSoundPlayer. + */ + static CMusSoundPlayer* NewL( MMusSoundPlayerObserver& aObserver ); + + /** + * Two-phased constructor. + * + * @param aObserver Reference to observer interface. + * @return Pointer to newly instantiated CMusSoundPlayer. + */ + static CMusSoundPlayer* NewLC( MMusSoundPlayerObserver& aObserver ); + + /** + * Destructor. + */ + ~CMusSoundPlayer(); + + /** + * Plays selected sound. + * + * @param aIndication Identifies the played sound. + */ + void PlayL( TVsSoundIndication aIndication ); + + /** + * Stops playing sound. + */ + void Stop(); + +protected: + +// from base class MMdaAudioPlayerCallback. + + /** + * From MMdaAudioPlayerCallback. + * Informs that initializing an audio sample has completed. + * + * @param aError Systemwide errorcode. + * @param aDuration Duration of the sample. + */ + virtual void MapcInitComplete( TInt aError, const TTimeIntervalMicroSeconds& aDuration ); + + /** + * From MMdaAudioPlayerCallback. + * Informs that playing an audio sample has completed. + * + * @param aError Systemwide errorcode. + */ + virtual void MapcPlayComplete( TInt aError ); + +private: + + CMusSoundPlayer( MMusSoundPlayerObserver& aObserver ); + + void ConstructL(); + + /** + * Returns sound file name associated with event. + * + * @param aIndication Identifies sound to return filename for. + * @return Buffer containing filename of sound. Ownership is transferred. + */ + HBufC* SoundFileNameLC( TVsSoundIndication aIndication ); + + /** Internal state. */ + enum TMusSoundPlayerState + { + ESoundPlayerReady, + ESoundPlayerPlaying + }; + +private: // data + + /** + * Reference to observer interface. + */ + MMusSoundPlayerObserver& iObserver; + + /** + * Internal state. + */ + TMusSoundPlayerState iState; + + /** + * Instance of MDA audio player. + * Own. + */ + CMdaAudioPlayerUtility* iMdaPlayer; + }; + +#endif // C_MUSSOUNDPLAYER_H