qtinternetradio/ui/inc/irnowplayingview.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:25:23 +0300
changeset 2 2e1adbfc62af
parent 0 09774dfdd46b
child 3 ee64f059b8e1
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 IRNOWPLAYINGVIEW_H
#define IRNOWPLAYINGVIEW_H

#include <hbeffect.h>

#include "irbaseview.h"
#include "irqevent.h"

class IRNowPlayingContainer;
class IRStationDetailsContainer;
class HbAction;
class IRQPreset;
class IRQMusicShop;
class IRQStatisticsReporter;
class IRQMetaData;
class IRQStationExporter;

/**
 * This class shows the station information when it's played.
 */

class IRNowPlayingView : public IRBaseView
      
{
    Q_OBJECT

public:
    ~IRNowPlayingView();

protected:
    IRNowPlayingView(IRApplication* aApplication, TIRViewId aViewId);
    //from base class IRBaseView
    TIRHandleResult handleSystemEvent(TIRSystemEventType aEvent);

    //from base class IRBaseView
    TIRHandleResult handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason);

    //from base class IRBaseView
    void launchAction();

    

private slots:
    void presetLogoDownload(IRQPreset* aPreset);
    void playStopControl();
    void stop();
    void playingStarted();
    void playingStopped();
    void add2FavControl();
    void flipControl();
    void hidePlayingWidgetComplete(HbEffect::EffectStatus status);
    void hideDetailsWidgetComplete(HbEffect::EffectStatus status);
    void stereoControl();
    void openWebAddressControl();
    void launchSettingsView();
    void updateSongInfo(IRQMetaData*);
    void updateLogoInfo();
    void initializeLogo();
    void networkRequestNotified(IRQNetworkEvent aEvent);
    void findInMusicShop();
    void helpAction();
    void playPressed();
    void gotoMusicStore();
    void recognizeSong();
    void openAdvLink();
    void shareStationViaMms();
    void prepareMenu();

private:
    void createMenu();
    void createToolBar();
    void updateStationInfo();
    void updateAdvImage();
    void showWidget();
    void initialize();
    void updateMusicStatus();

private:
    // preset to save station big logo
    IRQPreset *iLogoPreset;
    IRNowPlayingContainer *iNowPlayingContainer;
    IRStationDetailsContainer *iStationDetailsContainer;
    // save the pointer of idle container
    QGraphicsWidget *iIdleContainer;
    IRQMusicShop *iMusicShop;
    IRQStatisticsReporter *iStatisticsReporter;
    IRQStationExporter *iStationExporter;

    // menu bar actions
    HbAction *iStereoAction;

    // tool bar actions
    HbAction *iMusicShopAction;
    HbAction *iPlayStopAction;
    HbAction *iAdd2FavAction;
    HbAction *iFlipAction;

    QString iAdvImageUrl;
    QString iTempAdvClickThroughUrl;
    QString iAdvClickThroughUrl;
    bool    iGettingAdv;
    HbIcon *iStationLogo;

    int  iStereoMode;
    bool iShowStationInfo;

    enum LogoState
    {
        EDefaultLogo    = 0, // Use default logo
        ERequestIssued  = 1, // Issue request to get logo from server
        ELogoDetermined = 2, // Logo got from server or user defined
                             // stations with default logo
    };
    LogoState iLogoStatus;
    
    bool iFindinNmsAllowed;
    
    bool iSongNameAvailable;
    
    friend class IRViewManager;
};

#endif   //IRNOWPLAYINGVIEW_H