src/hbwidgets/sliders/hbprogressslider.cpp
changeset 21 4633027730f5
parent 6 c3690ec91ef8
child 23 e6ad4ef83b23
--- a/src/hbwidgets/sliders/hbprogressslider.cpp	Tue Jul 06 14:36:53 2010 +0300
+++ b/src/hbwidgets/sliders/hbprogressslider.cpp	Wed Aug 18 10:05:37 2010 +0300
@@ -45,6 +45,7 @@
     handle = 0;
     mSliderValue = 0;
     mHandlePath.clear();
+    mToolTipTextVisibleUser = false;
 }
 
 HbProgressSliderPrivate::~HbProgressSliderPrivate()
@@ -53,7 +54,10 @@
         delete handle;
     }
 }
-
+bool HbProgressSliderPrivate::textVisible() const
+{
+    return mToolTipTextVisibleUser;
+}
 void HbProgressSliderPrivate::setProgressValue(int value)
 {
    Q_Q(HbProgressSlider);
@@ -76,7 +80,7 @@
     HbStyleOptionProgressSlider sliderOption;
     q->initStyleOption(&sliderOption);
     if(mTrack) {
-        q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &sliderOption);
+        HbStylePrivate::updatePrimitive(mTrack, HbStylePrivate::P_ProgressSlider_track, &sliderOption);
     }
 
     emit q->valueChanged(value);
@@ -85,7 +89,7 @@
 void HbProgressSliderPrivate::setEnableFlag(bool flag)
 {
     Q_Q(HbProgressSlider);
-	Q_UNUSED(flag);
+    Q_UNUSED(flag);
     HbStyleOptionProgressSlider option;
     q->initStyleOption(&option);
     q->updatePrimitives();
@@ -95,9 +99,9 @@
 {
     Q_Q(HbProgressSlider);
 
-    mSliderGraphicItem  = q->style()->createPrimitive(HbStyle::P_ProgressSlider_slidertrack,mFrame);
+    mSliderGraphicItem  = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressSlider_slidertrack,mFrame);
     // Show the touch area which is created in ProgressBar//
-    mTouchAreaItem = q->style()->createPrimitive(HbStyle::P_ProgressSlider_toucharea,q);
+    mTouchAreaItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressSlider_toucharea,q);
     mFrame->setZValue(mTouchAreaItem->zValue()+1);
 
 #ifdef HB_EFFECTS
@@ -195,7 +199,7 @@
 
 void HbProgressSliderPrivate::setRange(int minimum, int maximum)
 {
-	Q_Q(HbProgressSlider);
+    Q_Q(HbProgressSlider);
     if( minimum > maximum ){
         maximum = minimum ;
     }
@@ -214,14 +218,14 @@
     q->initStyleOption(&progressSliderOption);
 
     if (mSliderGraphicItem) {
-            q->style()->updatePrimitive(mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &progressSliderOption);
+            HbStylePrivate::updatePrimitive(mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &progressSliderOption);
     }
 
     if (mTrack) {
-            q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &progressSliderOption);
+            HbStylePrivate::updatePrimitive(mTrack, HbStylePrivate::P_ProgressSlider_track, &progressSliderOption);
      }
     
-	q->setSliderValue(mSliderValue);
+    q->setSliderValue(mSliderValue);
 }
 
 /*!
@@ -377,7 +381,7 @@
     initStyleOption(&option);
 
     if (d->mSliderGraphicItem) {
-        style()->updatePrimitive(d->mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &option);
+        HbStylePrivate::updatePrimitive(d->mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &option);
     }
     d->handle->setHandlePosForValue(sliderValue());
 }
@@ -447,11 +451,12 @@
         HbStyleOptionProgressSlider option;
         initStyleOption(&option);
         if (d->mFrame) {
-            style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
+            HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
         }
         
         HbWidgetFeedback::triggered(this, Hb::InstantPressed);
         d->handle->handleTrackPress(event);
+		emit trackPressed();
         event->accept();
         #ifdef HB_EFFECTS
             HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress");
@@ -474,11 +479,12 @@
         HbStyleOptionProgressSlider option;
         initStyleOption(&option);
         if (d->mFrame) {
-            style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
+            HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
         }
 
         HbWidgetFeedback::triggered(this, Hb::InstantReleased);
         d->handle->handleTrackRelease(event);
+		emit trackReleased();
         event->accept();
 #ifdef HB_EFFECTS
         HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease");
@@ -530,26 +536,26 @@
         initStyleOption(&option);
 
         if (d->mSliderGraphicItem) {
-            style()->updatePrimitive(d->mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &option);
+            HbStylePrivate::updatePrimitive(d->mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &option);
         }
 
         if(d->handle)
               d->handle->setHandlePosForValue(sliderValue());
     
         if (d->mFrame) {
-            style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
+            HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
         }
      
         if (d->mTrack) {
-                style()->updatePrimitive(d->mTrack, HbStyle::P_ProgressSlider_track, &option);
+                HbStylePrivate::updatePrimitive(d->mTrack, HbStylePrivate::P_ProgressSlider_track, &option);
         }
                 
         if(d->mMinTextItem && d->mMinMaxTextVisible) {
-            style()->updatePrimitive(d->mMinTextItem,HbStyle::P_ProgressBar_mintext,&option);    
+            HbStylePrivate::updatePrimitive(d->mMinTextItem,HbStylePrivate::P_ProgressBar_mintext,&option);    
         }
 
         if(d->mMaxTextItem && d->mMinMaxTextVisible) {
-            style()->updatePrimitive(d->mMaxTextItem,HbStyle::P_ProgressBar_maxtext,&option);    
+            HbStylePrivate::updatePrimitive(d->mMaxTextItem,HbStylePrivate::P_ProgressBar_maxtext,&option);    
         }
     }
 }
@@ -589,6 +595,27 @@
 /*!
     \reimp
  */
+void HbProgressSlider::mouseMoveEvent(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->handle->handleTrackPress(event);
+        event->accept();
+    } else {
+        event->ignore();
+    }
+
+}
+/*!
+    \reimp
+ */
 bool HbProgressSlider::sceneEventFilter(QGraphicsItem *obj,QEvent *event)
 {
     Q_D(HbProgressSlider);
@@ -604,6 +631,11 @@
             mouseReleaseEvent((QGraphicsSceneMouseEvent *) event);
             return true;
         }
+
+		else if (event->type() == QEvent::GraphicsSceneMouseMove){
+            mouseMoveEvent((QGraphicsSceneMouseEvent *) event);
+            return true;
+        }
     } 
     return false;
 }
@@ -612,7 +644,8 @@
 /*!
     @beta
     Sets the tooltip for the Slider handle. By default it shows the slider value.
-    The application can customize the tooltip text using this API.
+    The application can customize the tooltip text using this API. setting NULL string
+    will disable the tooltip.
 
     \param text tooltip text
 
@@ -622,6 +655,7 @@
 {
     Q_D(HbProgressSlider);
     d->mTooltipText = text;
+    d->mToolTipTextVisibleUser = true;
 }
 
 
@@ -684,16 +718,16 @@
     Q_D(const HbProgressSlider);
 
     switch (primitive) {
-        case HbStyle::P_ProgressSlider_frame:
+        case HbStylePrivate::P_ProgressSlider_frame:
             return d->mFrame;
-        case HbStyle::P_ProgressSlider_track:
+        case HbStylePrivate::P_ProgressSlider_track:
             return d->mTrack;
-        case HbStyle::P_ProgressSlider_slidertrack:
+        case HbStylePrivate::P_ProgressSlider_slidertrack:
             return d->mSliderGraphicItem;
-        case HbStyle::P_ProgressSlider_toucharea:
+        case HbStylePrivate::P_ProgressSlider_toucharea:
             return d->mTouchAreaItem; 
-        case HbStyle::P_ProgressSliderHandle_icon:
-        case HbStyle::P_ProgressSliderHandle_toucharea:
+        case HbStylePrivate::P_ProgressSliderHandle_icon:
+        case HbStylePrivate::P_ProgressSliderHandle_toucharea:
             return d->handle->primitive(primitive);
         default:
             return 0;