radioapp/radiowidgets/inc/radiomainwindow.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:31:41 +0300
changeset 16 f54ebcfc1b80
parent 14 63aabac4416d
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* 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 _RADIOMAINWINDOW_H_
#define _RADIOMAINWINDOW_H_

// System includes
#include <HbMainWindow>
#include <HbEffect>
#include <QPointer>

#include <QScopedPointer>

// User includes
#include "radiowidgetsexport.h"

// Forward declarations
class RadioViewBase;
class RadioUiEngine;
class HbVolumeSliderPopup;

typedef QScopedPointer<HbVolumeSliderPopup> VolumeSliderPtr;

/**
 * QPointer is used to store the views because it tracks the deletion of the object and nulls
 * the reference. Transient view like RadioHistoryView is destroyed after they are closed
 * and QPointer will notice it.
 */
typedef QPointer<RadioViewBase> ViewPtr;

typedef QSharedPointer<HbView> DummyViewPtr;

// Class declaration
class WIDGETS_DLL_EXPORT RadioMainWindow : public HbMainWindow
{
    Q_OBJECT
    Q_DISABLE_COPY( RadioMainWindow )

public:

    RadioMainWindow( QWidget *parent = 0 );

    ~RadioMainWindow();

    bool isOfflineUsageAllowed();

    void showErrorMessage( const QString& text );

    void init( RadioUiEngine* uiEngine );

    RadioUiEngine& uiEngine();

    QString orientationSection();

public slots:

    void activateTuningView();

    void activateStationsView();

    void activateHistoryView();

private slots:

    void updateOrientation( Qt::Orientation orientation );
    void showVolumeLevel( int volume );
    void updateAntennaStatus( bool connected );

private:

// New functions

    void activateView( ViewPtr& aMember, const QString& docmlFile, Hb::ViewSwitchFlags flags = Hb::ViewSwitchDefault );

    DummyViewPtr prepareToShowDialog();
    void dialogShown( DummyViewPtr pointer );

private: // data

    /*!
     * Pointer to the UI engine
     */
    RadioUiEngine*  mUiEngine;

    /**
     * Tuning view.
     * Own.
     */
    ViewPtr         mTuningView;

    /**
     * Stations view
     * Own.
     */
    ViewPtr         mStationsView;

    /**
     * Play history view
     * Own.
     */
    ViewPtr         mHistoryView;

    /**
     * Pointer to the volume slider
     * Own.
     */
    VolumeSliderPtr mVolSlider;

};


#endif // _RADIOMAINWINDOW_H_