src/hbwidgets/sliders/hbprogressslider.cpp
changeset 6 c3690ec91ef8
parent 5 627c4a0fd0e7
child 21 4633027730f5
child 34 ed14f46c0e55
--- a/src/hbwidgets/sliders/hbprogressslider.cpp	Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbprogressslider.cpp	Wed Jun 23 18:33:25 2010 +0300
@@ -23,9 +23,8 @@
 **
 ****************************************************************************/
 
+#include "hbprogressslider_p.h"
 #include <hbprogressslider.h>
-#include "hbprogressslider_p.h"
-
 #include <hbstyleoptionprogressslider_p.h>
 #include <hbtooltip.h>
 #include <hbwidgetfeedback.h>
@@ -45,7 +44,7 @@
     mDownState=false;
     handle = 0;
     mSliderValue = 0;
-    mHandlePath = QString();
+    mHandlePath.clear();
 }
 
 HbProgressSliderPrivate::~HbProgressSliderPrivate()
@@ -86,17 +85,10 @@
 void HbProgressSliderPrivate::setEnableFlag(bool flag)
 {
     Q_Q(HbProgressSlider);
-    
+	Q_UNUSED(flag);
     HbStyleOptionProgressSlider option;
     q->initStyleOption(&option);
-    
-    if(!flag) {
-        q->setProgressValue(q->minimum());
-        q->setSliderValue(q->minimum());
-    }
-    if (mFrame) {
-            q->style()->updatePrimitive(mFrame, HbStyle::P_ProgressSlider_frame, &option);          
-    }
+    q->updatePrimitives();
 }
 
 void HbProgressSliderPrivate::init()
@@ -203,9 +195,33 @@
 
 void HbProgressSliderPrivate::setRange(int minimum, int maximum)
 {
-    Q_Q( HbProgressSlider );
-    HbProgressBarPrivate::setRange(minimum, maximum);
-    q->setSliderValue(mSliderValue);
+	Q_Q(HbProgressSlider);
+    if( minimum > maximum ){
+        maximum = minimum ;
+    }
+    mMinimum = minimum;
+    mMaximum = maximum;
+
+    if ( mProgressValue < mMinimum){
+        mProgressValue = mMinimum;
+    }
+
+    if(mProgressValue > mMaximum){
+        mProgressValue = mMaximum;
+    }
+
+    HbStyleOptionProgressSlider progressSliderOption;
+    q->initStyleOption(&progressSliderOption);
+
+    if (mSliderGraphicItem) {
+            q->style()->updatePrimitive(mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &progressSliderOption);
+    }
+
+    if (mTrack) {
+            q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &progressSliderOption);
+     }
+    
+	q->setSliderValue(mSliderValue);
 }
 
 /*!
@@ -395,7 +411,7 @@
 
 /*!
     @beta
-    Sets the inverted appearence of the slider.
+    Sets the inverted appearance of the slider.
     If inverted the slider increases from right to left.
 
     \param inverted true or false
@@ -418,6 +434,14 @@
 void HbProgressSlider::mousePressEvent(QGraphicsSceneMouseEvent *event) 
 {
     Q_D(HbProgressSlider);
+ 
+    QRectF rect = d->mTouchAreaItem->sceneBoundingRect( );
+    // return if point is outside track touch area
+    if ( !rect.contains( event->scenePos( ) ) ) {
+        event->ignore( );
+        return;
+    }
+
     if(flags().testFlag(ItemIsFocusable)) {
         d->mDownState = true;
         HbStyleOptionProgressSlider option;
@@ -425,14 +449,6 @@
         if (d->mFrame) {
             style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
         }
-        qreal temp = event->scenePos().x();
-        if((d->mMinMaxTextVisible) && (d->mMinMaxTextAlignment== Qt::AlignCenter)) {
-            temp -=  d->mMinTextItem->boundingRect().width();
-        }
-        if( (temp > d->handle->pos().x()) && (temp < (d->handle->boundingRect().width()+d->handle->pos().x())) ) {
-            event->ignore();
-            return;
-        }
         
         HbWidgetFeedback::triggered(this, Hb::InstantPressed);
         d->handle->handleTrackPress(event);
@@ -444,12 +460,14 @@
         event->ignore();
     }
 }
+
 /*!
     \reimp
  */
 void HbProgressSlider::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) 
 {
     Q_D(HbProgressSlider);
+
     if(flags().testFlag(ItemIsFocusable)) {
         d->mDownState = false;