devsoundextensions/globalaudiosettings/inc/GlobalAudioSettingsImpl.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:56:55 +0200
changeset 0 40261b775718
child 38 4269ca484c7b
child 43 98aa3ecc14d2
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* 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;


/**
*  Defines functions that client uses to set phone profile settings.
*
*  @lib GlobalAudioSettings.lib
*  @since Series 60 3.2
*/
class CGlobalAudioSettingsImpl: public CBase
    {
    public:
        /**
        * function for creating the GlobalAudioSettingsImpl
        *
        */
        IMPORT_C 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.
        */
        IMPORT_C TBool IsWarningTonesEnabled();
        /**
        * Returns message tones status.
        *
        * @since Series 60 3.2
        * @return TBool aEnable. ETrue if message tones are enabled else EFalse.
        */
        IMPORT_C TBool IsMessageTonesEnabled();
        /**
        * Returns silent profile status.
        *
        * @since Series 60 3.2
        * @return TBool aEnable. ETrue if current profile is silent profile else EFalse.
        */
        IMPORT_C 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.
        */
        IMPORT_C TBool IsVibraEnabled();
        /**
        * Returns PublicSilence is enabled or not status.
        *
        * @since Series 60 3.2
        * @return TBool aEnable. ETrue if PublicSilence active else EFalse.
        */
        IMPORT_C TBool IsPublicSilenceEnabled();

        /**
        * 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();
            
    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;
    };


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;
	};

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;
	};
	
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;
	};

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;
	};

#endif // GLOBALAUDIOSETTINGSIMPL_H

// End of file