mmsharing/mmshindicator/inc/mussoundplayer.h
changeset 22 496ad160a278
parent 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshindicator/inc/mussoundplayer.h	Fri Jun 11 13:36:18 2010 +0300
@@ -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 <mdaaudiosampleplayer.h>
+#include <e32base.h>
+
+
+/**
+ *  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