src/hbwidgets/widgets/hbgroupboxcontentwidget_p.cpp
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
child 2 06ff229162e9
--- a/src/hbwidgets/widgets/hbgroupboxcontentwidget_p.cpp	Mon Apr 19 14:02:13 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupboxcontentwidget_p.cpp	Mon May 03 12:48:33 2010 +0300
@@ -29,6 +29,12 @@
 #include <hbgesturefilter.h>
 #include <hbgesture.h>
 #include <QGraphicsSceneMouseEvent>
+#include <hbwidgetfeedback.h>
+#ifdef HB_GESTURE_FW
+#include <hbtapgesture.h>
+#include <hbtapandholdgesture.h>
+#include <QGesture>
+#endif 
 
 /*
     internal
@@ -44,14 +50,16 @@
     HbWidget(parent),
     mContent(0),
     mBackgroundItem(0),
-    contentPressed(false),
-    gestureFilter(0),
-    gestureLongpressed(0)
+    contentPressed(false)
+  
 {
     groupBox = qgraphicsitem_cast<HbGroupBox*>( parent );
 
     createPrimitives();
-    createConnection();    
+    createConnection();   
+#ifdef HB_GESTURE_FW
+    grabGesture(Qt::TapGesture);
+#endif 
 }
 
 /*
@@ -61,9 +69,6 @@
 */
 HbGroupBoxContentWidget::~HbGroupBoxContentWidget()
 {
-    if( gestureFilter ) {
-        removeSceneEventFilter( gestureFilter );
-    }
 }
 
 /*
@@ -101,20 +106,12 @@
 */
 void HbGroupBoxContentWidget::createConnection()
 {
-    // Create gesture filter
-    gestureFilter = new HbGestureSceneFilter( Qt::LeftButton, this );
-    // Add gestures for longpress
-    gestureLongpressed = new HbGesture( HbGesture::longpress,5 );
-    gestureFilter->addGesture( gestureLongpressed );
-
-    installSceneEventFilter( gestureFilter );
-
     // to avoid duplicate signals getting emitted from groupBox contentWidget
     disconnect( this , SIGNAL ( clicked() ) , groupBox , SIGNAL ( clicked() ));
-    disconnect ( gestureLongpressed , SIGNAL( longPress( QPointF ) ) , groupBox , SIGNAL( longPress( QPointF ) ));
+    disconnect ( this , SIGNAL( longPress( QPointF ) ) , groupBox , SIGNAL( longPress( QPointF ) ));
 
     connect ( this , SIGNAL ( clicked() ) , groupBox , SIGNAL ( clicked() ));
-    connect ( gestureLongpressed , SIGNAL( longPress( QPointF ) ) , groupBox , SIGNAL( longPress( QPointF ) ));
+    connect ( this , SIGNAL( longPress( QPointF ) ) , groupBox , SIGNAL( longPress( QPointF ) ));
 }
 
 /*!
@@ -216,24 +213,37 @@
  */
 void HbGroupBoxContentWidget::mousePressEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifdef HB_GESTURE_FW
+    Q_UNUSED(event)
+#else 
     HbWidget::mousePressEvent(event);
 
+    HbWidgetFeedback::triggered(this, Hb::InstantPressed);
+
     contentPressed=!contentPressed;
     updatePrimitives();
     event->accept(); 
+#endif 
 }
-
 /*!
     \reimp
  */
 void HbGroupBoxContentWidget::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifdef HB_GESTURE_FW
+    Q_UNUSED(event)
+#else 
+
     HbWidget::mouseReleaseEvent(event);
 
+    HbWidgetFeedback::triggered(this, Hb::InstantReleased);
+
     contentPressed=!contentPressed;    
     updatePrimitives();
     
     emit clicked();
+#endif 
+
 }
 
 /*!
@@ -255,3 +265,38 @@
 }
 
 
+
+#ifdef HB_GESTURE_FW
+void HbGroupBoxContentWidget::gestureEvent(QGestureEvent *event)
+{
+    if(HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
+        switch(tap->state()) {
+        case Qt::GestureStarted:  //
+            contentPressed=true;
+            updatePrimitives();
+            break;
+        case Qt::GestureCanceled: // Reset state
+            contentPressed=false;
+            updatePrimitives();
+            break;
+        case Qt::GestureUpdated:
+            if(tap->tapStyleHint() == HbTapGesture::TapAndHold) {
+                emit longPress(event->mapToGraphicsScene(tap->position()));
+            }
+            break;
+        case Qt::GestureFinished: // emit clicked
+            contentPressed=false;
+            updatePrimitives();
+            if(tap->tapStyleHint() == HbTapGesture::Tap) {
+                emit clicked();
+            }
+            break;
+        default:
+            break;
+        }
+    } 
+}
+#endif 
+
+
+