src/hbcore/gui/hbtoolbar.cpp
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
child 2 06ff229162e9
--- a/src/hbcore/gui/hbtoolbar.cpp	Mon Apr 19 14:02:13 2010 +0300
+++ b/src/hbcore/gui/hbtoolbar.cpp	Mon May 03 12:48:33 2010 +0300
@@ -49,11 +49,10 @@
 
 #ifdef HB_EFFECTS
 #include "hbeffectinternal_p.h"
-#define HB_TOOLBAR_ITEM_TYPE "HB_TOOLBAR"
 #endif
 
 /*!
-    @stable
+    @beta
     @hbcore
     \class HbToolBar
     \brief HbToolBar is a toolbar decorator.
@@ -91,6 +90,8 @@
     Q_D(HbToolBar);
     d->q_ptr = this;
     d->init();
+    setFlag(QGraphicsItem::ItemIsPanel);
+
 }
 
 /*!
@@ -233,7 +234,8 @@
 }
 
 /*!
-    \deprecated HbToolBar::unsetOrientation()is deprecated.
+    \deprecated HbToolBar::unsetOrientation()
+            is deprecated.
  */
 void HbToolBar::unsetOrientation()
 {
@@ -312,6 +314,11 @@
         d->updateButtonsLayoutDirection();
     }
 
+    if (event->type() == QEvent::ParentChange && parentItem()) {
+        setPos(-1000, -1000);   // Not very nice workaround to toolbar flicker problem.
+                                // We will find a better solution later.
+    }
+
     QGraphicsWidget::changeEvent(event);
 }
 
@@ -371,79 +378,19 @@
 /*!
     \reimp
  */
-void HbToolBar::gestureEvent(QGestureEvent *event)
+void HbToolBar::gestureEvent(QGestureEvent *)
 {
-    Q_D(HbToolBar);    
-    if (QPanGesture *panGesture = qobject_cast<QPanGesture*>(event->gesture(Qt::PanGesture))) {
-        QPointF scenePoint = event->mapToGraphicsScene(panGesture->hotSpot());
-        if (panGesture->state() == Qt::GestureStarted) {
-            foreach (HbToolButton *button, d->mVisibleToolButtons) {
-                if (button->isDown()) {
-                    d->mPressedDownButton = button;
-                    break;
-                }
-            }
-            if (d->moreExtensionButton && d->moreExtensionButton->isDown()) {
-                d->mPressedDownButton = d->moreExtensionButton;
-            }
-        } else if (panGesture->state() == Qt::GestureUpdated) {
-            if (mapRectToScene(boundingRect()).contains(scenePoint)) {
-                // moving inside the tool bar
-                if (!d->mPressedDownButton ||
-                    !mapRectToScene(d->mPressedDownButton->geometry()).contains(scenePoint)) {
-                    if (d->mPressedDownButton) {
-                        // lift it up and try to find some other button
-                        d->mPressedDownButton->setDown(false);
-                        d->mPreviouslyPressedDownButton = d->mPressedDownButton;
-                        d->mPressedDownButton = 0;
-                    }
+
+}
 
-                    // Find the pressed button
-                    foreach (HbToolButton *button, d->mVisibleToolButtons) {
-                        if (button->action()->isEnabled() &&
-                            mapRectToScene(button->geometry()).contains(scenePoint)) {
-                            d->mPressedDownButton = button;
-                            HbWidgetFeedback::triggered(button, Hb::InstantDraggedOver);
-                            button->setDown(true);
-                            break;
-                        }
-                    }
-                    if (d->moreExtensionButton && d->moreExtensionButton->isVisible() &&
-                        mapRectToScene(d->moreExtensionButton->geometry()).contains(scenePoint)) {
-                        d->mPressedDownButton = d->moreExtensionButton;
-                        HbWidgetFeedback::triggered(d->moreExtensionButton, Hb::InstantDraggedOver);
-                        d->moreExtensionButton->setDown(true);
-                    }
-                }
-            } else {
-                // moving outside the tool bar
-
-                // if a button is pressed down, lift it.
-                if (d->mPressedDownButton) {
-                    d->mPressedDownButton->setDown(false);
-                    d->mPressedDownButton = 0;
-                    d->mPreviouslyPressedDownButton = d->mPressedDownButton;
-                }
-            }
-        } else if (panGesture->state() == Qt::GestureFinished) {
-            if (d->mPressedDownButton && !d->mPreviouslyPressedDownButton) {
-                // Generate tap gesture to the button
-                QGesture *gesture = new QTapGesture();
-                gesture->setHotSpot(panGesture->hotSpot());
-                QList<QGesture *> list;
-                list.append(gesture);
-                QGestureEvent *event = new QGestureEvent(list);
-                QCoreApplication::sendEvent(d->mPressedDownButton, event);                
-                d->mPressedDownButton = 0;
-            } else if (d->mPressedDownButton) {
-                d->mPressedDownButton->setDown(false);
-                HbWidgetFeedback::triggered( d->mPressedDownButton, Hb::InstantClicked );
-            }
-            d->mPreviouslyPressedDownButton = 0;
-        }
-        event->accept(panGesture);
-    } else {
-        event->ignore();
+void HbToolBar::updatePrimitives()
+{
+    Q_D(HbToolBar);
+    for (int i = 0; i < d->mVisibleToolButtons.count(); i++) {
+        d->mVisibleToolButtons.at(i)->updatePrimitives();
+    }
+    if (d->moreExtensionButton) {
+        d->moreExtensionButton->updatePrimitives();
     }
 }