diff -r 1fc85118c3ae -r 870918037e16 eventsui/eventsutils/inc/evttoneplayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eventsui/eventsutils/inc/evttoneplayer.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,250 @@ +/* +* Copyright (c) 2008 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: File Player Utility. +* +*/ + + +#ifndef C_EVTTONEPLAYER_H +#define C_EVTTONEPLAYER_H + +// System Includes +#include +#include +#include +#include + +// User Includes +#include "evtprofilehandler.h" +#include "evtcallhandler.h" + +//Forward Declaration +class CEvtProfileHandler; + +// Class Definition +/** + * Interface class to observe for completion of tone playing. + * + * @lib + * @since S60 v9.1 + */ +class MEvtTonePlayObserver + { +public: + /** + * This will notify the tone Player observer on the completion + * of tone play. + * @param aTimeout Boolean value to indicate if the tone play + * was complete due to timeout. + */ + virtual void TonePlayCompleteL( TBool aTimeout )=0; + + }; + +/** + * Interface class to play an Audio File. + * This class allows for an audio file to be played. + * This class also allows for monitoring any incoming calls and + * give the priority for the incoming call tone. + * + * @lib + * @since S60 v9.1 + */ +NONSHARABLE_CLASS( CEvtTonePlayer ): public CBase, public MDrmAudioPlayerCallback, + public MMdaAudioToneObserver, + public MEvtProfileObserver, + public MEvtCallObserver +{ +public: + /** + * Constructs a new instance of Tone Player. + * + * @return The new instance of Tone Player object. + * @leave System wide error code if the object creation fails. + */ + IMPORT_C static CEvtTonePlayer* NewL( MEvtTonePlayObserver& aObserver ); + + /** + * Constructs a new instance of Tone Player. + * Leaves the created instance on the cleanup stack. + * + * @return The new instance of Tone Player object. + * @leave System wide error code if the object creation fails. + */ + IMPORT_C static CEvtTonePlayer* NewLC( MEvtTonePlayObserver& aObserver ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CEvtTonePlayer(); + +public: // Public Functions + /** + * Initializes the player to play an audio file. + * + * @since S60 v9.1 + * @param[in] aAudioFileName Audio file name + * @param[in] aLoop Audio Loop for playing + * @param[in] aTimeInterval Time Interval for playing in Seconds + * @leave KErrNotFound If the file does not exist. + */ + IMPORT_C void PlayFileL( const TFileName& aAudioFileName, + TBool aLoop, TInt aTimeInterval ); + + /** + * Stops the currently playing audio file. + * + * @since S60 v9.1 + * @param[in] aAudioFileName Audio file name + */ + IMPORT_C void StopPlayingL( TBool aTimeout ); + +private: // From MDrmAudioPlayerCallback + /** + * Framework will notify you the end of the playback by a call to + * MapcPlayComplete(). + */ + void MdapcPlayComplete( TInt aError ); + + /** + * Framework will notify you the end of the initalizing of a player + * file by a call to MdapcInitComplete(). + */ + void MdapcInitComplete( TInt aError, + const TTimeIntervalMicroSeconds& aDuration ); + +private: // from MMdaAudioToneObserver + /** + * Framework will notify you at the end of prepare is completed + */ + void MatoPrepareComplete(TInt aError); + + /** + * Framework will notify you the end of the playback. + */ + void MatoPlayComplete(TInt aError); + +private: // from MEvtProfileObserver + void HandleProfileSettingsChange( ); + + // from MEvtCallObserver + void HandleIncomingCallL( ); + +private: + + /** + * Start the Timer. + */ + void StartTimerL( TInt aTimeInterval ); + + /** + * Stop the Timer. + */ + void StopTimer(); + + /** + * Stop the playing file. + */ + void Stop(); + + /** + * Called when timer is expired + */ + static TInt TickL( TAny* aObject ); + + /** + * Set volume between zero and player's maximum volume + */ + TInt PlayerVolume(TInt aPlayerMaxVol, TInt aVol); + + /** + * Default C++ Constructor. + */ + CEvtTonePlayer( MEvtTonePlayObserver& aObserver ); + + /** + * Second phase of the two phase constructor. + */ + void ConstructL(); + +private: // Enums + /** + * @enum TState + * Player State. + * + */ + enum TState + { + /** + * Player State for Not Ready. + */ + ENotReady = 1, + /** + * Player State for Ready. + */ + EReady = 2, + /** + * Player State for Playing. + */ + EPlaying = 3, + /** + * Player State for Stop. + */ + EStop = 4 + }; + +private: // data + + /** + * Tone Player Observer. + */ + MEvtTonePlayObserver& iObserver; + + /** + * DRM Player instance. + * Own: + */ + CMdaAudioToneUtility* iTonePlayer; + + /** + * DRM Player instance. + * Own: + */ + CDrmPlayerUtility* iAudioPlayer; + + /** + * Profile Handler instance. + * Own: + */ + CEvtProfileHandler* iProfileHandler; + + /** + * Call Handler instance. + * Own: + */ + CEvtCallHandler* iCallHandler; + + /** + * Periodic Timer active object. + * Own: + */ + CPeriodic* iTimer; + + /** + * Audio Player State. + */ + TState iPlayerState; +}; + +#endif C_EVTTONEPLAYER_H \ No newline at end of file