27 #include "hbabstractbutton_p.h" |
27 #include "hbabstractbutton_p.h" |
28 #include "hbapplication.h" |
28 #include "hbapplication.h" |
29 #include "hbstyleoption_p.h" |
29 #include "hbstyleoption_p.h" |
30 #include "hbtooltip.h" |
30 #include "hbtooltip.h" |
31 #include "hbinstance.h" |
31 #include "hbinstance.h" |
|
32 #include "hbnamespace_p.h" |
32 #include <QGraphicsSceneMouseEvent> |
33 #include <QGraphicsSceneMouseEvent> |
33 #include <QGraphicsScene> |
34 #include <QGraphicsScene> |
34 #include <QPointer> |
35 #include <QPointer> |
35 #include <QStyle> |
36 #include <QStyle> |
36 |
37 |
950 void HbAbstractButton::gestureEvent(QGestureEvent *event) |
951 void HbAbstractButton::gestureEvent(QGestureEvent *event) |
951 { |
952 { |
952 Q_D(HbAbstractButton); |
953 Q_D(HbAbstractButton); |
953 |
954 |
954 if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) { |
955 if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) { |
955 bool hit = hitButton(mapFromScene(event->mapToGraphicsScene(tap->position()))); |
|
956 switch(tap->state()) { |
956 switch(tap->state()) { |
957 case Qt::GestureStarted: |
957 case Qt::GestureStarted: |
958 if( hit ){ |
958 scene()->setProperty(HbPrivate::OverridingGesture.latin1(),Qt::TapGesture); |
959 setDown(true); |
959 if (!tap->property(HbPrivate::ThresholdRect.latin1()).toRect().isValid()) { |
960 HbWidgetFeedback::triggered(this, Hb::InstantPressed); |
960 tap->setProperty(HbPrivate::ThresholdRect.latin1(), mapRectToScene(boundingRect()).toRect()); |
961 updatePrimitives(); |
961 } |
962 d->emitPressed(); |
962 setDown(true); |
963 } |
963 HbWidgetFeedback::triggered(this, Hb::InstantPressed); |
|
964 updatePrimitives(); |
|
965 d->emitPressed(); |
|
966 |
964 break; |
967 break; |
965 case Qt::GestureCanceled: |
968 case Qt::GestureCanceled: |
|
969 scene()->setProperty(HbPrivate::OverridingGesture.latin1(),QVariant()); |
|
970 |
966 if(d->down) { |
971 if(d->down) { |
967 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
972 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
968 setDown(false); |
973 setDown(false); |
969 d->longPress = false; |
974 d->longPress = false; |
970 d->emitReleased(); |
975 d->emitReleased(); |
971 } |
976 } |
972 break; |
977 break; |
973 case Qt::GestureFinished: |
978 case Qt::GestureFinished: |
|
979 scene()->setProperty(HbPrivate::OverridingGesture.latin1(),QVariant()); |
|
980 |
974 if (!d->down){ |
981 if (!d->down){ |
975 return; |
982 return; |
976 } |
983 } |
977 if ( hit ){ |
984 |
978 HbWidgetFeedback::triggered(this, Hb::InstantClicked); |
985 HbWidgetFeedback::triggered(this, Hb::InstantClicked); |
979 d->repeatTimer.stop(); |
986 |
980 d->click(); |
987 |
981 }else{ |
988 d->repeatTimer.stop(); |
982 setDown(false); |
989 d->click(); |
983 } |
990 |
984 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
991 HbWidgetFeedback::triggered(this, Hb::InstantReleased); |
985 d->longPress = false; |
992 d->longPress = false; |
986 break; |
993 break; |
987 default: |
994 default: |
988 break; |
995 break; |