diff -r afea38384506 -r a2b50a479edf radioapp/radiowidgets/src/radiostationitem.cpp --- a/radioapp/radiowidgets/src/radiostationitem.cpp Fri May 14 15:52:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* 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: -* -*/ - -// System includes -#include -#include -#include -#include - -// User includes -#include "radiostationitem.h" -#include "radiostationcarousel.h" -#include "radiouiengine.h" -#include "radiofadinglabel.h" -#include "radiostationmodel.h" -#include "radiologger.h" - -//static const char* FILE_PATH_WIDGETML = ":/layout/radiostationitem.widgetml"; -//static const char* FILE_PATH_CSS = ":/layout/radiostationitem.css"; -static const char* GENRE_LABEL = "tv:genre_label"; -static const char* NAME_LABEL = "tv:name_label"; -static const char* RADIOTEXT_LABEL = "tv:radiotext_label"; -static const char* URL_LABEL = "tv:url_label"; -//static const char* FAVORITE_BUTTON = "favorite_button"; - -const char* SEEKING_TEXT = "txt_rad_list_tuning"; -const char* CONNECT_HEADSET_TEXT = "txt_rad_list_connect_wireless_antenna_headset_with"; - -/*! - * - */ -RadioStationItem::RadioStationItem( RadioStationCarousel& carousel ) : - HbAbstractViewItem( &carousel ), - mCarousel( carousel ), - mLayout( 0 ), - mNameLabel( 0 ), - mIconButton( 0 ), - mGenreLabel( 0 ), - mRadiotextLabel( 0 ), - mUrlLabel( 0 ) -{ - setFlag( QGraphicsItem::ItemIsFocusable, true ); -} - -/*! - * From HbAbstractViewItem - * - */ -HbAbstractViewItem* RadioStationItem::createItem() -{ - RadioStationItem* item = new RadioStationItem( *this ); // Calls copy constructor -// item->setParent( &mCarousel ); -// item->setParentItem( &mCarousel ); -// item->setItemView( itemView() ); -// item->updateChildItems(); - return item; -} - -/*! - * From HbAbstractViewItem - */ -void RadioStationItem::updateChildItems() -{ - if ( !mLayout ) - { - mIconButton = new HbPushButton( this ); - QPixmap background( QSize( 50, 50 ) ); - background.fill( Qt::transparent ); - mIconButton->setBackground( HbIcon( background ) ); - mIconButton->setIcon( mCarousel.nonFavoriteIcon() ); - mIconButton->setMaximumSize( 50, 50 ); - connectAndTest( mIconButton, SIGNAL(clicked()), this, SLOT(toggleFavorite())); - - mNameLabel = new RadioFadingLabel( this ); - mNameLabel->setAlignment( Qt::AlignCenter ); - mNameLabel->setObjectName( NAME_LABEL ); - HbFontSpec spec = mNameLabel->fontSpec(); - spec.setRole( HbFontSpec::Primary ); - mNameLabel->setFontSpec( spec ); - - spec.setRole( HbFontSpec::Secondary ); - - mGenreLabel = new RadioFadingLabel( this ); - mGenreLabel->setAlignment( Qt::AlignCenter ); - mGenreLabel->setObjectName( GENRE_LABEL ); - mGenreLabel->setTextColor( Qt::white ); - - mRadiotextLabel = new RadioFadingLabel( this ); - mRadiotextLabel->setAlignment( Qt::AlignCenter ); - mRadiotextLabel->setObjectName( RADIOTEXT_LABEL ); - mRadiotextLabel->setTextWrapping( Hb::TextWordWrap ); -// mRadiotextLabel->setFadingEnabled( true ); TODO -// mRadiotextLabel->setFontSpec( spec ); - mRadiotextLabel->setTextColor( Qt::white ); - - mUrlLabel = new RadioFadingLabel( this ); - mUrlLabel->setAlignment( Qt::AlignCenter ); - mUrlLabel->setObjectName( URL_LABEL ); - mUrlLabel->setTextColor( Qt::white ); - - mLayout = new HbAnchorLayout(); - - mLayout->setAnchor( mLayout, Hb::TopEdge, mIconButton, Hb::TopEdge, 20.0 ); - mLayout->setAnchor( mLayout, Hb::LeftEdge, mIconButton, Hb::LeftEdge, 20.0 ); - - mLayout->setAnchor( mIconButton, Hb::CenterVEdge, mGenreLabel, Hb::CenterVEdge, 0.0 ); - mLayout->setAnchor( mIconButton, Hb::RightEdge, mGenreLabel, Hb::LeftEdge, 20.0 ); - mLayout->setAnchor( mLayout, Hb::RightEdge, mGenreLabel, Hb::RightEdge, -70.0 ); - - mLayout->setAnchor( mGenreLabel, Hb::BottomEdge, mNameLabel, Hb::TopEdge, 0.0 ); - mLayout->setAnchor( mLayout, Hb::LeftEdge, mNameLabel, Hb::LeftEdge, 10.0 ); - mLayout->setAnchor( mLayout, Hb::RightEdge, mNameLabel, Hb::RightEdge, -10.0 ); - - mLayout->setAnchor( mNameLabel, Hb::BottomEdge, mRadiotextLabel, Hb::TopEdge, 10.0 ); - mLayout->setAnchor( mLayout, Hb::LeftEdge, mRadiotextLabel, Hb::LeftEdge, 10.0 ); - mLayout->setAnchor( mLayout, Hb::RightEdge, mRadiotextLabel, Hb::RightEdge, -10.0 ); - - mLayout->setAnchor( mRadiotextLabel, Hb::BottomEdge, mUrlLabel, Hb::TopEdge, 10.0 ); - mLayout->setAnchor( mLayout, Hb::LeftEdge, mUrlLabel, Hb::LeftEdge, 10.0 ); - mLayout->setAnchor( mLayout, Hb::RightEdge, mUrlLabel, Hb::RightEdge, -10.0 ); - mLayout->setAnchor( mLayout, Hb::BottomEdge, mUrlLabel, Hb::BottomEdge, -10.0 ); - - setLayout( mLayout ); - } - - update(); -} - -/*! - * Private slot - * - */ -void RadioStationItem::toggleFavorite() -{ - RadioUiEngine* uiEngine = carousel()->uiEngine(); - if ( uiEngine ) { - uiEngine->stationModel().setData( modelIndex(), mFrequency, RadioStationModel::ToggleFavoriteRole ); - } -} - -/*! - * - */ -uint RadioStationItem::frequency() const -{ - return mFrequency; -} - -/*! - * - */ -void RadioStationItem::update( const RadioStation* station ) -{ - QModelIndex index = modelIndex(); - if ( !( station && station->isValid() ) && !index.isValid() ) { - return; - } - - RadioUiEngine* uiEngine = carousel()->uiEngine(); - if ( !mCarousel.isInScanningMode() && uiEngine ) { - RadioStation tempStation = ( station && station->isValid() ) ? *station - : index.data( RadioStationModel::RadioStationRole ).value(); - - mNameLabel->setTextWithoutFading( nameOrFrequency( tempStation ) ); - - mGenreLabel->setText( uiEngine->genreToString( tempStation.genre(), GenreTarget::Carousel ) ); - - if ( !tempStation.radioText().isEmpty() ) { - mRadiotextLabel->setText( tempStation.radioText() ); - } else if ( !tempStation.dynamicPsText().isEmpty() ) { - mRadiotextLabel->setText( tempStation.dynamicPsText() ); - } else { - mRadiotextLabel->setText( "" ); - } - - mUrlLabel->setText( tempStation.url() ); - - mFrequency = tempStation.frequency(); - - updateFavoriteIcon( tempStation.isFavorite() ); - } -} - -/*! - * - */ -void RadioStationItem::setFrequency( uint frequency ) -{ - LOG_FORMAT( "RadioStationItem::setFrequency: %d", frequency ); - - mNameLabel->setTextWithoutFading( parseFrequency( frequency ) ); - mGenreLabel->setTextWithoutFading( "" ); - mRadiotextLabel->setTextWithoutFading( "" ); - mUrlLabel->setTextWithoutFading( "" ); - mFrequency = frequency; - updateFavoriteIcon( false ); -} - -/*! - * - */ -void RadioStationItem::cleanRdsData() -{ - mNameLabel->setTextWithoutFading( "" ); - mGenreLabel->setTextWithoutFading( "" ); - mRadiotextLabel->setTextWithoutFading( "" ); - mUrlLabel->setTextWithoutFading( "" ); -} - -/*! - * - */ -void RadioStationItem::handleLongPress( const QPointF& /*coords*/ ) -{ - QString text = QString( "Selected frequency: %1" ).arg( mFrequency ); -// HbMessageBox::information( text ); -} - -/*! - * - */ -void RadioStationItem::updateFavoriteIcon( bool isFavorite ) -{ - if ( !mCarousel.isInScanningMode() ) { - if ( isFavorite ) { - mIconButton->setIcon( mCarousel.favoriteIcon() ); - } else { - mIconButton->setIcon( mCarousel.nonFavoriteIcon() ); - } - } else { - mIconButton->setIcon( HbIcon( "" ) ); - } -} - -/*! - * - */ -RadioStationCarousel* RadioStationItem::carousel() -{ - return static_cast( itemView() ); -} - -/*! - * - */ -QString RadioStationItem::parseFrequency( const uint frequency ) -{ - //TODO: Frequency localization temporarily disabled - QString loc = "%L1 Mhz";// "txt_rad_list_l1_mhz_big" ); - return loc.arg( RadioStation::parseFrequency( frequency ) ); -} - -/*! - * - */ -QString RadioStationItem::nameOrFrequency( const RadioStation& station, uint frequency ) -{ - if ( frequency == 0 ) { - frequency = station.frequency(); - } - - QString text = ""; - if ( station.isValid() && !station.name().isEmpty() ) { - text = station.name(); - } else { - text = parseFrequency( frequency ); - } - - return text; -}