src/hbwidgets/sliders/hbprogressslider.cpp
changeset 21 4633027730f5
parent 6 c3690ec91ef8
child 23 e6ad4ef83b23
equal deleted inserted replaced
7:923ff622b8b9 21:4633027730f5
    43 {
    43 {
    44     mDownState=false;
    44     mDownState=false;
    45     handle = 0;
    45     handle = 0;
    46     mSliderValue = 0;
    46     mSliderValue = 0;
    47     mHandlePath.clear();
    47     mHandlePath.clear();
       
    48     mToolTipTextVisibleUser = false;
    48 }
    49 }
    49 
    50 
    50 HbProgressSliderPrivate::~HbProgressSliderPrivate()
    51 HbProgressSliderPrivate::~HbProgressSliderPrivate()
    51 {
    52 {
    52     if (handle) {
    53     if (handle) {
    53         delete handle;
    54         delete handle;
    54     }
    55     }
    55 }
    56 }
    56 
    57 bool HbProgressSliderPrivate::textVisible() const
       
    58 {
       
    59     return mToolTipTextVisibleUser;
       
    60 }
    57 void HbProgressSliderPrivate::setProgressValue(int value)
    61 void HbProgressSliderPrivate::setProgressValue(int value)
    58 {
    62 {
    59    Q_Q(HbProgressSlider);
    63    Q_Q(HbProgressSlider);
    60    if (mProgressValue == value) {
    64    if (mProgressValue == value) {
    61         return;
    65         return;
    74 
    78 
    75     //redraw track
    79     //redraw track
    76     HbStyleOptionProgressSlider sliderOption;
    80     HbStyleOptionProgressSlider sliderOption;
    77     q->initStyleOption(&sliderOption);
    81     q->initStyleOption(&sliderOption);
    78     if(mTrack) {
    82     if(mTrack) {
    79         q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &sliderOption);
    83         HbStylePrivate::updatePrimitive(mTrack, HbStylePrivate::P_ProgressSlider_track, &sliderOption);
    80     }
    84     }
    81 
    85 
    82     emit q->valueChanged(value);
    86     emit q->valueChanged(value);
    83 }
    87 }
    84 
    88 
    85 void HbProgressSliderPrivate::setEnableFlag(bool flag)
    89 void HbProgressSliderPrivate::setEnableFlag(bool flag)
    86 {
    90 {
    87     Q_Q(HbProgressSlider);
    91     Q_Q(HbProgressSlider);
    88 	Q_UNUSED(flag);
    92     Q_UNUSED(flag);
    89     HbStyleOptionProgressSlider option;
    93     HbStyleOptionProgressSlider option;
    90     q->initStyleOption(&option);
    94     q->initStyleOption(&option);
    91     q->updatePrimitives();
    95     q->updatePrimitives();
    92 }
    96 }
    93 
    97 
    94 void HbProgressSliderPrivate::init()
    98 void HbProgressSliderPrivate::init()
    95 {
    99 {
    96     Q_Q(HbProgressSlider);
   100     Q_Q(HbProgressSlider);
    97 
   101 
    98     mSliderGraphicItem  = q->style()->createPrimitive(HbStyle::P_ProgressSlider_slidertrack,mFrame);
   102     mSliderGraphicItem  = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressSlider_slidertrack,mFrame);
    99     // Show the touch area which is created in ProgressBar//
   103     // Show the touch area which is created in ProgressBar//
   100     mTouchAreaItem = q->style()->createPrimitive(HbStyle::P_ProgressSlider_toucharea,q);
   104     mTouchAreaItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressSlider_toucharea,q);
   101     mFrame->setZValue(mTouchAreaItem->zValue()+1);
   105     mFrame->setZValue(mTouchAreaItem->zValue()+1);
   102 
   106 
   103 #ifdef HB_EFFECTS
   107 #ifdef HB_EFFECTS
   104     HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackpress", "progressslider_trackpress");
   108     HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackpress", "progressslider_trackpress");
   105     HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackrelease", "progressslider_trackrelease");
   109     HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackrelease", "progressslider_trackrelease");
   193     return mOrientation;
   197     return mOrientation;
   194 }
   198 }
   195 
   199 
   196 void HbProgressSliderPrivate::setRange(int minimum, int maximum)
   200 void HbProgressSliderPrivate::setRange(int minimum, int maximum)
   197 {
   201 {
   198 	Q_Q(HbProgressSlider);
   202     Q_Q(HbProgressSlider);
   199     if( minimum > maximum ){
   203     if( minimum > maximum ){
   200         maximum = minimum ;
   204         maximum = minimum ;
   201     }
   205     }
   202     mMinimum = minimum;
   206     mMinimum = minimum;
   203     mMaximum = maximum;
   207     mMaximum = maximum;
   212 
   216 
   213     HbStyleOptionProgressSlider progressSliderOption;
   217     HbStyleOptionProgressSlider progressSliderOption;
   214     q->initStyleOption(&progressSliderOption);
   218     q->initStyleOption(&progressSliderOption);
   215 
   219 
   216     if (mSliderGraphicItem) {
   220     if (mSliderGraphicItem) {
   217             q->style()->updatePrimitive(mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &progressSliderOption);
   221             HbStylePrivate::updatePrimitive(mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &progressSliderOption);
   218     }
   222     }
   219 
   223 
   220     if (mTrack) {
   224     if (mTrack) {
   221             q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &progressSliderOption);
   225             HbStylePrivate::updatePrimitive(mTrack, HbStylePrivate::P_ProgressSlider_track, &progressSliderOption);
   222      }
   226      }
   223     
   227     
   224 	q->setSliderValue(mSliderValue);
   228     q->setSliderValue(mSliderValue);
   225 }
   229 }
   226 
   230 
   227 /*!
   231 /*!
   228     @beta
   232     @beta
   229     @hbwidgets
   233     @hbwidgets
   375 
   379 
   376     HbStyleOptionProgressSlider option;
   380     HbStyleOptionProgressSlider option;
   377     initStyleOption(&option);
   381     initStyleOption(&option);
   378 
   382 
   379     if (d->mSliderGraphicItem) {
   383     if (d->mSliderGraphicItem) {
   380         style()->updatePrimitive(d->mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &option);
   384         HbStylePrivate::updatePrimitive(d->mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &option);
   381     }
   385     }
   382     d->handle->setHandlePosForValue(sliderValue());
   386     d->handle->setHandlePosForValue(sliderValue());
   383 }
   387 }
   384 
   388 
   385 /*!
   389 /*!
   445     if(flags().testFlag(ItemIsFocusable)) {
   449     if(flags().testFlag(ItemIsFocusable)) {
   446         d->mDownState = true;
   450         d->mDownState = true;
   447         HbStyleOptionProgressSlider option;
   451         HbStyleOptionProgressSlider option;
   448         initStyleOption(&option);
   452         initStyleOption(&option);
   449         if (d->mFrame) {
   453         if (d->mFrame) {
   450             style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
   454             HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
   451         }
   455         }
   452         
   456         
   453         HbWidgetFeedback::triggered(this, Hb::InstantPressed);
   457         HbWidgetFeedback::triggered(this, Hb::InstantPressed);
   454         d->handle->handleTrackPress(event);
   458         d->handle->handleTrackPress(event);
       
   459 		emit trackPressed();
   455         event->accept();
   460         event->accept();
   456         #ifdef HB_EFFECTS
   461         #ifdef HB_EFFECTS
   457             HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress");
   462             HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress");
   458         #endif
   463         #endif
   459     } else {
   464     } else {
   472         d->mDownState = false;
   477         d->mDownState = false;
   473 
   478 
   474         HbStyleOptionProgressSlider option;
   479         HbStyleOptionProgressSlider option;
   475         initStyleOption(&option);
   480         initStyleOption(&option);
   476         if (d->mFrame) {
   481         if (d->mFrame) {
   477             style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
   482             HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
   478         }
   483         }
   479 
   484 
   480         HbWidgetFeedback::triggered(this, Hb::InstantReleased);
   485         HbWidgetFeedback::triggered(this, Hb::InstantReleased);
   481         d->handle->handleTrackRelease(event);
   486         d->handle->handleTrackRelease(event);
       
   487 		emit trackReleased();
   482         event->accept();
   488         event->accept();
   483 #ifdef HB_EFFECTS
   489 #ifdef HB_EFFECTS
   484         HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease");
   490         HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease");
   485 #endif
   491 #endif
   486     } else {
   492     } else {
   528 
   534 
   529         HbStyleOptionProgressSlider option;
   535         HbStyleOptionProgressSlider option;
   530         initStyleOption(&option);
   536         initStyleOption(&option);
   531 
   537 
   532         if (d->mSliderGraphicItem) {
   538         if (d->mSliderGraphicItem) {
   533             style()->updatePrimitive(d->mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &option);
   539             HbStylePrivate::updatePrimitive(d->mSliderGraphicItem, HbStylePrivate::P_ProgressSlider_slidertrack, &option);
   534         }
   540         }
   535 
   541 
   536         if(d->handle)
   542         if(d->handle)
   537               d->handle->setHandlePosForValue(sliderValue());
   543               d->handle->setHandlePosForValue(sliderValue());
   538     
   544     
   539         if (d->mFrame) {
   545         if (d->mFrame) {
   540             style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);          
   546             HbStylePrivate::updatePrimitive(d->mFrame, HbStylePrivate::P_ProgressSlider_frame, &option);          
   541         }
   547         }
   542      
   548      
   543         if (d->mTrack) {
   549         if (d->mTrack) {
   544                 style()->updatePrimitive(d->mTrack, HbStyle::P_ProgressSlider_track, &option);
   550                 HbStylePrivate::updatePrimitive(d->mTrack, HbStylePrivate::P_ProgressSlider_track, &option);
   545         }
   551         }
   546                 
   552                 
   547         if(d->mMinTextItem && d->mMinMaxTextVisible) {
   553         if(d->mMinTextItem && d->mMinMaxTextVisible) {
   548             style()->updatePrimitive(d->mMinTextItem,HbStyle::P_ProgressBar_mintext,&option);    
   554             HbStylePrivate::updatePrimitive(d->mMinTextItem,HbStylePrivate::P_ProgressBar_mintext,&option);    
   549         }
   555         }
   550 
   556 
   551         if(d->mMaxTextItem && d->mMinMaxTextVisible) {
   557         if(d->mMaxTextItem && d->mMinMaxTextVisible) {
   552             style()->updatePrimitive(d->mMaxTextItem,HbStyle::P_ProgressBar_maxtext,&option);    
   558             HbStylePrivate::updatePrimitive(d->mMaxTextItem,HbStylePrivate::P_ProgressBar_maxtext,&option);    
   553         }
   559         }
   554     }
   560     }
   555 }
   561 }
   556 /*!
   562 /*!
   557     \reimp
   563     \reimp
   587     return HbProgressBar::itemChange(change, value);
   593     return HbProgressBar::itemChange(change, value);
   588 }
   594 }
   589 /*!
   595 /*!
   590     \reimp
   596     \reimp
   591  */
   597  */
       
   598 void HbProgressSlider::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
       
   599 {
       
   600     Q_D(HbProgressSlider); 
       
   601     QRectF rect = d->mTouchAreaItem->sceneBoundingRect( );
       
   602     // return if point is outside track touch area
       
   603     if ( !rect.contains( event->scenePos( ) ) ) {
       
   604         event->ignore( );
       
   605         return;
       
   606     }
       
   607 
       
   608     if(flags().testFlag(ItemIsFocusable)) {
       
   609         d->handle->handleTrackPress(event);
       
   610         event->accept();
       
   611     } else {
       
   612         event->ignore();
       
   613     }
       
   614 
       
   615 }
       
   616 /*!
       
   617     \reimp
       
   618  */
   592 bool HbProgressSlider::sceneEventFilter(QGraphicsItem *obj,QEvent *event)
   619 bool HbProgressSlider::sceneEventFilter(QGraphicsItem *obj,QEvent *event)
   593 {
   620 {
   594     Q_D(HbProgressSlider);
   621     Q_D(HbProgressSlider);
   595     if( obj == d->mTouchAreaItem) {
   622     if( obj == d->mTouchAreaItem) {
   596        if (!isEnabled() ) {
   623        if (!isEnabled() ) {
   602         }
   629         }
   603         else if (event->type() == QEvent::GraphicsSceneMouseRelease){
   630         else if (event->type() == QEvent::GraphicsSceneMouseRelease){
   604             mouseReleaseEvent((QGraphicsSceneMouseEvent *) event);
   631             mouseReleaseEvent((QGraphicsSceneMouseEvent *) event);
   605             return true;
   632             return true;
   606         }
   633         }
       
   634 
       
   635 		else if (event->type() == QEvent::GraphicsSceneMouseMove){
       
   636             mouseMoveEvent((QGraphicsSceneMouseEvent *) event);
       
   637             return true;
       
   638         }
   607     } 
   639     } 
   608     return false;
   640     return false;
   609 }
   641 }
   610 
   642 
   611 
   643 
   612 /*!
   644 /*!
   613     @beta
   645     @beta
   614     Sets the tooltip for the Slider handle. By default it shows the slider value.
   646     Sets the tooltip for the Slider handle. By default it shows the slider value.
   615     The application can customize the tooltip text using this API.
   647     The application can customize the tooltip text using this API. setting NULL string
       
   648     will disable the tooltip.
   616 
   649 
   617     \param text tooltip text
   650     \param text tooltip text
   618 
   651 
   619     \sa sliderToolTip()
   652     \sa sliderToolTip()
   620 */
   653 */
   621 void HbProgressSlider::setSliderToolTip(const QString &text)
   654 void HbProgressSlider::setSliderToolTip(const QString &text)
   622 {
   655 {
   623     Q_D(HbProgressSlider);
   656     Q_D(HbProgressSlider);
   624     d->mTooltipText = text;
   657     d->mTooltipText = text;
       
   658     d->mToolTipTextVisibleUser = true;
   625 }
   659 }
   626 
   660 
   627 
   661 
   628 /*!
   662 /*!
   629     @beta
   663     @beta
   682 QGraphicsItem* HbProgressSlider::primitive(HbStyle::Primitive primitive) const
   716 QGraphicsItem* HbProgressSlider::primitive(HbStyle::Primitive primitive) const
   683 {
   717 {
   684     Q_D(const HbProgressSlider);
   718     Q_D(const HbProgressSlider);
   685 
   719 
   686     switch (primitive) {
   720     switch (primitive) {
   687         case HbStyle::P_ProgressSlider_frame:
   721         case HbStylePrivate::P_ProgressSlider_frame:
   688             return d->mFrame;
   722             return d->mFrame;
   689         case HbStyle::P_ProgressSlider_track:
   723         case HbStylePrivate::P_ProgressSlider_track:
   690             return d->mTrack;
   724             return d->mTrack;
   691         case HbStyle::P_ProgressSlider_slidertrack:
   725         case HbStylePrivate::P_ProgressSlider_slidertrack:
   692             return d->mSliderGraphicItem;
   726             return d->mSliderGraphicItem;
   693         case HbStyle::P_ProgressSlider_toucharea:
   727         case HbStylePrivate::P_ProgressSlider_toucharea:
   694             return d->mTouchAreaItem; 
   728             return d->mTouchAreaItem; 
   695         case HbStyle::P_ProgressSliderHandle_icon:
   729         case HbStylePrivate::P_ProgressSliderHandle_icon:
   696         case HbStyle::P_ProgressSliderHandle_toucharea:
   730         case HbStylePrivate::P_ProgressSliderHandle_toucharea:
   697             return d->handle->primitive(primitive);
   731             return d->handle->primitive(primitive);
   698         default:
   732         default:
   699             return 0;
   733             return 0;
   700     }
   734     }
   701 }
   735 }