radioapp/radioenginewrapper/inc/radioenginewrapper_p.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:15:02 +0300
branchRCL_3
changeset 45 cce62ebc198e
permissions -rw-r--r--
Revision: 201031 Kit: 201035

/*
* Copyright (c) 2009 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:
*
*/

#ifndef RADIOENGINEWRAPPER_P_H
#define RADIOENGINEWRAPPER_P_H

// System includes
#include <e32std.h>
#include <QScopedPointer>
#include <QList>

// User includes
#include "radioenginewrapper.h"
#include "mradioenginehandlerobserver.h"

// Forward declarations
class RadioEngineHandler;
class RadioControlEventListener;
class RadioRdsListener;
class RadioSettingsIf;
class RadioSettings;
class RadioStationHandlerIf;
class RadioEngineWrapperObserver;

typedef QList<RadioEngineWrapperObserver*> ObserverList;

// Constants

#define RUN_NOTIFY_LOOP( list, func ) \
        foreach( RadioEngineWrapperObserver* observer, list ) { \
            observer->func; \
        }

// Class declaration
class RadioEngineWrapperPrivate : public MRadioEngineHandlerObserver
{
    Q_DECLARE_PUBLIC( RadioEngineWrapper )
    Q_DISABLE_COPY( RadioEngineWrapperPrivate )

    friend class RadioFrequencyScanningHandler;

public:

    RadioEngineWrapperPrivate( RadioEngineWrapper* wrapper,
                               RadioStationHandlerIf& stationHandler );

    virtual ~RadioEngineWrapperPrivate();

    /**
     * Initialization and startup
     */
    bool init();

    /**
     * Returns the radio settings
     */
    RadioSettingsIf& settings();

    /**
    * Getter for CRadioEngineHandler instance.
    * Returns reference to the CRadioEngineHandler
    */
    RadioEngineHandler& radioEnginehandler();

    /**
     * Tunes to given frequency
     */
    void setFrequency( uint frequency, const int reason );

    ObserverList& observers();

    void startSeeking( Seek::Direction direction, const int reason = TuneReason::Unspecified );

private:

// from base class MRadioEngineObserver

    void PowerEventL( TBool aPowerState, TInt aError );
    void FrequencyEventL( TUint32 aFrequency, RadioEngine::TRadioFrequencyEventReason aReason, TInt aError );
    void VolumeEventL( TInt aVolume, TInt aError );
    void MuteEventL( TBool aMuteState, TInt aError );
    void AudioModeEventL( TInt aAudioMode, TInt aError );
    void AntennaEventL( TBool aAntennaAttached, TInt aError );
    void AudioRoutingEventL( TInt aAudioDestination, TInt aError );
    void SeekingEventL( TInt aSeekingState, TInt aError );
    void RegionEventL( TInt aRegion, TInt aError );
    void FmTransmitterEventL( TBool /*aActive*/ ) {}

// from base class MRadioAudioRoutingObserver

    void AudioRouteChangedL( RadioEngine::TRadioAudioRoute aRoute );

// from base class MRadioSystemEventObserver

    void HandleSystemEventL( TRadioSystemEventType aEventType );

private: // data

    /**
     * Pointer to the public class
     * Not own.
     */
    RadioEngineWrapper*                             q_ptr;

    /**
     * Map of radio stations read from the radio engine
     * Own.
     */
    RadioStationHandlerIf&                          mStationHandler;

    /**
     * Reference to the wrapper observer
     */
    ObserverList                                    mObservers;

    /**
     * Radio settings handler
     * Own.
     */
    QScopedPointer<RadioSettings>                   mSettings;

    /**
     * Radio engine handler.
     * Own.
     */
    QScopedPointer<RadioEngineHandler>              mEngineHandler;

    /**
     * RemCon listener.
     * Own.
     */
    QScopedPointer<RadioControlEventListener>       mControlEventListener;

    /**
     * Rds listener
     * Own.
     */
    QScopedPointer<RadioRdsListener>                mRdsListener;

    /**
     * Reason for the tune event. Can be FrequencyStrip, Carousel or station scanner
     */
    int                                             mTuneReason;

    /**
     * Flag to indicate whether or not audio should be routed to loudspeaker
     */
    bool                                            mUseLoudspeaker;

};

#endif // RADIOENGINEWRAPPER_P_H