radioapp/radiowidgets/src/radiofrequencystripbase.cpp
changeset 57 21be958eb3ce
parent 54 a8ba0c289b44
--- 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 <HbDocumentLoader>
@@ -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<uint>& frequencies )
 {
-    Q_UNUSED( parent );
-    updateStationsInRange( first, last, true );
+    QList<uint>::const_iterator end = frequencies.constEnd();
+    QSet<RadioFrequencyItem*> freqItems;
+    // go frequencies list throught and fetch all frequencyItems required. Duplicates will be removed
+    // using set to prevent unneccessary item updates.
+    for( QList<uint>::const_iterator iter = frequencies.constBegin(); iter != end; ++iter ) {
+        freqItems.insert( mFrequencies.value( *iter ).mItem );                
+    }
+    QSet<RadioFrequencyItem*>::const_iterator setEnd = freqItems.constEnd();
+    QSet<RadioFrequencyItem*>::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 );
 }
 
 /*!