diff -r 000000000000 -r f3d95d9c00ab fmradio/fmradioengine/inc/fmradiopubsub.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fmradio/fmradioengine/inc/fmradiopubsub.h Tue Feb 02 00:17:10 2010 +0200 @@ -0,0 +1,219 @@ +/* +* Copyright (c) 2005-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: Header file for CFMRadioPubSub +* +*/ + + +#ifndef CFMRADIOPUBSUB_H +#define CFMRADIOPUBSUB_H + +#include + +#include "fmradiopropertyobserver.h" + +class MFMRadioControlEventObserver; + +/** + * Publish&Subscribe interface of FMRadioEngine + */ +class CFMRadioPubSub : + public CBase, + public MFMRadioPropertyChangeObserver + { + +public: // Methods + + /** + * Static constructor. + */ + static CFMRadioPubSub* NewL(); + + /** + * Destructor. + */ + virtual ~CFMRadioPubSub(); + + /** + * Publishes active channel number to P&S. + * + * @param aChannelId The channel ID to publish. + */ + void PublishChannelL( TInt aChannelId ) const; + + /** + * Publishes active frequency to P&S. + * + * @param aFreq The frequency to publish. + */ + IMPORT_C void PublishFrequencyL( TUint32 aFreq ) const; + + /** + * Publishes radio power state to P&S. + * + * @param aPowerOn The radio power state to publish. + */ + IMPORT_C void PublishStateL( TBool aPowerOn ) const; + + /** + * Publishes current volume level to P&S. + * + * @param aVol The current volume level to publish. + */ + void PublishVolumeL( TInt aVol ) const; + + /** + * Publishes changed channel number to P&S. + * + * @param aChannelId The channel ID to publish. + */ + void PublishChannelDataChangedL(TInt aChannelId) const; + + /** + * Publishes the tuning state to P&S. + * @param aTuningState The tuning state to publish. + */ + void PublishTuningStateL( TFMRadioPSTuningState aTuningState ) const; + + /** + * Publishes radio mute state to P&S. + * + * @param aMuted The radio mute state to publish. + */ + void PublishRadioMuteStateL( TBool aMuted ) const; + + /** + * Publishes application running state to P&S. + * + * @param aRunningState The application running state. + */ + IMPORT_C void PublishApplicationRunningStateL( + TFMRadioPSApplicationRunningState aRunningState ) const; + + /** + * Publishes the antenna status to P&S. + * + * @param aAntennaStatus The antenna's status. + */ + void PublishAntennaStatusL( TFMRadioPSHeadsetStatus aAntennaStatus ) const; + + /** + * Publishes the frequency decimal count to P&S. + * @param aDecimalCount The decimal count. + */ + void PublishFrequencyDecimalCountL( + TFMRadioPSFrequencyDecimalCount aDecimalCount ) const; + + /** + * Publishes speaker status. Before state is set for first time it is in + * EFMRadioPSLoudspeakerUninitialized state. + * + * @param aLoudspeakerStatus Status of the speaker + */ + void PublishLoudspeakerStatusL( TFMRadioPSLoudspeakerStatus aLoudspeakerStatus ) const; + + /** + * Publishes RDS Program Service information. + * + * @param aProgramService Service text + */ + IMPORT_C void PublishRDSProgramServiceL( const TDesC& aProgramService ) const; + IMPORT_C void PublishRDSRadioTextL( const TDesC& aRadioText ) const; + IMPORT_C void PublishChannelNameL( const TDesC& aName ) const; + + IMPORT_C void PublishPresetCountL( TInt aVal ) const; + +// from base class MFMRadioPropertyChangeObserver + void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TInt aValue ); + void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TDesC8& aValue ); + void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TDesC& aValue ); + void HandlePropertyChangeErrorL( const TUid& aCategory, const TUint aKey, TInt aError ); + + /** + * Sets the UI side control event observer. + * @param aControlEventObserver the observer for control events + */ + IMPORT_C void SetControlEventObserver( MFMRadioControlEventObserver* aControlEventObserver ); + +private: //Methods + + /** + * C++ default constructor. + */ + CFMRadioPubSub(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Defines a property. + * + * @param aKey The key of the property. + * @param aAttr Attributes of the property. + * @param aDataProperty ETrue if the property is a data property, EFalse + * if it is a control property + */ + void DefinePropertyL( + TUint aKey, + TInt aAttr, + TBool aDataProperty ) const; + + /** + * Deletes a property. + * + * @param aKey The key of the property. + */ + void DeleteProperty( TUint aKey ) const; + + /** + * Gets the integer value stored in a property. + * + * @param aKey The key of the property. + * @return The value contained in the property. + */ + TInt PropertyValueIntL( TUint aKey ) const; + + /** + * Sets the value in an integer property. + * + * @param aKey The key of the property. + * @param aValue The value to set. + */ + void SetPropertyValueL( TUint aKey, TInt aValue ) const; + + /** + * Sets the value in a text property. + * + * @param aKey The key of the property. + * @param aValue The value to set. + */ + void SetPropertyValueL( TUint aKey, const TDesC& aValue ) const; + +private: // Data + + /** + * Pointer to observer in UI side, can be NULL. Not owned. + */ + MFMRadioControlEventObserver* iObserver; + + /** + * An array of handlers to P&S interface. + */ + RPointerArray iPropertyArray; + + }; + +#endif // CFMRADIOPUBSUB_H