diff -r afea38384506 -r a2b50a479edf hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp --- a/hswidgetplugin/fmradiohswidgetplugin/src/fmradiohswidget.cpp Fri May 14 15:52:32 2010 +0300 +++ /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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// 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()), - 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 (documentLoader->findWidget( - KDocmlObjectNameMainLayout)); - - HbFrameItem *frameItem = NULL; - - if (widget) { - //HbWidget *view = qobject_cast (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 (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 (documentLoader->findWidget( - KDocmlObjectNameVerticalSeparatorLabel)); - if (mVerticalSeparatorLabel) { - mVerticalSeparatorLabel->setIcon(HbIcon("qtg_graf_divider_v_thin")); - } - - HbWidget *controlAreaLayoutWidget = qobject_cast (documentLoader->findWidget( - KDocmlObjectNameControlAreaLayout)); - if (controlAreaLayoutWidget) { - } - - mPreviousPushButton = qobject_cast (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 (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 (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 ( - 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 (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 ( - documentLoader->findObject(QString(KDocmlObjectNameAnimationLayout))); - if (mInformationAreaAnimationLayout) { - } - - mInformationFirstRowLabel = qobject_cast (documentLoader->findWidget( - KDocmlObjectNameFirstRowLabel)); - if (mInformationFirstRowLabel) { - mInformationFirstRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_title")); - } - - mInformationSecondRowLabel = qobject_cast (documentLoader->findWidget( - KDocmlObjectNameSecondRowLabel)); - if (mInformationSecondRowLabel) { - mInformationSecondRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content")); - } - - mInformationLonelyRowLabel = qobject_cast (documentLoader->findWidget( - KDocmlObjectNameLonelyRowLabel)); - if (mInformationLonelyRowLabel) { - mInformationLonelyRowLabel->setTextColor(HbColorScheme::color("qtc_hs_list_item_content")); - } - - mAnimationIcon = qobject_cast (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 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); -}