devsoundextensions/globalaudiosettings/inc/GlobalAudioSettingsImpl.h
changeset 0 b8ed18f6c07b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devsoundextensions/globalaudiosettings/inc/GlobalAudioSettingsImpl.h	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,693 @@
+/*
+* Copyright (c) 2004 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:   This file contains definitions of GlobalAudioSettings.
+*
+*/
+
+
+
+
+#ifndef GLOBALAUDIOSETTINGSIMPL_H
+#define GLOBALAUDIOSETTINGSIMPL_H
+
+#include <e32property.h>
+#include <e32base.h>
+#include <e32debug.h>
+#include "GlobalAudioSettingsData.h"
+#include <GlobalAudioSettings.h>
+#include <MAudioClientsListObserver.h>
+
+class MAudioSettingsObserver;
+class CGlobalAudioSettings;
+class CWarningTonesObserverAO;
+class CMessagingTonesObserverAO;
+class CSilentProfileObserverAO;
+class CVibraObserverAO;
+class CAudioClientsListManagerAO;
+class CMessageToneObserverAO;
+class CEmailToneObserverAO;
+class CRingingTypeObserverAO;
+class CVideoCallToneObserverAO;
+class CRingingTone1ObserverAO;
+class CRingingTone2ObserverAO;
+class CKeypadToneObserverAO;
+class CSilenceModeObserverAO;
+/**
+*  Defines functions that client uses to set phone profile settings.
+*
+*  @lib GlobalAudioSettings.lib
+*  @since Series 60 3.2
+*/
+NONSHARABLE_CLASS(CGlobalAudioSettingsImpl): public CBase
+    {
+    public:
+        /**
+        * function for creating the GlobalAudioSettingsImpl
+        *
+        */
+       static CGlobalAudioSettingsImpl* NewL(
+                        CGlobalAudioSettings& aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver);
+        /**
+        * Destructor.
+        *
+        */
+        ~CGlobalAudioSettingsImpl();
+        /**
+        * Returns warning tones status.
+        *
+        * @since Series 60 3.2
+        * @return TBool aEnable. ETrue if warning tones are enabled else EFalse.
+        */
+         TBool IsWarningTonesEnabled();
+        /**
+        * Returns message tones status.
+        *
+        * @since Series 60 3.2
+        * @return TBool aEnable. ETrue if message tones are enabled else EFalse.
+        */
+        TBool IsMessageTonesEnabled();
+        /**
+        * Returns silent profile status.
+        *
+        * @since Series 60 3.2
+        * @return TBool aEnable. ETrue if current profile is silent profile else EFalse.
+        */
+         TBool IsSilentProfileEnabled();
+        /**
+        * Returns vibra is enabled or not in the current profile status.
+        *
+        * @since Series 60 3.2
+        * @return TBool aEnable. ETrue if current profile vibra active else EFalse.
+        */
+         TBool IsVibraEnabled();
+        /**
+        * Returns PublicSilence is enabled or not status.
+        *
+        * @since Series 60 3.2
+        * @return TBool aEnable. ETrue if PublicSilence active else EFalse.
+        */
+         TBool IsPublicSilenceEnabled();
+        /**
+        * Returns Message Alert Tone 
+        *
+        * 
+        * The filename selected as the message alert tone in the
+        * current profile.
+        * 
+        *
+        * 
+        * @return TDesC& aMessageAlertToneName. z:\\resource\\No_Sound.wav is returned if sound is off,else selected filename 
+        * is returned
+        */
+        
+        
+         TDesC& MessageAlertTone();
+         /**
+         * Returns Email Alert Tone status
+         *
+         * 
+         * The filename selected as the email alert tone in the
+         * current profile 
+         * 
+         *
+         * 
+         *  @return TBool aEnable. ETrue if current profile message tone is on else EFalse.
+         */
+         TBool IsMessageAlertToneEnabled();
+         /**
+        * Returns Email Alert Tone 
+        *
+        * 
+        * The filename selected as the email alert tone in the
+        * current profile 
+        * 
+        *
+        * 
+        * @return TDesC& aEmailAlertToneName. z:\\resource\\No_Sound.wav is returned if sound is off,else selected filename 
+        * is returned
+        */
+         TDesC& EmailAlertTone();
+          /**
+         * Returns Email Alert Tone status
+         *
+         * 
+         * The filename selected as the email alert tone in the
+         * current profile 
+         * 
+         *
+         * 
+         *  @return TBool aEnable. ETrue if current profile email alert tone is on else EFalse.
+         */
+         TBool IsEmailAlertToneEnabled();
+         /**
+         * Returns the RingingType
+         *
+         * 
+         * Ringing type set in the current profile
+         * 
+         * 
+         *
+         * 
+         * @return TGASRingingType aRingingType. 
+         */
+         CGlobalAudioSettings::TGASRingingType RingingType();
+         /**
+         * Returns Videocall Alert Tone 
+         *
+         * 
+         * The filename selected as the video call alert tone in the
+         * current profile 
+         * 
+         *
+         * 
+         * @return TDesC& aVideoCallAlertToneName. z:\\resource\\No_Sound.wav is returned if sound is off,else selected filename 
+         * is returned
+         */
+         TDesC& VideoCallAlertTone();
+         /**
+        * Returns Videocall Alert Tone status
+        *
+        * 
+        * The filename selected as the video call alert tone in the
+        * current profile 
+        * 
+        *
+        * 
+        * @return TBool aEnable. ETrue if current profile videocall alert tone is on else EFalse.
+        */
+         TBool IsVideoCallAlertToneEnabled();
+         /**
+        * Returns Ringing Alert Tone 
+        *
+        * 
+        * The filename selected as the ringing alert tone in the
+        * current profile 
+        * 
+        *
+        * @return TDesC& aRingingAlertTone1Name. z:\\resource\\No_Sound.wav is returned if sound is off,else selected filename 
+        * is returned
+        * 
+        */
+         TDesC& RingingAlertTone1();
+         /**
+        * Returns Ringing Alert Tone1 status
+        *
+        * 
+        * The filename selected as the ringing alert tone in the
+        * current profile 
+        * 
+        *
+        * 
+        * @return TBool aEnable. ETrue if current profile ringing alert tone is on else EFalse.
+        */
+         TBool IsRingingAlertTone1Enabled();
+         /**
+        * Returns Ringing Alert Tone 2
+        *
+        * 
+        * The filename selected as the ringing alert tone in the
+        * current profile for the alternate line
+        * 
+        *
+        * 
+        * @return TDesC& aRingingAlertTone2Name. z:\\resource\\No_Sound.wav is returned if sound is off,else selected filename 
+        * is returned
+        */
+         TDesC& RingingAlertTone2();
+         /**
+        * Returns Ringing Alert Tone 2
+        *
+        * 
+        * The filename selected as the ringing alert tone in the
+        * current profile for the alternate line
+        * 
+        *
+        * 
+        * @return TBool aEnable. ETrue if current profile ringing alert tone of alternate line is on else EFalse.
+        */
+         TBool IsRingingAlertTone2Enabled();
+         /**
+        * Returns Ringing Keypad Volume
+        *
+        * 
+        * The key tone volume selected  in the
+        * current profile 
+        * 
+        *
+        * 
+        * @return TGASKeypadVolume aKeypadToneVolume.returns EGASKeypadVolumeOff sound is off,else selected volume level 
+        * is returned
+        */
+         CGlobalAudioSettings::TGASKeypadVolume KeyPadToneVolume();
+         /**
+         * Returns silent mode status.
+         *
+         * 
+         * @return TBool aEnable. ETrue if the silent mode is enabled else EFalse.
+         */
+         TBool IsSilenceModeEnabled();
+        /**
+        * Registers audio clients list observer.
+        *
+        * When registered successfully, the observer will start receiveing
+        * callback defined in MAudioClientsListObserver when audio clients list
+        * changes.
+        *
+        * @since S60 3.2
+        * @param MAudioClientsListObserver& aObserver. A reference to class
+        *           implementing MAudioClientsListObserver interface.
+        * @return TInt. KErrNone if successful. KErrAlreadyExists if the observer
+        *           is already registered.
+        */
+        TInt RegisterAudioClientsListObserver(
+                                    MAudioClientsListObserver& aObserver );
+                
+        /**
+        * Unregisters audio clients list observer.
+        *
+        * When unregistered, the observer will no longer receive callback when
+        * audio clients list changes.
+        *
+        * @since S60 3.2
+        * @param MAudioClientsListObserver& aObserver. A reference to class
+        *           implementing MAudioClientsListObserver interface.
+        * @return TInt. KErrNone if successful. KErrNotFound if the observer
+        *           is not registered.
+        */
+        TInt UnregisterAudioClientsListObserver(
+                                    MAudioClientsListObserver& aObserver);
+
+        /**
+        * Gets audio clients list.
+        *
+        * On return of this function, the parameter aList will contain active
+        * audio client application process ids.
+        *
+        * The parameter aList will be reset in the case
+        *
+        * @since S60 3.2
+        * @param TAudioClientListType aFilter. Type of client list.
+        * @param RArray<TProcessId>& aList. A reference to RArray.
+        * @return TInt. KErrNone if successful. KErrBadName if
+        *           aType is not one of the TAudioClientListType enumeration.
+        *           Otherwise a systemwide error code.
+        *           In case of error, the array aList will be reset.
+        */
+        TInt GetAudioClientsList(
+                                CGlobalAudioSettings::TAudioClientListType aType,
+                                RArray<TProcessId>& aList );
+
+    
+    private:
+        CGlobalAudioSettingsImpl(CGlobalAudioSettings &aGlobalAudioSettings,
+                                 MAudioSettingsObserver& aAudioSettingsObserver);
+        /**
+        * Second Phase Costructor for GlobalAudioSettingsImpl Instance
+        * @since 3.2
+        * @param void
+        */
+        void ConstructL();
+        
+        /*This is added to define RProperties in NCP Environment*/
+        void CreatePropertiesL();
+        void DeleteProperties();
+            
+    private:
+        TGlobalAudioSettings iGlobalAudioSettingsData;
+        CGlobalAudioSettings& iGlobalAudioSettings;
+        MAudioSettingsObserver&   iAudioSettingsObserver;
+        CWarningTonesObserverAO* iWarningTonesObserverAO;
+        CMessagingTonesObserverAO* iMessagingTonesObserverAO;
+        CSilentProfileObserverAO* iSilentProfileObserverAO;
+        CVibraObserverAO* iVibraObserverAO;
+        // Object managing Audio Clients List implementation
+        CAudioClientsListManagerAO* iCAudioClientsListManagerAO;
+        // Object managing Paused Clients List implementation
+        CAudioClientsListManagerAO* iPausedClientsListManagerAO;              
+        // List of Audio Clients List Observer objects
+        RPointerArray<MAudioClientsListObserver> iAudioClientsListObserverArray;
+        
+        
+        CMessageToneObserverAO* iMessageToneObserverAO;
+        CEmailToneObserverAO* iEmailToneObserverAO;
+        CRingingTypeObserverAO* iRingingTypeObserverAO;
+        CVideoCallToneObserverAO* iVideoCallObserverAO;
+        CRingingTone1ObserverAO* iRingingTone1ObserverAO;
+        CRingingTone2ObserverAO* iRingingTone2ObserverAO;
+        CKeypadToneObserverAO* iKeypadToneObserverAO;
+        CSilenceModeObserverAO* iSilenceModeObserverAO;
+        TBool iPropertiesCreated;
+    };
+
+
+NONSHARABLE_CLASS(CWarningTonesObserverAO) : public CActive
+	{
+public:
+    // Ist Phase constr and Destr
+	static CWarningTonesObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+	~CWarningTonesObserverAO();
+	void Subscribe();
+
+protected:
+	// From CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	// Constr and IInd phase constr
+	CWarningTonesObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+	void ConstructL();
+	CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iWarningTonesProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+	};
+
+NONSHARABLE_CLASS(CMessagingTonesObserverAO) : public CActive
+	{
+public:
+    // Ist Phase constr and Destr
+	static CMessagingTonesObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+	~CMessagingTonesObserverAO();
+	void Subscribe();
+
+protected:
+	// From CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	// Constr and IInd phase constr
+	CMessagingTonesObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+	void ConstructL();
+	CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iMessagingTonesProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+	};
+	
+NONSHARABLE_CLASS( CSilentProfileObserverAO) : public CActive
+	{
+public:
+    // Ist Phase constr and Destr
+	static CSilentProfileObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+	~CSilentProfileObserverAO();
+	void Subscribe();
+
+protected:
+	// From CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	// Constr and IInd phase constr
+	CSilentProfileObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+	void ConstructL();
+	CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iSilentProfileProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+	};
+
+NONSHARABLE_CLASS(CVibraObserverAO) : public CActive
+	{
+public:
+    // Ist Phase constr and Destr
+	static CVibraObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+	~CVibraObserverAO();
+	void Subscribe();
+
+protected:
+	// From CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	// Constr and IInd phase constr
+	CVibraObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+	void ConstructL();
+	CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iVibraProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+	};
+
+
+NONSHARABLE_CLASS(CRingingTypeObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CRingingTypeObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CRingingTypeObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CRingingTypeObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iRingingTypeProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CMessageToneObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CMessageToneObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CMessageToneObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CMessageToneObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iMessageToneNameProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CEmailToneObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CEmailToneObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CEmailToneObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CEmailToneObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iEmailToneNameProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CVideoCallToneObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CVideoCallToneObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CVideoCallToneObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CVideoCallToneObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iVideoCallToneNameProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CRingingTone1ObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CRingingTone1ObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CRingingTone1ObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CRingingTone1ObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iRingingTone1NameProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CRingingTone2ObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CRingingTone2ObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CRingingTone2ObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CRingingTone2ObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iRingingTone2NameProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CKeypadToneObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CKeypadToneObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CKeypadToneObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CKeypadToneObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iKeypadToneVolumeProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+
+NONSHARABLE_CLASS(CSilenceModeObserverAO) : public CActive
+    {
+public:
+    // Ist Phase constr and Destr
+    static CSilenceModeObserverAO* NewL(CGlobalAudioSettings &aGlobalAudioSettings,
+                                         MAudioSettingsObserver& aAudioSettingsObserver,
+                                         TGlobalAudioSettings& aGlobalAudioSettingsData);
+    ~CSilenceModeObserverAO();
+    void Subscribe();
+
+protected:
+    // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+    // Constr and IInd phase constr
+    CSilenceModeObserverAO(CGlobalAudioSettings &aGlobalAudioSettings,
+                                                 MAudioSettingsObserver& aAudioSettingsObserver,
+                                                 TGlobalAudioSettings& aGlobalAudioSettingsData);
+    void ConstructL();
+    CGlobalAudioSettings& iGlobalAudioSettings;
+    MAudioSettingsObserver&   iAudioSettingsObserver;
+    RProperty iSilenceModeProperty;
+    TGlobalAudioSettings& iGlobalAudioSettingsData;
+    };
+#endif // GLOBALAUDIOSETTINGSIMPL_H
+
+// End of file