diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiofrequencystripbase.cpp --- a/radioapp/radiowidgets/src/radiofrequencystripbase.cpp Tue Oct 12 11:25:14 2010 +0300 +++ b/radioapp/radiowidgets/src/radiofrequencystripbase.cpp Fri Oct 15 16:26:27 2010 +0300 @@ -1,19 +1,19 @@ /* -* 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: -* -*/ + * 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 @@ -71,11 +71,11 @@ */ RadioFrequencyStripBase::RadioFrequencyStripBase( QGraphicsItem* parent ) : RadioStripBase( parent ), - mItemHeight( 8 ), - mMinFrequency( 87500000 ), - mMaxFrequency( 108000000 ), - mFrequencyStepSize( 100000 ), - mFrequency( 87500000 ), + mItemHeight( FrequencyStrip::DEFAULT_ITEM_HEIGHT_UNITS ), + mMinFrequency( FrequencyStrip::DEFAULT_MIN_FREQUENCY ), + mMaxFrequency( FrequencyStrip::DEFAULT_MAX_FREQUENCY ), + mFrequencyStepSize( FrequencyStrip::DEFAULT_FREQUENCY_STEP ), + mFrequency( FrequencyStrip::DEFAULT_MIN_FREQUENCY ), mSelectorImage( new QGraphicsPixmapItem( this ) ), mSeparatorPos( 0.0 ), mMaxWidth( 0 ), @@ -86,12 +86,20 @@ mManualSeekMode( false ), mLastReportedFrequency( 0 ), mManualSeekTimerId( 0 ), - mForegroundColor( Qt::white ),//HbColorScheme::color( FrequencyStrip::TEXT_COLOR_ATTRIBUTE ) ) + mForegroundColor( HbColorScheme::color( FrequencyStrip::TEXT_COLOR_ATTRIBUTE ) ), mIgnoreScrollingEnd( false ) { } /*! + * + */ +RadioFrequencyStripBase::~RadioFrequencyStripBase() +{ + qDeleteAll( mFrequencyItems ); +} + +/*! * Property */ void RadioFrequencyStripBase::setItemHeight( int itemHeight ) @@ -125,6 +133,11 @@ setOverlap( FrequencyStrip::PIXMAP_OVERLAP / 2 ); + mStationIcon.setIconName("qtg_graf_tuner_unselected"); + mFavoriteIcon.setIconName("qtg_graf_tuner_selected"); + mStationIcon.setSize( QSizeF( FrequencyStrip::STATION_MARKER_SIZE, FrequencyStrip::STATION_MARKER_SIZE ) ); + mFavoriteIcon.setSize( QSizeF( FrequencyStrip::STATION_MARKER_SIZE, FrequencyStrip::STATION_MARKER_SIZE ) ); + initModel(); initEmptyItems(); initPositions(); @@ -271,10 +284,20 @@ * Private slot * */ -void RadioFrequencyStripBase::removeStation( const QModelIndex& parent, int first, int last ) +void RadioFrequencyStripBase::stationsRemoved( const QList& frequencies ) { - Q_UNUSED( parent ); - updateStationsInRange( first, last, true ); + QList::const_iterator end = frequencies.constEnd(); + QSet freqItems; + // go frequencies list throught and fetch all frequencyItems required. Duplicates will be removed + // using set to prevent unneccessary item updates. + for( QList::const_iterator iter = frequencies.constBegin(); iter != end; ++iter ) { + freqItems.insert( mFrequencies.value( *iter ).mItem ); + } + QSet::const_iterator setEnd = freqItems.constEnd(); + QSet::const_iterator setIter = freqItems.constBegin(); + for( ; setIter != setEnd; ++setIter ) { + updateItem( *setIter, 0, 0 ); + } } /*! @@ -355,10 +378,10 @@ if ( mManualSeekMode ) { if ( !mPositions.contains( selectorPosition ) ) { if ( selectorPosition < mMaxWidth - FrequencyStrip::ITEM_WIDTH + mSeparatorPos ) { - scrollToFrequency( mMaxFrequency, Scroll::Shortest, 500 ); + scrollToFrequency( mMaxFrequency, Scroll::Shortest, FrequencyStrip::POS_ADJUST_DELAY_MS ); emitFrequencyChanged( mMaxFrequency, FrequencyStrip::ManualSeekUpdate, Scroll::Shortest ); } else { - scrollToFrequency( mMinFrequency, Scroll::Shortest, 500 ); + scrollToFrequency( mMinFrequency, Scroll::Shortest, FrequencyStrip::POS_ADJUST_DELAY_MS ); emitFrequencyChanged( mMinFrequency, FrequencyStrip::ManualSeekUpdate, Scroll::Shortest ); } } @@ -495,7 +518,7 @@ */ void RadioFrequencyStripBase::timerEvent( QTimerEvent* event ) { - Q_UNUSED( event ); + RadioStripBase::timerEvent( event ); if ( mLastReportedFrequency != mFrequency ) { mLastReportedFrequency = mFrequency; emitFrequencyChanged( mFrequency, FrequencyStrip::ManualSeekTune, Scroll::Shortest ); @@ -521,7 +544,7 @@ mMaxWidth = list.count() * FrequencyStrip::ITEM_WIDTH; mSeparatorPos = qreal(FrequencyStrip::ITEM_WIDTH) / 2; - const uint minDrawableFreq = minFreq * FrequencyStrip::ONE_HERTZ - FrequencyStrip::HALF_HERTZ;; + const uint minDrawableFreq = minFreq * FrequencyStrip::ONE_HERTZ - FrequencyStrip::HALF_HERTZ; const uint maxDrawableFreq = maxFreq * FrequencyStrip::ONE_HERTZ + FrequencyStrip::HALF_HERTZ; mSeparatorPos += qreal( ( mMinFrequency - minDrawableFreq ) / 2 ) / FrequencyStrip::PIXEL_IN_HZ; mSeparatorPos -= qreal( ( maxDrawableFreq - mMaxFrequency ) / 2 ) / FrequencyStrip::PIXEL_IN_HZ; @@ -689,9 +712,8 @@ QPainter painter( &pixmap ); QPen normalPen = painter.pen(); - QPen favoritePen = normalPen; - normalPen.setColor( mForegroundColor ); - painter.setPen( normalPen ); + normalPen.setColor(mForegroundColor); + painter.setPen(normalPen); const uint frequencyIncrement = qMin( mFrequencyStepSize, FrequencyStrip::ONE_HUNDRED_KHZ ); const QString itemText = QString::number( mainFrequency / FrequencyStrip::ONE_HERTZ ); @@ -739,24 +761,17 @@ } } - // Draw favorites and local stations - favoritePen.setColor( Qt::yellow ); - const int markerYPos = mItemHeight - 18; + const int markerHalf = FrequencyStrip::STATION_MARKER_SIZE / 2; foreach ( const FrequencyStrip::StationMarker& station, stations ) { const uint frequency = station.mFrequency; - pixels = qreal( frequency - startFrequency ) / FrequencyStrip::PIXEL_IN_HZ; + pixels = qreal(frequency - startFrequency) / FrequencyStrip::PIXEL_IN_HZ; + const QPoint point( int(pixels + leftOverlap - markerHalf ), markerYPos - markerHalf ); if ( station.mIsFavorite ) { - favoritePen.setWidth( FrequencyStrip::PEN_WIDTH_FAVORITE ); - painter.setPen( favoritePen ); - painter.drawEllipse( int( pixels + leftOverlap - 3 ), markerYPos - 3, 6, 6 ); -// painter.drawEllipse( int( pixels + leftOverlap - 3 ), FrequencyStrip::STATION_MARKER_Y_POS - 3, 6, 6 ); + painter.drawPixmap( point, mFavoriteIcon.pixmap() ); } else { - favoritePen.setWidth( 1 ); - painter.setPen( favoritePen ); - painter.drawEllipse( int( pixels + leftOverlap - 4 ), markerYPos - 4, 8, 8 ); -// painter.drawEllipse( int( pixels + leftOverlap - 4 ), FrequencyStrip::STATION_MARKER_Y_POS - 4, 8, 8 ); + painter.drawPixmap( point, mStationIcon.pixmap() ); } } @@ -825,9 +840,7 @@ newPos -= mSelectorPos - FrequencyStrip::ROUNDER; -// scrollContentsTo( QPointF( newPos, 0 ), time ); -// TODO: Remove this and uncomment the above line. This is a temporary workaround to get the strip to move - scrollContentsTo( QPointF( newPos, 0 ), 0 ); + scrollContentsTo( QPointF( newPos, 0 ), time ); } /*!