src/hbcore/gui/hbabstractbutton.cpp
changeset 7 923ff622b8b9
parent 6 c3690ec91ef8
child 21 4633027730f5
child 34 ed14f46c0e55
equal deleted inserted replaced
6:c3690ec91ef8 7:923ff622b8b9
    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;