diff -r 627c4a0fd0e7 -r c3690ec91ef8 src/hbwidgets/sliders/hbprogressslider.cpp --- 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 -#include "hbprogressslider_p.h" - #include #include #include @@ -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;