src/hbcore/gui/hbmenuitem_p.cpp
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
child 2 06ff229162e9
--- a/src/hbcore/gui/hbmenuitem_p.cpp	Mon Apr 19 14:02:13 2010 +0300
+++ b/src/hbcore/gui/hbmenuitem_p.cpp	Mon May 03 12:48:33 2010 +0300
@@ -26,6 +26,7 @@
 #include "hbmenuitem_p.h"
 #include "hbmenuitem_p_p.h"
 #include "hbmenu.h"
+#include "hbmenu_p.h"
 #include "hbaction.h"
 #include "hbstyle.h"
 #include "hbstyleoptionmenuitem.h"
@@ -33,7 +34,10 @@
 #include "hbtextitem.h"
 #include "hbevent.h"
 #include "hbcolorscheme.h"
-
+#include "hbwidgetfeedback.h"
+#ifdef HB_GESTURE_FW
+#include <QGesture>
+#endif
 Q_DECLARE_METATYPE (QAction*)
 
 /*
@@ -180,7 +184,8 @@
 
     d->q_ptr = this;
     d->menu = menu;
-    setAcceptedMouseButtons(Qt::NoButton);
+    grabGesture(Qt::TapGesture);
+    setAcceptedMouseButtons (Qt::NoButton);
 }
 
 /*
@@ -247,6 +252,28 @@
         d->_q_updateItem();
     }
 }
+#ifdef HB_GESTURE_FW
+void HbMenuItem::gestureEvent(QGestureEvent *event)
+{
+    //Q_D(HbMenuItem);
+    if(QTapGesture *gesture = qobject_cast<QTapGesture *>(event->gesture(Qt::TapGesture))) {
+        if (gesture->state() == Qt::GestureStarted) {           
+            // Tactile feedback                        
+            HbWidgetFeedback::triggered(this, Hb::InstantPressed);
+
+            pressStateChanged(true);
+            event->accept();
+        } else if (gesture->state() == Qt::GestureFinished) {
+            HbWidgetFeedback::triggered(this, Hb::InstantReleased);
+            pressStateChanged(false);
+            event->accept();            
+            HbMenuPrivate::d_ptr(menu())->_q_triggerAction(this);
+        } else if (gesture->state() == Qt::GestureCanceled) {
+            pressStateChanged(false);
+        }
+    }
+}
+#endif
 
 /*
     Sets the action,which is represented by the menu item.