diff -r 2a9601315dfc -r 98ccebc37403 javauis/mmapi_qt/volumekeys/inc/cmmaglobalvolume.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/volumekeys/inc/cmmaglobalvolume.h Fri May 14 15:47:24 2010 +0300 @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2006 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 class is used for global volume +* +*/ + + +#ifndef CMMAGLOBALVOLUME_H +#define CMMAGLOBALVOLUME_H + +// INTERNAL INCLUDES +#include "cmmavolumecontrol.h" +#include "mmmavolumekeyslistener.h" + +class CMMAPlayer; +class CMMAForeground; +class CRepository; +class CMMAVolumeKeysListener; + +// CLASS DECLARATION +/** + * This class is used for global volume setting + * @since S60 3.2 + */ +NONSHARABLE_CLASS(CMMAGlobalVolume) : public CBase, + public MMMAVolumeKeysListener +{ +private: // Type definitions + + // Volume control, index and player holder + class TMMAPlayerHolder + { + public: + // Volume index + TInt iVolumeIndex; + // Player which contains the volume control + CMMAPlayer* iPlayer; + // Volume control from the player + CMMAVolumeControl* iVolumeControl; + }; + +public: // Constructor and destructors + + /** + * NewL + * Creates an instance from this class + * @param aForeground Foreground listener. The ownership is transferred + * to this class + * @return New instance from this class. The caller takes ownership + * of the returned object + */ + static CMMAGlobalVolume* NewL(CMMAForeground* aForeground); + + /** + * Destructor + */ + virtual ~CMMAGlobalVolume(); + +public: // New methods + + /** + * Adds new player for listening global volume. Players which + * do not have volume control are simply ignored + * + * @param aPlayer Player which receives volume key notifications + */ + void AddPlayerL(CMMAPlayer* aPlayer); + + /** + * Removes player from listening global volume + */ + void RemovePlayer(CMMAPlayer* aPlayer); + +public: // From MMMAVolumeKeysListener + + /** + * Handles volume up event + */ + void VolumeUp(); + + /** + * Handles volume down event + */ + void VolumeDown(); + +private: // New methods + + /** + * Finds volume control from a player + * + * @param aPlayer Player from which the volume control is searched + * @return Volume control instance. NULL is returned if the player + * does not support volume control feature + */ + CMMAVolumeControl* FindVolumeControl(CMMAPlayer* aPlayer); + + /** + * Sets volume level for all registered volume controls + * @param aLevel New volume level + */ + void SetControlVolumeLevels(TInt aLevel); + +private: // Private constructors + + /** + * C++ constructor + * @param aForeground Foreground listener + */ + CMMAGlobalVolume(CMMAForeground* aForeground); + + /** + * Second phase constructor + */ + void ConstructL(); + +protected: // Data + + // Current global volume level + TInt iLevel; + // Foreground listener. Owned + CMMAForeground* iForeground; + // MMA setting repository. Owned + CRepository* iSettingsStore; + // Volume keys listener. Owned + CMMAVolumeKeysListener* iVolumeKeysListener; + // Array of volume controls + RArray< TMMAPlayerHolder > iControlList; +}; + +#endif // CMMAGLOBALVOLUME_H + +// End of file