hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp
branchGCC_SURGE
changeset 37 451b2e1545b2
parent 26 6bcf277166c1
parent 33 11b6825f0862
--- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp	Fri Jun 11 16:24:13 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,925 +0,0 @@
-/*
-* Copyright (c) 2010 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:  FM Radio home screen widget
-*
-*/
-
-// System includes
-#include <HbPushButton>
-#include <HbLabel>
-#include <HbDocumentLoader>
-#include <HbFrameDrawer>
-#include <HbFrameItem>
-#include <HbIcon>
-#include <HbIconAnimationManager>
-#include <HbIconAnimationDefinition>
-#include <HbColorScheme>
-#include <HbMarqueeItem>
-#include <HbStyleLoader>
-#include <QGraphicsLinearLayout>
-#include <QGraphicsItem>
-#include <QDesktopServices>
-
-// User includes
-#include "fmradiohswidget.h"
-#include "fmradiohswidgetprocesshandler.h"
-#include "fmradiohswidgetprofilereader.h"
-#include "fmradiohswidgetradioserviceclient.h"
-#include "radioservicedef.h"
-#include "radio_global.h"
-
-/*!
-    \ingroup group_fmradiohs_widget
-    \class FmRadioHsWidget
-    \brief Example implementation for home screen widget.
-
-    FmRadioHsWidget derived from the HbWidget and implements 
-    needed functions for the home screen widget. 
-*/
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
-*/
-FmRadioHsWidget::FmRadioHsWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
-    : HbWidget(parent, flags),
-      mRadioPushButton(0),
-      mPreviousPushButton(0),
-      mPlayPushButton(0),
-      mNextPushButton(0),
-      mInformationFirstRowLabel(0),
-      mInformationSecondRowLabel(0),
-      mFmRadioState(Undefined),
-      mPlayButtonState(PlayEnabled),
-      mIsFavoriteChannels(false),
-      mRadioInformation(QHash<QString, QString>()),
-      mProcessHandler(0),
-      mProfileMonitor(new FmRadioHsWidgetProfileReader(this)),
-      mRadioServiceClient(new FmRadioHsWidgetRadioServiceClient(this))
-{
-    connect(mRadioServiceClient, SIGNAL(radioInformationChanged(int, QVariant)), this,
-        SLOT(handleRadioInformationChange(int, QVariant)));
-    connect(mRadioServiceClient, SIGNAL(radioStateChanged(QVariant)), this,
-        SLOT(handleRadioStateChange(QVariant)));
-    connect(mProfileMonitor, SIGNAL(radioRunning(QVariant)), this,
-        SLOT(handleRadioStateChange(QVariant)));
-    
-    load(KDocml);
-    
-    handleRadioStateChange(mProfileMonitor->radioStatus());
-
-    //mRadioServiceClient->init();
-}
-
-/*!
-    Destructor
-*/
-FmRadioHsWidget::~FmRadioHsWidget()
-{
-}
-
-/*!
-    Called when widget is shown in the home screen
-*/
-void FmRadioHsWidget::onShow()
-{
-}
-
-/*!
-    Called when widget is hidden from the home screen
-*/
-void FmRadioHsWidget::onHide()
-{
-}
-
-/*!
-    Loads docml files.
-*/
-void FmRadioHsWidget::load(const QString docml)
-{
-    bool loaded = false;
-
-    HbDocumentLoader *documentLoader = new HbDocumentLoader();
-    documentLoader->reset();
-    documentLoader->load(docml, &loaded);
-
-    if (loaded) {
-        HbWidget *widget = qobject_cast<HbWidget*> (documentLoader->findWidget(
-            KDocmlObjectNameMainLayout));
-
-        HbFrameItem *frameItem = NULL;
-
-        if (widget) {
-            //HbWidget *view = qobject_cast<HbWidget*> (widget);
-            QGraphicsLinearLayout *mWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
-
-            HbFrameDrawer *drawer = new HbFrameDrawer("qtg_fr_hswidget_normal",
-                HbFrameDrawer::NinePieces);
-            frameItem = new HbFrameItem(drawer, widget);
-            frameItem->setPreferredSize(widget->preferredSize());
-
-            mWidgetLayout->addItem(widget);
-            setLayout(mWidgetLayout);
-        }
-
-        mRadioPushButton = qobject_cast<HbPushButton*> (documentLoader->findWidget(
-            KDocmlObjectNameRadioIconPushButton));
-        if (mRadioPushButton) {
-            if (frameItem) {
-                frameItem->stackBefore(mRadioPushButton);
-            }
-            mRadioPushButton->setBackground(HbIcon("qtg_large_radio"));
-            mRadioPushButton->icon().setSize(mRadioPushButton->preferredSize());
-            QObject::connect(mRadioPushButton, SIGNAL(clicked()), this, SLOT(radioToForeground()));
-        }
-
-        mVerticalSeparatorLabel = qobject_cast<HbLabel*> (documentLoader->findWidget(
-            KDocmlObjectNameVerticalSeparatorLabel));
-        if (mVerticalSeparatorLabel) {
-            mVerticalSeparatorLabel->setIcon(HbIcon("qtg_graf_divider_v_thin"));
-        }
-        
-        HbWidget *controlAreaLayoutWidget = qobject_cast<HbWidget*> (documentLoader->findWidget(
-            KDocmlObjectNameControlAreaLayout));
-        if (controlAreaLayoutWidget) {
-        }
-
-        mPreviousPushButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-            KDocmlObjectNamePreviousPushButton));
-        if (mPreviousPushButton) {
-            changeControlButtonFrameBackground(false, Left, mPreviousPushButton);
-/*
-            HbFrameDrawer *previousButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled",
-                  HbFrameDrawer::ThreePiecesHorizontal);
-            previousButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_l" << "_c" << "_cr");
-            mPreviousPushButton->setFrameBackground(previousButtonFrameDrawer);
-*/            QObject::connect(mPreviousPushButton, SIGNAL(clicked()), this, SLOT(previousChannel()));
-        }
-
-        mPlayPushButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-            KDocmlObjectNamePlayPushButton));
-        if (mPlayPushButton) {
-            changeControlButtonFrameBackground(false, Center, mPlayPushButton);
-/*            HbFrameDrawer *playButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled",
-                  HbFrameDrawer::ThreePiecesHorizontal);
-            playButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_cr");
-            mPlayPushButton->setFrameBackground(playButtonFrameDrawer);
-*/            QObject::connect(mPlayPushButton, SIGNAL(clicked()), this, SLOT(radioToBackground()));
-        }
-
-        mNextPushButton = qobject_cast<HbPushButton *> (documentLoader->findWidget(
-            KDocmlObjectNameNextPushButton));
-        if (mNextPushButton) {
-            changeControlButtonFrameBackground(false, Right, mNextPushButton);
-/*            HbFrameDrawer *nextButtonFrameDrawer = new HbFrameDrawer("qtg_fr_hsbutton_disabled",
-                  HbFrameDrawer::ThreePiecesHorizontal);
-            nextButtonFrameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_r");
-            mNextPushButton->setFrameBackground(nextButtonFrameDrawer);
-*/            QObject::connect(mNextPushButton, SIGNAL(clicked()), this, SLOT(nextChannel()));
-        }
-        
-        //bool b = QFile::exists(KCss);
-        bool a = HbStyleLoader::registerFilePath(KCss);
-
-        mInformationAreaTwoRowsLayout = qobject_cast<QGraphicsWidget *> (
-            documentLoader->findObject(KDocmlObjectNameTwoRowsLayout));
-        if (mInformationAreaTwoRowsLayout) {
-            /*
-            QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, mInformationAreaTwoRowsLayout);
-            mInformationFirstRowMarquee = new HbMarqueeItem();
-            HbStyle::setItemName(mInformationFirstRowMarquee, "marquee1");
-            mInformationFirstRowMarquee->setObjectName("marquee1");
-            mInformationFirstRowMarquee->setText(
-                "Long text");
-            mInformationFirstRowMarquee->setLoopCount(-1);
-            mInformationFirstRowMarquee->startAnimation();
-            HbFontSpec fs(HbFontSpec::Secondary);
-            mInformationFirstRowMarquee->setFontSpec(fs);
-            mInformationFirstRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
-            mInformationFirstRowMarquee->setPreferredSize(layout->preferredSize());
-            layout->addItem(mInformationFirstRowMarquee);
-         
-            mInformationSecondRowMarquee = new HbMarqueeItem();
-            mInformationSecondRowMarquee->setObjectName("marquee2");
-            mInformationSecondRowMarquee->setText(
-                "Long text to test marquee, Long text to test marquee");
-            mInformationSecondRowMarquee->setLoopCount(-1);
-            mInformationSecondRowMarquee->startAnimation();
-            mInformationSecondRowMarquee->setFontSpec(fs);
-            mInformationSecondRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
-            mInformationSecondRowMarquee->setPreferredSize(layout->preferredSize());
-            layout->addItem(mInformationSecondRowMarquee);
-            */
-        }
-
-        mInformationAreaOneRowLayout = qobject_cast<QGraphicsWidget *> (documentLoader->findObject(
-            KDocmlObjectNameOneRowLayout));
-        if (mInformationAreaOneRowLayout) {
-            /*
-            QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, mInformationAreaOneRowLayout);
-            mInformationLonelyRowMarquee = new HbMarqueeItem();
-            mInformationLonelyRowMarquee->setObjectName("marquee3");
-            HbStyle::setItemName(mInformationLonelyRowMarquee, "marquee3");
-            mInformationLonelyRowMarquee->setText(
-                "Long text");
-            mInformationLonelyRowMarquee->setLoopCount(-1);
-            mInformationLonelyRowMarquee->startAnimation();
-            HbFontSpec fs(HbFontSpec::Secondary);
-            mInformationLonelyRowMarquee->setFontSpec(fs);
-            mInformationLonelyRowMarquee->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
-            mInformationLonelyRowMarquee->setPreferredSize(layout->preferredSize());
-            layout->addItem(mInformationLonelyRowMarquee);
-            */
-        }
-
-        mInformationAreaAnimationLayout = qobject_cast<QGraphicsWidget *> (
-            documentLoader->findObject(QString(KDocmlObjectNameAnimationLayout)));
-        if (mInformationAreaAnimationLayout) {
-        }
-        
-        mInformationFirstRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-            KDocmlObjectNameFirstRowLabel));
-        if (mInformationFirstRowLabel) {
-            mInformationFirstRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_title"));
-        }
-
-        mInformationSecondRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-            KDocmlObjectNameSecondRowLabel));
-        if (mInformationSecondRowLabel) {
-            mInformationSecondRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content"));
-        }
-
-        mInformationLonelyRowLabel = qobject_cast<HbLabel *> (documentLoader->findWidget(
-            KDocmlObjectNameLonelyRowLabel));
-        if (mInformationLonelyRowLabel) {
-            mInformationLonelyRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content"));
-        }
-
-        mAnimationIcon = qobject_cast<HbLabel *> (documentLoader->findWidget(
-            KDocmlObjectNameAnimationIcon));
-        if (mAnimationIcon) {
-            // Use animation manager to define the frame-by-frame animation.
-            HbIconAnimationManager *animationManager = HbIconAnimationManager::global();
-
-            // Create animation definition.
-            HbIconAnimationDefinition animationDefinition;
-            QList<HbIconAnimationDefinition::AnimationFrame> animationFrameList;
-
-            HbIconAnimationDefinition::AnimationFrame animationFrame;
-            QString animationFrameIconName;
-            QString animationFrameIconNamePrefix = "qtg_anim_loading_";
-            for (int i = 1; i < 11; i++) {
-                animationFrame.duration = 100;
-                animationFrameIconName.clear();
-                animationFrameIconName.append(animationFrameIconNamePrefix);
-                animationFrameIconName.append(animationFrameIconName.number(i));
-                animationFrame.iconName = animationFrameIconName;
-                animationFrameList.append(animationFrame);
-            }
-            animationDefinition.setPlayMode(HbIconAnimationDefinition::Loop);
-            animationDefinition.setFrameList(animationFrameList);
-            animationManager->addDefinition("animation", animationDefinition);
-
-            // Construct an icon using the animation definition.
-            HbIcon icon("animation");
-            
-            mAnimationIcon->setIcon(icon);
-        }
-
-    }
-    delete documentLoader;
-}
-
-/*!
- Slot for grouping events.
- */
-bool FmRadioHsWidget::eventFilter(QObject */*target*/, QEvent */*event*/)
- {
-// This event filter is used to get events from information area layout and from it's components.
-// Not yet implemented.   
-/*
-    if (target == mFrequencyLabel) {
-        if (event->type() == QEvent::MouseButtonRelease) {
-            qDebug() << "MouseButtonRelease";
-            return true;
-        }
-        else if (event->type() == QEvent::MouseButtonPress) {
-            qDebug() << "MouseButtonPress";
-            return true;
-        }
-        else if (event->type() == QEvent::KeyPress) {
-            qDebug() << "KeyPress";
-            return true;
-        }
-        else {
-            return false;
-        }
-    }
-    else {
-        // pass the event on to the parent class
-        return HbWidget::eventFilter(target, event);
-    }
-*/
-    return false;
-}
-
-/*!
- Mute FM Radio audio.
- */
-void FmRadioHsWidget::mute()
-{
-    mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Mute);
-    //handleRadioStateChange(QVariant(NotControllingAudio));
-}
-
-/*!
- Unmute FM Radio audio.
- */
-void FmRadioHsWidget::unMute()
-{
-    mRadioServiceClient->doControlFmRadioAudio(FmRadioHsWidgetRadioServiceClient::Unmute);
-    //handleRadioStateChange(QVariant(ControllingAudio));
-}
-
-/*!
- Slot for previous button clicked.
- */
-void FmRadioHsWidget::previousChannel()
-{
-    mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::PreviousFavouriteChannel);
-}
-
-/*!
- Slot for next button clicked.
- */
-void FmRadioHsWidget::nextChannel()
-{
-    mRadioServiceClient->doChangeFmRadioChannel(FmRadioHsWidgetRadioServiceClient::NextFavouriteChannel);
-}
-
-/*!
- Slot for radio button clicked.
- */
-void FmRadioHsWidget::radioToForeground()
-{
-    if (mFmRadioState == NotRunning) {
-        handleRadioStateChange(QVariant(Starting));
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToForeground);
-    }
-    else {
-        mRadioServiceClient->doChangeFmRadioVisibility(
-            FmRadioHsWidgetRadioServiceClient::ToForeground);
-    }
-}
-
-/*!
- Slot for radio button clicked.
- */
-void FmRadioHsWidget::radioToBackground()
-{
-    if (mFmRadioState == NotRunning) {
-        handleRadioStateChange(QVariant(Starting));
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::ToBackground);
-    }
-    else if (mFmRadioState == Starting) {
-        
-    }
-    else {
-        mRadioServiceClient->doChangeFmRadioVisibility(
-            FmRadioHsWidgetRadioServiceClient::ToBackground);
-    }
-}
-
-/*!
- Opening of url to the browser.
- 
- /param url Url to be opened.
- */
-bool FmRadioHsWidget::openUrl(QUrl url)
-{
-    return QDesktopServices::openUrl(url);
-}
-
-/*!
- Handles changes in FM Radio information.
- 
- /param type Type of changed information.
- /param value Information content.
- */
-void FmRadioHsWidget::handleRadioInformationChange(
-    int notificationId, QVariant value)
-{
-    if (!value.isValid()) {
-        return;
-    }
-    switch ( notificationId ) {
-
-        case RadioServiceNotification::FavoriteCount:
-            if (value.canConvert(QVariant::Int)) {
-                int favoriteCount = value.toInt();
-                mIsFavoriteChannels = favoriteCount > 0 ? true : false;
-                changeChannelButtonsEnabledState(mIsFavoriteChannels);
-            }
-            break;
-
-        case RadioServiceNotification::RadioStatus:
-            if (value.canConvert(QVariant::Int)) {
-                int status = value.toInt();
-                switch (status) {
-                case RadioStatus::Playing:
-                    handleRadioStateChange(QVariant(ControllingAudio));
-                    break;
-                case RadioStatus::Muted:
-                    handleRadioStateChange(QVariant(NotControllingAudio));
-                    break;
-                case RadioStatus::Seeking:
-                    handleRadioStateChange(QVariant(Seeking));
-                    break;
-                case RadioStatus::NoAntenna:
-                    handleRadioStateChange(QVariant(AntennaNotConnected));
-                    break;                    
-                default:
-                    break;
-                }
-            }
-            break;
-
-        case RadioServiceNotification::Frequency:
-            if (value.canConvert(QVariant::UInt)) {
-                const uint frequency = value.toUInt();
-                QString freqString;
-                freqString.sprintf("%.1f", qreal(frequency) / KFrequencyMultiplier);
-                bool frequencyCleared = false;
-                if (mRadioInformation.contains(KRadioInformationFrequency)
-                    && mRadioInformation[KRadioInformationFrequency].compare(freqString) != 0) {
-                    clearRadioInformation();
-                    frequencyCleared = true;
-                }
-                bool frequencyUpdated = updateRadioInformation(KRadioInformationFrequency, freqString);
-                if (frequencyCleared || frequencyUpdated) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::Name:
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationStationName, value.toString())) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::Genre:
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationPty, value.toString())) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::RadioText:
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationRt, value.toString())) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-        case RadioServiceNotification::HomePage:
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationHomePage, value.toString())) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-        
-        case RadioServiceNotification::Song:
-            if (value.canConvert(QVariant::String)) {
-                if (updateRadioInformation(KRadioInformationSong, value.toString())) {
-                    radioInformationChanged();
-                }
-            }
-        break;
-
-
-/*    case FmRadioHsWidgetRadioServiceClient::InformationTypeCallSign:
-        if (updateRadioInformation(KRadioInformationCallSign, informationText)) {
-
-        }
-        break;
-*/
-/*    case FmRadioHsWidgetRadioServiceClient::InformationTypeDynamicPsName:
-        if (updateRadioInformation(KRadioInformationDynamicPsName,
-            informationText)) {
-
-        }
-        break;
-        */
-        
-    default:
-        break;
-    }
-}
-
-/*!
- Check if the the radio information is changed. If it is changed update it.
- 
- /param informationType Type of the information. 
- /param information  Information text.
- 
- /return bool If information is updated, return true. Return false otherwise.
- */
-bool FmRadioHsWidget::updateRadioInformation(const QString informationType, QString information)
-{
-    // If hash contains this type
-    if (mRadioInformation.contains(informationType)) {
-        // If new information is empty
-        if (information.isEmpty()) {
-            // Remove it from the hash
-            mRadioInformation.remove(informationType);
-            // Return true to indicate the change
-            return true;
-        }
-        // If new information differs from the old one
-        if (mRadioInformation[informationType].compare(information) != 0) {
-            // Update the information
-            mRadioInformation[informationType] = information;
-            // And return true to indicate the change
-            return true;
-        }
-    } else { // Hash do not contain the information
-        // If new information is not empty
-        if (!information.isEmpty()) {
-            // Add it to the hash
-            mRadioInformation[informationType] = information;
-            // Return true to indicate the change
-            return true;
-        }
-    }
-    // Return false to indicate that nothing changed
-    return false;
-}
-
-/*!
- Formatting radio information texts after change. 
- */
-void FmRadioHsWidget::radioInformationChanged()
-{
-    mRadioInformationFirstRow = "";
-    mRadioInformationSecondRow = "";
-
-    // Lets formulate the first row, first station name
-    if (mRadioInformation.contains(KRadioInformationStationName)) {
-        mRadioInformationFirstRow.append(mRadioInformation.value(KRadioInformationStationName));
-    }
-    // Second call sign
-    if (mRadioInformation.contains(KRadioInformationCallSign)) {
-        mRadioInformationFirstRow.append(" " + mRadioInformation.value(KRadioInformationCallSign));
-    }
-    // Third frequency
-    if (mRadioInformation.contains(KRadioInformationFrequency)) {
-        mRadioInformationFirstRow.append(" " + mRadioInformation.value(KRadioInformationFrequency)
-            + " " + KMhzText);
-    }
-    // Second row of information contains first rt
-    if (mRadioInformation.contains(KRadioInformationRt)) {
-        mRadioInformationSecondRow.append(mRadioInformation.value(KRadioInformationRt));
-    }
-    // Second is dynamic ps name
-    if (mRadioInformation.contains(KRadioInformationDynamicPsName)) {
-        mRadioInformationSecondRow.append(" " + mRadioInformation.value(
-            KRadioInformationDynamicPsName));
-    }
-    // Third is pty 
-    if (mRadioInformation.contains(KRadioInformationPty)) {
-        mRadioInformationSecondRow.append(" " + mRadioInformation.value(KRadioInformationPty));
-    }
-
-    if (mRadioInformationSecondRow.isEmpty()) {
-        mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
-        changeInformationAreaLayout(OneRow);
-    }
-    else {
-        mInformationFirstRowLabel->setPlainText(mRadioInformationFirstRow);
-        mInformationSecondRowLabel->setPlainText(mRadioInformationSecondRow);
-        changeInformationAreaLayout(TwoRows);
-    }
-}
-
-/*!
- Clears the radio station information. For example, when the channel is
- changed, old information should be cleared.
- */
-void FmRadioHsWidget::clearRadioInformation()
-{
-    if (!mRadioInformation.isEmpty()) {
-        mRadioInformation.clear();
-    }
-}
-
-/*!
- Handles changes in FM Radio state.
- 
- /param value Information content.
- */
-void FmRadioHsWidget::handleRadioStateChange(QVariant value)
-{
-    int state;
-    if (value.canConvert(QVariant::Int)) {
-        state = value.toInt();
-    } else {
-        return;
-    }
-    
-    if (state == mFmRadioState) {
-        // State did not change, so return.
-        return;
-    }
-    
-    switch (state) {
-    case Undefined:
-        // TODO: Some error occured because we do not have the state information. Handle this.
-        mFmRadioState = Undefined;
-        break;
-    case NotRunning:
-        mFmRadioState = NotRunning;
-        mRadioServiceClient->stopMonitoring();
-        //changeControlButtonState(ChannelsDisabledPlay);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        changePlayButtonState(PlayEnabled);
-        mIsFavoriteChannels = false;
-        changeChannelButtonsEnabledState(false);
-        mInformationFirstRowLabel->setPlainText("");
-        mInformationSecondRowLabel->setPlainText("");
-        mInformationLonelyRowLabel->setPlainText(KFmRadioText);
-        changeInformationAreaLayout(OneRow);
-        break;
-    case Starting:
-        mFmRadioState = Starting;
-        //changeControlButtonState(ChannelsDisabledStop);
-        changePlayButtonState(StopDisabled);
-        // TODO: What should the stop button do? Should it close the radio?
-        changeChannelButtonsEnabledState(false);
-        changeInformationAreaLayout(Animation);
-        break;
-    case Running:
-        mFmRadioState = Running;
-        mRadioServiceClient->startMonitoring(FmRadioHsWidgetRadioServiceClient::DoNotChange);
-        //changeControlButtonState(ChannelsEnabledStop);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        changePlayButtonState(StopEnabled);
-        changeChannelButtonsEnabledState(mIsFavoriteChannels);
-        changeInformationAreaLayout(OneRow);
-        break;
-    case ControllingAudio:
-        mFmRadioState = ControllingAudio;
-        //changeControlButtonState(ChannelsEnabledStop);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        changePlayButtonState(StopEnabled);
-        changeChannelButtonsEnabledState(mIsFavoriteChannels);
-        radioInformationChanged();
-        break;
-    case NotControllingAudio:
-        mFmRadioState = NotControllingAudio;
-        //changeControlButtonState(ChannelsEnabledPlay);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        changePlayButtonState(PlayEnabled);
-        changeChannelButtonsEnabledState(mIsFavoriteChannels);
-        radioInformationChanged();
-        break;
-    case Seeking:
-        mFmRadioState = Seeking;
-        //changeControlButtonState(AllDisabledStop);
-        changePlayButtonState(StopDisabled);
-        changeChannelButtonsEnabledState(false);
-        changeInformationAreaLayout(Animation);
-        break;
-    case AntennaNotConnected:
-        mFmRadioState = AntennaNotConnected;
-        //changeControlButtonState(AllDisabledPlay);
-        changePlayButtonState(StopDisabled);
-        changeChannelButtonsEnabledState(false);
-        mInformationFirstRowLabel->setPlainText("");
-        mInformationSecondRowLabel->setPlainText("");
-        mInformationLonelyRowLabel->setPlainText(KConnectHeadsetText);
-        changeInformationAreaLayout(OneRow);
-        break;
-    default:
-        break;
-    }
-}
-
-/*!
- Changes visible layout of information area.
- 
- /param InformationAreaLayout The layout to switch visible.
- */
-void FmRadioHsWidget::changeInformationAreaLayout(InformationAreaLayout layout)
-{
-    switch (layout) {
-    case OneRow:
-        mInformationAreaOneRowLayout->show();
-        ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->hide();
-        mInformationAreaAnimationLayout->hide();
-        break;
-    case TwoRows:
-        mInformationAreaOneRowLayout->hide();
-        ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->show();
-        mInformationAreaAnimationLayout->hide();
-        break;
-    case Animation:
-        mInformationAreaOneRowLayout->hide();
-        ((QGraphicsWidget*) mInformationAreaTwoRowsLayout)->hide();
-        mInformationAreaAnimationLayout->show();
-        break;
-    default:
-        break;
-    }
-}
-
-/*!
- Changes state of the control buttons.
- 
- /param ControlButtonState State of the control buttons.
- */
-void FmRadioHsWidget::changeControlButtonState(ControlButtonState buttonState)
-{
-    QString iconName;
-    switch (buttonState) {
-    case AllDisabledPlay:
-        changeControlButtonFrameBackground(false, Left, mPreviousPushButton);
-        iconName.append("qtg_mono_play");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(false, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(false, Right, mNextPushButton);
-        break;
-    case AllDisabledStop:
-        changeControlButtonFrameBackground(false, Left, mPreviousPushButton);
-        iconName.append("qtg_mono_stop");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(false, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(false, Right, mNextPushButton);
-        break;
-    case ChannelsDisabledPlay:
-        changeControlButtonFrameBackground(false, Left, mPreviousPushButton);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        iconName.append("qtg_mono_play");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(true, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(false, Right, mNextPushButton);
-        break;
-    case ChannelsDisabledStop:
-        changeControlButtonFrameBackground(false, Left, mPreviousPushButton);
-        iconName.append("qtg_mono_stop");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(true, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(false, Right, mNextPushButton);
-        break;
-    case ChannelsEnabledPlay:
-        changeControlButtonFrameBackground(true, Left, mPreviousPushButton);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        iconName.append("qtg_mono_play");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(true, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(true, Right, mNextPushButton);
-        break;
-    case ChannelsEnabledStop:
-        changeControlButtonFrameBackground(true, Left, mPreviousPushButton);
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(radioToBackground()));
-        QObject::disconnect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(unMute()));
-        QObject::connect(mPlayPushButton, SIGNAL(clicked()), this,
-            SLOT(mute()));
-        iconName.append("qtg_mono_stop");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        changeControlButtonFrameBackground(true, Center, mPlayPushButton);
-        changeControlButtonFrameBackground(true, Right, mNextPushButton);
-        break;
-    default:
-        break;
-    }
-}
-
-/*!
- Changes enabled state of channel buttons.
- 
- */
-void FmRadioHsWidget::changePlayButtonState(PlayButtonState buttonState)
-{
-    QString iconName;
-    bool enabled = false;
-    switch (buttonState) {
-    case PlayDisabled:
-        iconName.append("qtg_mono_play");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        enabled = false;
-        break;
-    case PlayEnabled:
-        iconName.append("qtg_mono_play");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        enabled = true;
-        break;
-    case StopDisabled:
-        iconName.append("qtg_mono_stop");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        enabled = false;
-        break;
-    case StopEnabled:
-        iconName.append("qtg_mono_stop");
-        mPlayPushButton->setIcon(HbIcon(iconName));
-        enabled = true;
-        break;
-    default:
-        break;
-    }
-    changeControlButtonFrameBackground(enabled, Center, mPlayPushButton);
-}
-
-/*!
- Changes enabled state of channel buttons.
- 
- */
-void FmRadioHsWidget::changeChannelButtonsEnabledState(bool enabled)
-{
-    changeControlButtonFrameBackground(enabled, Left, mPreviousPushButton);
-    changeControlButtonFrameBackground(enabled, Right, mNextPushButton);
-}
-
-/*!
- Changes background of control button.
- 
- /param enabled Is button enabled or disabled.
- /param position Position of the control button in button group.
- /param button The button to change the background.
- */
-void FmRadioHsWidget::changeControlButtonFrameBackground(bool enabled,
-    ControlButtonPosition position, HbPushButton *button)
-{
-    QString frameGraphicsName("qtg_fr_hsbutton_");
-    if (enabled) {
-        frameGraphicsName.append("normal");
-    } else {
-        frameGraphicsName.append("disabled");
-    }
-    HbFrameDrawer *frameDrawer = new HbFrameDrawer(frameGraphicsName,
-        HbFrameDrawer::ThreePiecesHorizontal);
-    switch (position) {
-    case Left:
-        frameDrawer->setFileNameSuffixList(QStringList() << "_l" << "_c" << "_cr");
-        break;
-    case Center:
-        frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_cr");
-        break;
-    case Right:
-        frameDrawer->setFileNameSuffixList(QStringList() << "_cl" << "_c" << "_r");
-        break;
-    default:
-        break;
-    }
-    button->setFrameBackground(frameDrawer);
-    button->setEnabled(enabled);
-}