24 ****************************************************************************/ |
24 ****************************************************************************/ |
25 |
25 |
26 #include "hbprogressslider_p.h" |
26 #include "hbprogressslider_p.h" |
27 #include <hbprogressslider.h> |
27 #include <hbprogressslider.h> |
28 #include <hbstyleoptionprogressslider_p.h> |
28 #include <hbstyleoptionprogressslider_p.h> |
|
29 #include "hbprogresstrackitem_p.h" |
29 #include <hbtooltip.h> |
30 #include <hbtooltip.h> |
30 #include <hbwidgetfeedback.h> |
31 #include <hbwidgetfeedback.h> |
31 #include "hbglobal_p.h" |
32 #include "hbglobal_p.h" |
32 |
33 #include <hbtoucharea.h> |
33 #include <QGraphicsSceneMouseEvent> |
34 #include <QGraphicsSceneMouseEvent> |
34 #include <QApplication> |
35 #include <QApplication> |
35 |
36 |
36 #ifdef HB_EFFECTS |
37 #ifdef HB_EFFECTS |
37 #include <hbeffect.h> |
38 #include <hbeffect.h> |
38 #include "hbeffectinternal_p.h" |
39 #include "hbeffectinternal_p.h" |
39 #define HB_PRGRESSSLIDER_ITEM_TYPE "HB_PROGRESSSLIDER" |
40 #define HB_PRGRESSSLIDER_ITEM_TYPE "HB_PROGRESSSLIDER" |
40 #endif |
41 #endif |
41 |
42 |
|
43 #ifdef HB_GESTURE_FW |
|
44 #include <hbtapgesture.h> |
|
45 #endif |
|
46 |
42 HbProgressSliderPrivate::HbProgressSliderPrivate() |
47 HbProgressSliderPrivate::HbProgressSliderPrivate() |
43 { |
48 { |
44 mDownState=false; |
49 mDownState=false; |
45 handle = 0; |
50 handle = 0; |
46 mSliderValue = 0; |
51 mSliderValue = 0; |
47 mHandlePath.clear(); |
52 mHandlePath.clear(); |
|
53 mToolTipTextVisibleUser = false; |
48 } |
54 } |
49 |
55 |
50 HbProgressSliderPrivate::~HbProgressSliderPrivate() |
56 HbProgressSliderPrivate::~HbProgressSliderPrivate() |
51 { |
57 { |
52 if (handle) { |
58 if (handle) { |
53 delete handle; |
59 delete handle; |
54 } |
60 } |
55 } |
61 } |
56 |
62 bool HbProgressSliderPrivate::textVisible() const |
|
63 { |
|
64 return mToolTipTextVisibleUser; |
|
65 } |
57 void HbProgressSliderPrivate::setProgressValue(int value) |
66 void HbProgressSliderPrivate::setProgressValue(int value) |
58 { |
67 { |
59 Q_Q(HbProgressSlider); |
68 Q_Q(HbProgressSlider); |
60 if (mProgressValue == value) { |
69 if (mProgressValue == value) { |
61 return; |
70 return; |
62 } |
71 } |
63 if (value >= mMaximum) { |
72 if (value >= mMaximum) { |
64 value = mMaximum; |
73 value = mMaximum; |
65 #ifdef HB_EFFECTS |
74 #ifdef HB_EFFECTS |
66 // HbEffect::start(mTrack, HB_PRGRESSSLIDER_ITEM_TYPE, "progressbar_progress_complete"); |
75 HbEffect::start(mTrack, HB_PRGRESSSLIDER_ITEM_TYPE, "progressbar_progress_complete"); |
67 #endif |
76 #endif |
68 } |
77 } |
69 else if (value < mMinimum) { |
78 else if (value < mMinimum) { |
70 value = mMinimum; |
79 value = mMinimum; |
71 } |
80 } |
72 |
81 |
73 mProgressValue=value; |
82 mProgressValue=value; |
74 |
83 |
75 //redraw track |
84 //redraw track |
76 HbStyleOptionProgressSlider sliderOption; |
85 updateProgressTrack(); |
77 q->initStyleOption(&sliderOption); |
|
78 if(mTrack) { |
|
79 q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &sliderOption); |
|
80 } |
|
81 |
86 |
82 emit q->valueChanged(value); |
87 emit q->valueChanged(value); |
83 } |
88 } |
84 |
89 |
85 void HbProgressSliderPrivate::setEnableFlag(bool flag) |
90 void HbProgressSliderPrivate::setEnableFlag(bool flag) |
86 { |
91 { |
87 Q_Q(HbProgressSlider); |
92 Q_Q(HbProgressSlider); |
88 Q_UNUSED(flag); |
93 Q_UNUSED(flag); |
89 HbStyleOptionProgressSlider option; |
|
90 q->initStyleOption(&option); |
|
91 q->updatePrimitives(); |
94 q->updatePrimitives(); |
|
95 if(flag) { |
|
96 handle->setHandleNormalState(); |
|
97 } |
92 } |
98 } |
93 |
99 |
94 void HbProgressSliderPrivate::init() |
100 void HbProgressSliderPrivate::init() |
95 { |
101 { |
96 Q_Q(HbProgressSlider); |
102 Q_Q(HbProgressSlider); |
97 |
103 |
98 mSliderGraphicItem = q->style()->createPrimitive(HbStyle::P_ProgressSlider_slidertrack,mFrame); |
104 mSliderGraphicItem = new HbProgressTrackItem(mFrame); |
|
105 HbStyle::setItemName(mSliderGraphicItem, "slider-track"); |
|
106 qgraphicsitem_cast<HbProgressTrackItem*>(mSliderGraphicItem)->frameDrawer().setFillWholeRect(true); |
|
107 mSliderGraphicItem->setZValue(-1); |
99 // Show the touch area which is created in ProgressBar// |
108 // Show the touch area which is created in ProgressBar// |
100 mTouchAreaItem = q->style()->createPrimitive(HbStyle::P_ProgressSlider_toucharea,q); |
109 |
|
110 mTouchAreaItem = q->style()->createPrimitive(HbStyle::PT_TouchArea, "toucharea",q); |
|
111 mTouchAreaItem->setFlag(QGraphicsItem::ItemIsFocusable); |
|
112 mTouchAreaItem->setZValue(TOUCHAREA_ZVALUE); |
|
113 |
101 mFrame->setZValue(mTouchAreaItem->zValue()+1); |
114 mFrame->setZValue(mTouchAreaItem->zValue()+1); |
102 |
115 |
103 #ifdef HB_EFFECTS |
116 #ifdef HB_EFFECTS |
104 HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackpress", "progressslider_trackpress"); |
117 HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackpress", "progressslider_trackpress"); |
105 HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackrelease", "progressslider_trackrelease"); |
118 HbEffectInternal::add(HB_PRGRESSSLIDER_ITEM_TYPE,"progressslider_trackrelease", "progressslider_trackrelease"); |
106 #endif |
119 #endif |
107 |
120 |
108 q->grabGesture(Qt::TapGesture); |
121 #ifdef HB_GESTURE_FW |
109 |
122 mTouchAreaItem->grabGesture(Qt::TapGesture); |
110 if(QGraphicsObject *touchArea = mTouchAreaItem->toGraphicsObject()) { |
123 #endif |
111 touchArea->grabGesture(Qt::TapGesture); |
|
112 } |
|
113 } |
124 } |
114 |
125 |
115 void HbProgressSliderPrivate::emitSliderPressed() |
126 void HbProgressSliderPrivate::emitSliderPressed() |
116 { |
127 { |
117 Q_Q(HbProgressSlider); |
128 Q_Q(HbProgressSlider); |
208 |
228 |
209 if(mProgressValue > mMaximum){ |
229 if(mProgressValue > mMaximum){ |
210 mProgressValue = mMaximum; |
230 mProgressValue = mMaximum; |
211 } |
231 } |
212 |
232 |
213 HbStyleOptionProgressSlider progressSliderOption; |
233 updateSliderTrack(); |
214 q->initStyleOption(&progressSliderOption); |
234 |
|
235 updateProgressTrack(); |
|
236 |
|
237 q->setSliderValue(mSliderValue); |
|
238 } |
|
239 |
|
240 /* |
|
241 \internal |
|
242 Update progress track primitive |
|
243 */ |
|
244 void HbProgressSliderPrivate::updateProgressTrack() |
|
245 { |
|
246 Q_Q(HbProgressSlider); |
|
247 |
|
248 if (mTrack) { |
|
249 HbProgressTrackItem* frameItem = qgraphicsitem_cast<HbProgressTrackItem*>(mTrack); |
|
250 if(!frameItem->isVisible()) { |
|
251 return; |
|
252 } |
|
253 |
|
254 frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal); |
|
255 if(!q->isEnabled()){ |
|
256 frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_loaded_disabled")); |
|
257 } |
|
258 else |
|
259 frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_loaded")); |
|
260 |
|
261 frameItem->setMaximum(mMaximum); |
|
262 frameItem->setMinimum(mMinimum); |
|
263 frameItem->setValue(mProgressValue); |
|
264 frameItem->setInverted(mInvertedAppearance); |
|
265 frameItem->setOrientation(mOrientation); |
|
266 frameItem->update(); |
|
267 } |
|
268 } |
|
269 |
|
270 /* |
|
271 \internal |
|
272 Update slider track primitive |
|
273 */ |
|
274 void HbProgressSliderPrivate::updateSliderTrack() |
|
275 { |
|
276 Q_Q(HbProgressSlider); |
215 |
277 |
216 if (mSliderGraphicItem) { |
278 if (mSliderGraphicItem) { |
217 q->style()->updatePrimitive(mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &progressSliderOption); |
279 HbProgressTrackItem* frameItem = qgraphicsitem_cast<HbProgressTrackItem*>(mSliderGraphicItem); |
218 } |
280 if(!frameItem->isVisible()) { |
219 |
281 return; |
220 if (mTrack) { |
282 } |
221 q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &progressSliderOption); |
283 |
222 } |
284 frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal); |
223 |
285 if(!q->isEnabled()){ |
224 q->setSliderValue(mSliderValue); |
286 frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_played_disabled")); |
225 } |
287 } |
|
288 else |
|
289 frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_played")); |
|
290 |
|
291 frameItem->setMaximum(mMaximum); |
|
292 frameItem->setMinimum(mMinimum); |
|
293 frameItem->setValue(mSliderValue); |
|
294 frameItem->setInverted(mInvertedAppearance); |
|
295 frameItem->setOrientation(mOrientation); |
|
296 frameItem->update(); |
|
297 } |
|
298 } |
|
299 |
226 |
300 |
227 /*! |
301 /*! |
228 @beta |
302 @beta |
229 @hbwidgets |
303 @hbwidgets |
230 \class HbProgressSlider |
304 \class HbProgressSlider |
247 HbProgressSlider emits below signals |
321 HbProgressSlider emits below signals |
248 |
322 |
249 void sliderPressed(); |
323 void sliderPressed(); |
250 void sliderReleased(); |
324 void sliderReleased(); |
251 void sliderMoved(int value); |
325 void sliderMoved(int value); |
252 |
326 void trackPressed(); |
253 sliderPressed is emitted when the track is pressed. |
327 void trackReleased(); |
254 sliderReleased is emitted when the track is released. |
328 |
|
329 sliderPressed is emitted when the handle is pressed. |
|
330 sliderReleased is emitted when the handle is released. |
255 sliderMoved is emitted when the handle is moved in any direction. |
331 sliderMoved is emitted when the handle is moved in any direction. |
|
332 trackPressed is emitted when the track is pressed. |
|
333 trackReleased is emitted when the track is released. |
256 |
334 |
257 The Application can customize the Slider behaviour by listening to the signals sliderPressed and sliderReleased.By default there |
335 The Application can customize the Slider behaviour by listening to the signals sliderPressed and sliderReleased.By default there |
258 is no behaviour defined by HbProgressSlider for these actions. |
336 is no behaviour defined by HbProgressSlider for these actions. |
259 |
337 |
260 By default the min value is 0 and max value is 100. The application can set the progressValue (buffer data) and |
338 By default the min value is 0 and max value is 100. The application can set the progressValue (buffer data) and |
442 return; |
518 return; |
443 } |
519 } |
444 |
520 |
445 if(flags().testFlag(ItemIsFocusable)) { |
521 if(flags().testFlag(ItemIsFocusable)) { |
446 d->mDownState = true; |
522 d->mDownState = true; |
447 HbStyleOptionProgressSlider option; |
|
448 initStyleOption(&option); |
|
449 if (d->mFrame) { |
523 if (d->mFrame) { |
450 style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option); |
524 HbStyleFramePrimitiveData data; |
|
525 initPrimitiveData(&data, d->mFrame); |
|
526 |
|
527 style()->updatePrimitive(d->mFrame, &data, this); |
451 } |
528 } |
452 |
529 |
453 HbWidgetFeedback::triggered(this, Hb::InstantPressed); |
530 HbWidgetFeedback::triggered(this, Hb::InstantPressed); |
|
531 emit trackPressed(); |
454 d->handle->handleTrackPress(event); |
532 d->handle->handleTrackPress(event); |
455 event->accept(); |
533 event->accept(); |
456 #ifdef HB_EFFECTS |
534 #ifdef HB_EFFECTS |
457 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress"); |
535 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress"); |
458 #endif |
536 #endif |
459 } else { |
537 } else { |
460 event->ignore(); |
538 event->ignore(); |
461 } |
539 } |
|
540 #else |
|
541 Q_UNUSED(event) |
|
542 #endif |
462 } |
543 } |
463 |
544 |
464 /*! |
545 /*! |
465 \reimp |
546 \reimp |
466 */ |
547 */ |
467 void HbProgressSlider::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
548 void HbProgressSlider::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
468 { |
549 { |
|
550 #ifndef HB_GESTURE_FW |
469 Q_D(HbProgressSlider); |
551 Q_D(HbProgressSlider); |
470 |
552 |
471 if(flags().testFlag(ItemIsFocusable)) { |
553 if(flags().testFlag(ItemIsFocusable)) { |
472 d->mDownState = false; |
554 d->mDownState = false; |
473 |
555 |
474 HbStyleOptionProgressSlider option; |
|
475 initStyleOption(&option); |
|
476 if (d->mFrame) { |
556 if (d->mFrame) { |
477 style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option); |
557 HbStyleFramePrimitiveData data; |
|
558 initPrimitiveData(&data, d->mFrame); |
|
559 |
|
560 style()->updatePrimitive(d->mFrame, &data, this); |
478 } |
561 } |
479 |
562 |
480 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
563 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
481 d->handle->handleTrackRelease(event); |
564 d->handle->handleTrackRelease(event); |
|
565 emit trackReleased(); |
482 event->accept(); |
566 event->accept(); |
483 #ifdef HB_EFFECTS |
567 #ifdef HB_EFFECTS |
484 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease"); |
568 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease"); |
485 #endif |
569 #endif |
486 } else { |
570 } else { |
487 event->ignore(); |
571 event->ignore(); |
488 } |
572 } |
489 } |
573 #else |
|
574 Q_UNUSED(event) |
|
575 #endif |
|
576 } |
|
577 |
|
578 #ifdef HB_GESTURE_FW |
|
579 void HbProgressSlider::gestureEvent(QGestureEvent *event) |
|
580 { |
|
581 Q_D (HbProgressSlider); |
|
582 |
|
583 if(event->gesture(Qt::TapGesture)) { |
|
584 |
|
585 HbTapGesture *tapGesture = static_cast<HbTapGesture *>(event->gesture(Qt::TapGesture)); |
|
586 switch(tapGesture->state()) { |
|
587 case Qt::GestureStarted :{ |
|
588 QRectF rect = d->mTouchAreaItem->sceneBoundingRect( ); |
|
589 // return if point is outside track touch area |
|
590 if ( !rect.contains( event->mapToGraphicsScene(tapGesture->position( ) ) ) ) { |
|
591 event->ignore( ); |
|
592 return; |
|
593 } |
|
594 if(flags().testFlag(ItemIsFocusable)) { |
|
595 #ifdef HB_EFFECTS |
|
596 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackpress"); |
|
597 #endif |
|
598 d->mDownState = true; |
|
599 if (d->mFrame) { |
|
600 HbStyleFramePrimitiveData data; |
|
601 initPrimitiveData(&data, d->mFrame); |
|
602 |
|
603 style()->updatePrimitive(d->mFrame, &data, this); |
|
604 } |
|
605 |
|
606 HbWidgetFeedback::triggered(this, Hb::InstantPressed); |
|
607 emit trackPressed(); |
|
608 d->handle->handleTrackPress(event); |
|
609 event->accept(); |
|
610 |
|
611 } |
|
612 else { |
|
613 event->ignore(); |
|
614 } |
|
615 } |
|
616 break; |
|
617 case Qt::GestureCanceled: |
|
618 case Qt::GestureFinished:{ |
|
619 if(d->mDownState) { |
|
620 if(flags().testFlag(ItemIsFocusable)) { |
|
621 #ifdef HB_EFFECTS |
|
622 HbEffect::start(this, HB_PRGRESSSLIDER_ITEM_TYPE, "progressslider_trackrelease"); |
|
623 #endif |
|
624 |
|
625 d->mDownState = false; |
|
626 if (d->mFrame) { |
|
627 HbStyleFramePrimitiveData data; |
|
628 initPrimitiveData(&data, d->mFrame); |
|
629 |
|
630 style()->updatePrimitive(d->mFrame, &data, this); |
|
631 } |
|
632 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
|
633 |
|
634 d->handle->handleTrackRelease(event); |
|
635 emit trackReleased(); |
|
636 event->accept(); |
|
637 } else { |
|
638 event->ignore(); |
|
639 } |
|
640 } |
|
641 |
|
642 } |
|
643 break; |
|
644 default:break; |
|
645 } |
|
646 } |
|
647 |
|
648 } |
|
649 #endif |
|
650 |
|
651 |
490 /*! |
652 /*! |
491 \reimp |
653 \reimp |
492 */ |
654 */ |
493 void HbProgressSlider::setGeometry(const QRectF & rect) |
655 void HbProgressSlider::setGeometry(const QRectF & rect) |
494 { |
656 { |
514 } |
676 } |
515 else { |
677 else { |
516 option->disableState = true; |
678 option->disableState = true; |
517 } |
679 } |
518 } |
680 } |
|
681 |
|
682 /*! |
|
683 \reimp |
|
684 */ |
|
685 void HbProgressSlider::initPrimitiveData(HbStylePrimitiveData *primitiveData, const QGraphicsObject *primitive) |
|
686 { |
|
687 Q_D(HbProgressSlider); |
|
688 |
|
689 QString itemName = HbStyle::itemName(primitive); |
|
690 if (itemName == QLatin1String("frame")) { |
|
691 HbStyleFramePrimitiveData *data = hbstyleprimitivedata_cast<HbStyleFramePrimitiveData*>(primitiveData); |
|
692 |
|
693 data->frameType = HbFrameDrawer::ThreePiecesHorizontal; |
|
694 |
|
695 if (!isEnabled() ) { |
|
696 data->frameGraphicsName = QLatin1String("qtg_fr_progslider_frame_disabled"); |
|
697 } |
|
698 else { |
|
699 if(d->mDownState) { |
|
700 data->frameGraphicsName = QLatin1String("qtg_fr_progslider_frame_pressed"); |
|
701 } |
|
702 else { |
|
703 data->frameGraphicsName = QLatin1String("qtg_fr_progslider_frame_normal"); |
|
704 } |
|
705 } |
|
706 } |
|
707 |
|
708 } |
|
709 |
519 /*! |
710 /*! |
520 \reimp |
711 \reimp |
521 */ |
712 */ |
522 void HbProgressSlider::updatePrimitives() |
713 void HbProgressSlider::updatePrimitives() |
523 { |
714 { |
524 Q_D(HbProgressSlider); |
715 Q_D(HbProgressSlider); |
525 if(isVisible()){ |
716 if(isVisible()){ |
526 d->mWaitTrack->setVisible(false); |
717 d->mWaitTrack->setVisible(false); |
527 d->mTrack->setVisible(true); |
718 d->mTrack->setVisible(true); |
528 |
719 |
529 HbStyleOptionProgressSlider option; |
|
530 initStyleOption(&option); |
|
531 |
|
532 if (d->mSliderGraphicItem) { |
|
533 style()->updatePrimitive(d->mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &option); |
|
534 } |
|
535 |
|
536 if(d->handle) |
|
537 d->handle->setHandlePosForValue(sliderValue()); |
|
538 |
|
539 if (d->mFrame) { |
720 if (d->mFrame) { |
540 style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option); |
721 HbStyleFramePrimitiveData data; |
541 } |
722 initPrimitiveData(&data, d->mFrame); |
|
723 |
|
724 style()->updatePrimitive(d->mFrame, &data, this); |
|
725 } |
|
726 |
|
727 // update progress value mask |
|
728 d->updateProgressTrack(); |
542 |
729 |
543 if (d->mTrack) { |
730 // update slider value mask |
544 style()->updatePrimitive(d->mTrack, HbStyle::P_ProgressSlider_track, &option); |
731 d->updateSliderTrack(); |
545 } |
|
546 |
732 |
547 if(d->mMinTextItem && d->mMinMaxTextVisible) { |
733 if(d->mMinTextItem && d->mMinMaxTextVisible) { |
548 style()->updatePrimitive(d->mMinTextItem,HbStyle::P_ProgressBar_mintext,&option); |
734 HbStyleTextPrimitiveData data; |
|
735 HbProgressBar::initPrimitiveData(&data, d->mMinTextItem); |
|
736 |
|
737 style()->updatePrimitive(d->mMinTextItem, &data, this); |
549 } |
738 } |
550 |
739 |
551 if(d->mMaxTextItem && d->mMinMaxTextVisible) { |
740 if(d->mMaxTextItem && d->mMinMaxTextVisible) { |
552 style()->updatePrimitive(d->mMaxTextItem,HbStyle::P_ProgressBar_maxtext,&option); |
741 HbStyleTextPrimitiveData data; |
553 } |
742 HbProgressBar::initPrimitiveData(&data, d->mMaxTextItem); |
|
743 |
|
744 style()->updatePrimitive(d->mMaxTextItem, &data, this); |
|
745 } |
|
746 |
|
747 if(d->handle) |
|
748 d->handle->setHandlePosForValue(sliderValue()); |
554 } |
749 } |
555 } |
750 } |
556 /*! |
751 /*! |
557 \reimp |
752 \reimp |
558 */ |
753 */ |
587 return HbProgressBar::itemChange(change, value); |
782 return HbProgressBar::itemChange(change, value); |
588 } |
783 } |
589 /*! |
784 /*! |
590 \reimp |
785 \reimp |
591 */ |
786 */ |
592 bool HbProgressSlider::sceneEventFilter(QGraphicsItem *obj,QEvent *event) |
787 void HbProgressSlider::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
593 { |
788 { |
594 Q_D(HbProgressSlider); |
789 #ifndef HB_GESTURE_FW |
595 if( obj == d->mTouchAreaItem) { |
790 Q_D(HbProgressSlider); |
596 if (!isEnabled() ) { |
791 QRectF rect = d->mTouchAreaItem->sceneBoundingRect( ); |
597 return false; |
792 // return if point is outside track touch area |
598 } |
793 if ( !rect.contains( event->scenePos( ) ) ) { |
599 if (event->type() == QEvent::GraphicsSceneMousePress){ |
794 event->ignore( ); |
600 mousePressEvent((QGraphicsSceneMouseEvent *) event); |
795 return; |
601 return true; |
796 } |
602 } |
797 |
603 else if (event->type() == QEvent::GraphicsSceneMouseRelease){ |
798 if(flags().testFlag(ItemIsFocusable)) { |
604 mouseReleaseEvent((QGraphicsSceneMouseEvent *) event); |
799 d->handle->handleTrackPress(event); |
605 return true; |
800 event->accept(); |
606 } |
801 } else { |
607 } |
802 event->ignore(); |
608 return false; |
803 } |
609 } |
804 #else |
610 |
805 Q_UNUSED(event) |
|
806 #endif |
|
807 } |
611 |
808 |
612 /*! |
809 /*! |
613 @beta |
810 @beta |
614 Sets the tooltip for the Slider handle. By default it shows the slider value. |
811 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. |
812 The application can customize the tooltip text using this API. setting NULL string |
|
813 will disable the tooltip. |
616 |
814 |
617 \param text tooltip text |
815 \param text tooltip text |
618 |
816 |
619 \sa sliderToolTip() |
817 \sa sliderToolTip() |
620 */ |
818 */ |
621 void HbProgressSlider::setSliderToolTip(const QString &text) |
819 void HbProgressSlider::setSliderToolTip(const QString &text) |
622 { |
820 { |
623 Q_D(HbProgressSlider); |
821 Q_D(HbProgressSlider); |
624 d->mTooltipText = text; |
822 d->mTooltipText = text; |
|
823 d->mToolTipTextVisibleUser = true; |
625 } |
824 } |
626 |
825 |
627 |
826 |
628 /*! |
827 /*! |
629 @beta |
828 @beta |
669 { |
868 { |
670 Q_D(const HbProgressSlider); |
869 Q_D(const HbProgressSlider); |
671 return d->mHandlePath; |
870 return d->mHandlePath; |
672 } |
871 } |
673 |
872 |
674 /*! |
873 bool HbProgressSlider::sceneEventFilter(QGraphicsItem *obj,QEvent *event) |
675 |
874 { |
676 \deprecated HbProgressSlider::primitive(HbStyle::Primitive) |
875 Q_D(HbProgressSlider); |
677 is deprecated. |
876 bool accepted = false; |
678 |
877 |
679 Returns the pointer for \a primitive passed. |
878 if( obj == d->mTouchAreaItem) |
680 Will return NULL if \a primitive passed is invalid |
879 if (!isEnabled() ) { |
681 */ |
880 return false; |
682 QGraphicsItem* HbProgressSlider::primitive(HbStyle::Primitive primitive) const |
881 } |
|
882 |
|
883 if(obj == static_cast<HbTouchArea*>(d->mTouchAreaItem)) { |
|
884 if(event->type() == QEvent::Gesture ) { |
|
885 gestureEvent(static_cast<QGestureEvent *>( event )); |
|
886 } |
|
887 } |
|
888 return accepted; |
|
889 } |
|
890 |
|
891 QGraphicsItem *HbProgressSlider::primitive(const QString &itemName) const |
683 { |
892 { |
684 Q_D(const HbProgressSlider); |
893 Q_D(const HbProgressSlider); |
685 |
894 |
686 switch (primitive) { |
895 if(!itemName.compare(QString("slider-track"))){ |
687 case HbStyle::P_ProgressSlider_frame: |
896 return d->mSliderGraphicItem; |
688 return d->mFrame; |
897 } |
689 case HbStyle::P_ProgressSlider_track: |
898 if(!itemName.compare(QString("toucharea"))){ |
690 return d->mTrack; |
899 return d->mTouchAreaItem; |
691 case HbStyle::P_ProgressSlider_slidertrack: |
900 } |
692 return d->mSliderGraphicItem; |
901 if(!itemName.compare(QString("handle-icon")) || |
693 case HbStyle::P_ProgressSlider_toucharea: |
902 !itemName.compare(QString("handle-toucharea"))){ |
694 return d->mTouchAreaItem; |
903 return d->handle->primitive(itemName); |
695 case HbStyle::P_ProgressSliderHandle_icon: |
904 } |
696 case HbStyle::P_ProgressSliderHandle_toucharea: |
905 |
697 return d->handle->primitive(primitive); |
906 return HbProgressBar::primitive(itemName); |
698 default: |
907 } |
699 return 0; |
|
700 } |
|
701 } |
|
702 |
|