eventsui/eventsutils/inc/evttoneplayer.h
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
--- /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 <e32base.h>
+#include <DrmAudioSamplePlayer.h>
+#include <mdaaudiotoneplayer.h>
+#include <mda/common/controller.h>
+
+// 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