diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshengine/inc/musengtelephoneutils.h --- a/mmsharing/mmshengine/inc/musengtelephoneutils.h Tue Aug 31 15:12:07 2010 +0300 +++ b/mmsharing/mmshengine/inc/musengtelephoneutils.h Wed Sep 01 12:31:01 2010 +0100 @@ -27,19 +27,22 @@ #include #include #include +#include // FORWARD DECLARATIONS class CRepository; class CTelephonyAudioRouting; class CPhCltCommandHandler; class MMusEngAudioRoutingObserver; +class MMusEngVolumeChangeObserver; /** * Utility class to handle all phone related requests: * Audio routing, volume control and microphone muting. */ class CMusEngTelephoneUtils : public CActive, - public MTelephonyAudioRoutingObserver + public MTelephonyAudioRoutingObserver, + public MCenRepNotifyHandlerCallback { MUS_UNITTEST( UT_CMusEngTelephoneUtils ) MUS_UNITTEST( UT_CMusEngSession ) @@ -49,14 +52,14 @@ /** * */ - static CMusEngTelephoneUtils* NewL( - MMusEngAudioRoutingObserver& aAudioRoutingObserver ); + static CMusEngTelephoneUtils* NewL(); /** * */ ~CMusEngTelephoneUtils(); + public: // API /** @@ -64,12 +67,29 @@ * * @return ETrue if audio routing can be changed using LoudspeakerL */ - TBool AudioRoutingCanBeChanged(); - + TBool AudioRoutingCanBeChanged() const; + + /** + * Checks if audio routing is headset + * + * @return ETrue if audio routing is headset + */ + TBool IsAudioRoutingHeadset() const; + + /** + * Checks if audio routing is LoudSpeaker + * + * @return ETrue if audio routing is LoudSpeaker and + * currentMode != iAudioOutputAtStartup + */ + TBool IsAudioRoutingLoudSpeaker() const; + /** * Changes the audio routing between loudspeaker and handset. + * + * @param aShowDialog if ETrue, user is notified about new audio routing */ - void LoudspeakerL( TBool aEnable ); + void LoudspeakerL( TBool aEnable, TBool aShowDialog ); /** * @@ -77,10 +97,15 @@ TBool IsLoudSpeakerEnabled() const; /** - * + * Returns current CS call volume level from central repository */ TInt GetVolumeL() const; + /** + * Returns locally cached CS call volume level + */ + TInt GetVolume() const; + /** * */ @@ -94,7 +119,19 @@ /** * Returns current CS call mic mute state. */ - TBool IsMicMutedL(); + TBool IsMicMutedL(); + + /** + * Sets audio routing observer. Can be set to NULL in order to indicate + * ending of observing changes in audio routing. + */ + void SetAudioRoutingObserver( MMusEngAudioRoutingObserver* aObserver ); + + /** + * Sets volume level observer. Can be set to NULL in order to indicate + * ending of observing changes in volume level. + */ + void SetVolumeChangeObserver( MMusEngVolumeChangeObserver* aObserver ); private: // inherited from CActive @@ -102,6 +139,7 @@ * */ void RunL(); + TInt RunError( TInt aError ); /** * Cancels outstanding request to phone client @@ -115,28 +153,37 @@ * Available outputs have changed */ void AvailableOutputsChanged( - CTelephonyAudioRouting& aTelephonyAudioRouting ); + CTelephonyAudioRouting& aTelephonyAudioRouting ); /** * Some other application has changed audio output routing */ void OutputChanged( - CTelephonyAudioRouting& aTelephonyAudioRouting ); + CTelephonyAudioRouting& aTelephonyAudioRouting ); /** * Our request to change audio output routing has completed */ void SetOutputComplete( - CTelephonyAudioRouting& aTelephonyAudioRouting, - TInt aError ); + CTelephonyAudioRouting& aTelephonyAudioRouting, + TInt aError ); + + /** + * Set output if setting is currently allowed. Leaves with KErrAccessDenied + * if setting is not allowed. + */ + void DoSetOutputL( CTelephonyAudioRouting::TAudioOutput aAudioOutput ); + + private:// From MCenRepNotifyHandlerCallback + + void HandleNotifyGeneric( TUint32 aId ); private: /** * Default C++ constructor */ - CMusEngTelephoneUtils( - MMusEngAudioRoutingObserver& aAudioRoutingObserver ); + CMusEngTelephoneUtils(); /** * 2nd phase constructor @@ -153,10 +200,14 @@ */ TInt ValidateVolume( const TInt aVolume ) const; - + /** + * Checks current volume level and notifies observer, if volume changed + * @param aAudioRouteChanged, ETrue if volume check should be done + * because of audio route change + */ + void UpdateCurrentVolume( TBool aAudioRouteChanged ); + private: // DATA - - MMusEngAudioRoutingObserver& iAudioRoutingObserver; /** * Stores the audio routing state at startup. @@ -177,6 +228,27 @@ * Command handler for muting the microphone */ CPhCltCommandHandler* iPhoneCommandHandler; + + /** + * Not owned. + */ + MMusEngAudioRoutingObserver* iAudioRoutingObserver; + + TBool iShowDialog; + + /** + * Central repository notifier instance. Owned. + */ + CCenRepNotifyHandler* iNotifier; + + /** + * Volume change observer + * Used to inform session about volume updates + */ + MMusEngVolumeChangeObserver* iVolumeObserver; + + TInt iCurrentVolume; }; -#endif // MUSENGTELEPHONEUTILS_H + +#endif // MUSENGTELEPHONEUTILS_H \ No newline at end of file