コード例 #1
0
ファイル: mainwindow.cpp プロジェクト: chinqkung/pvb
bool MyScrollArea::event(QEvent *event)
{
#if QT_VERSION >= 0x040600
  //for some reason the panning gesture is handled in qscrollarea
  //we add pinch gesture:
  static int ignore_gesture = 0;
  if(event->type() == QEvent::Gesture && ignore_gesture == 0 && mw->pvbtab[mw->currentTab].s != -1)
  {
    QGestureEvent *ge = static_cast<QGestureEvent*>(event);
    if(QGesture *ge_pinch = ge->gesture(Qt::PinchGesture))
    {
      static int mod = 0; // only respond to every 5'th pinch gesture
      QPinchGesture *pinch=static_cast<QPinchGesture *>(ge_pinch);
      int percent = mw->pvbtab[mw->currentTab].interpreter.percentZoomMask;
      int old_percent = percent;
      if     (pinch->scaleFactor() < 0.99f) percent -= 5;
      else if(pinch->scaleFactor() > 1.01f) percent += 5;
      if(percent<10)       percent=10;
      else if(percent>250) percent=250;
      //char buf[1024];
      //sprintf(buf,"percent=%d old_percent=%d scaleFactor=%f", percent, old_percent, pinch->scaleFactor());
      //mw->statusBar()->showMessage(buf);
      mod++;
      if(percent != old_percent && (mod % 5) == 0 && ignore_gesture == 0)
      {
        ignore_gesture = 1;
        mod = 0;
        mw->pvbtab[mw->currentTab].interpreter.zoomMask(percent);       // will set ...interpreter.percentZoomMask
        int width  = (mw->pvbtab[mw->currentTab].w * percent) / 100;    // these lines
        int height = (mw->pvbtab[mw->currentTab].h * percent) / 100;    // should
        if(mw->pvbtab[mw->currentTab].rootWidget != NULL)               //
          mw->pvbtab[mw->currentTab].rootWidget->resize(width, height); // resize
        QEvent resize_event(QEvent::Resize);                            // scrollbars
        QApplication::sendEvent(mw, &resize_event);                     // correctly
        qApp->processEvents();
        ignore_gesture = 0;
      }
      ge->accept();
      return true;
    }
    else if(ignore_gesture == 1)
    {
      ge->accept();
      return true;
    }
  }
#endif  
  return QScrollArea::event(event);
}
コード例 #2
0
static PyObject *meth_QGestureEvent_accept(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = NULL;

    {
        QGestureEvent *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_QGestureEvent, &sipCpp))
        {
            sipCpp->accept();

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    {
        QGesture* a0;
        QGestureEvent *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "BJ8", &sipSelf, sipType_QGestureEvent, &sipCpp, sipType_QGesture, &a0))
        {
            sipCpp->accept(a0);

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    {
        Qt::GestureType a0;
        QGestureEvent *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "BE", &sipSelf, sipType_QGestureEvent, &sipCpp, sipType_Qt_GestureType, &a0))
        {
            sipCpp->accept(a0);

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    /* Raise an exception if the arguments couldn't be parsed. */
    sipNoMethod(sipParseErr, sipName_QGestureEvent, sipName_accept, doc_QGestureEvent_accept);

    return NULL;
}
コード例 #3
0
bool DashboardWindowContainer::sceneEvent(QEvent* event)
{
	if (event->type() == QEvent::GestureOverride) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		ge->accept();
		return true;
	}
	else if (event->type() == QEvent::Gesture) {
		QGesture* g = static_cast<QGestureEvent*>(event)->gesture(Qt::TapGesture);
		if (g) {
			QTapGesture* tap = static_cast<QTapGesture*>(g);
			if (tap->state() == Qt::GestureFinished) {
				handleTap(mapFromScene(tap->position()));
			}
			
			return true;
		}

		if(!m_isMenu) {
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
			g = static_cast<QGestureEvent*>(event)->gesture((Qt::GestureType) SysMgrGestureFlick);
#else
            g = static_cast<QGestureEvent*>(event)->gesture(FlickGesture::gestureType());
#endif
			if (g) {
				FlickGesture* flick = static_cast<FlickGesture*>(g);
				if (flick->state() == Qt::GestureFinished) {
					bool flick_delete = abs(flick->velocity().x()) > abs(flick->velocity().y());

					if (flick_delete) {
						if (DashboardWindow* w = m_draggedWindow.data()) {
							m_draggedWindow.clear();
							if (!w->persistent()) {
								m_seenFlick = true;
								triggerItemDelete(w);
							}
						}
					}
				}
				return true;
			}
		}
	} else if (event->type() == QEvent::TouchBegin) {
		return true;
	} else if (event->type() == QEvent::TouchUpdate) {
		return true;
	} else if (event->type() == QEvent::TouchEnd){
		return true;
	}

	return QGraphicsObject::sceneEvent(event);        
}
コード例 #4
0
//virtual
bool PixButton::sceneEvent(QEvent * event)
{
	if (event->type() == QEvent::GestureOverride) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		ge->accept();
		return true;
	}
	else if (event->type() == QEvent::Gesture) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QGesture * g = 0;
		g = ge->gesture(Qt::TapGesture);
		if (g) {
			QTapGesture* tap = static_cast<QTapGesture*>(g);
			if (tap->state() == Qt::GestureFinished) {
				tapGesture(tap);
			}
			return true;
		}
		g = ge->gesture(Qt::TapAndHoldGesture);
		if (g) {
			QTapAndHoldGesture* hold = static_cast<QTapAndHoldGesture*>(g);
			if (hold->state() == Qt::GestureFinished) {
				tapAndHoldGesture(hold);
			}
			return true;
		}
	}
	else if (event->type() == QEvent::TouchBegin)
	{
		return touchStartEvent(static_cast<QTouchEvent *>(event));
	}
	else if (event->type() == QEvent::TouchUpdate)
	{
		return touchUpdateEvent(static_cast<QTouchEvent *>(event));
	}
	else if (event->type() == QEvent::TouchEnd)
	{
		return touchEndEvent(static_cast<QTouchEvent *>(event));
	}
	return QGraphicsObject::sceneEvent(event);
}
コード例 #5
0
ファイル: pagetabbar.cpp プロジェクト: KyleMaas/luna-sysmgr
bool PageTabBar::sceneEvent(QEvent* event)
{
	if (event->type() == QEvent::GestureOverride) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		ge->accept();
		return true;
	}
	else if (event->type() == QEvent::Gesture) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QGesture * g = 0;
//		QGesture* g = ge->gesture(Qt::TapGesture);
//		if (g) {
//			QTapGesture* tap = static_cast<QTapGesture*>(g);
//			if (tap->state() == Qt::GestureFinished) {
//				tapGestureEvent(tap);
//			}
//			return true;
//		}
//		g = ge->gesture(Qt::TapAndHoldGesture);
//		if (g) {
//			QTapAndHoldGesture* hold = static_cast<QTapAndHoldGesture*>(g);
//			if (hold->state() == Qt::GestureFinished) {
//				tapAndHoldGestureEvent(hold);
//			}
//			return true;
//		}
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
		g = ge->gesture((Qt::GestureType) SysMgrGestureFlick);
#else
        g = ge->gesture(FlickGesture::gestureType());
#endif
		if (g) {
			FlickGesture* flick = static_cast<FlickGesture*>(g);
			if (flick->state() == Qt::GestureFinished) {
				flickGesture(flick);
			}
			return true;
		}
	}
	return QGraphicsObject::sceneEvent(event);
}
コード例 #6
0
bool MenuWindowManager::sceneEvent(QEvent* event)
{
	switch (event->type()) {
	case QEvent::GestureOverride: {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QList<QGesture*> activeGestures = ge->activeGestures();
		Q_FOREACH(QGesture* g, activeGestures) {
			if (g->hasHotSpot()) {
				QPointF pt = ge->mapToGraphicsScene(g->hotSpot());
				if (m_systemMenuOpened || (!m_winArray.empty() && m_positiveSpace.contains(pt.x() - boundingRect().x(), pt.y() - boundingRect().y()))) {
					ge->accept(g);
				}
				else {
					ge->ignore(g);
				}
			}
		}
		break;
	}
	case QEvent::Gesture: {

		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
		QGesture* g = ge->gesture((Qt::GestureType) SysMgrGestureFlick);
#else
        QGesture* g = ge->gesture(FlickGesture::gestureType());
#endif
		if (g && g->state() == Qt::GestureFinished) {
			flickGestureEvent(ge);
			return true;
		}
	}
	default:
		break;
	}

	return WindowManagerBase::sceneEvent(event);
}
コード例 #7
0
ファイル: main.cpp プロジェクト: Suneal/qt
    bool viewportEvent(QEvent *event)
    {
        if (event->type() == QEvent::Gesture) {
            QGestureEvent *ge = static_cast<QGestureEvent *>(event);
            if (QPanGesture *pan = static_cast<QPanGesture *>(ge->gesture(Qt::PanGesture))) {
                switch (pan->state()) {
                case Qt::GestureStarted: qDebug("view: Pan: started"); break;
                case Qt::GestureFinished: qDebug("view: Pan: finished"); break;
                case Qt::GestureCanceled: qDebug("view: Pan: canceled"); break;
                case Qt::GestureUpdated: break;
                default: qDebug("view: Pan: <unknown state>"); break;
                }

                const QPointF delta = pan->delta();
                QScrollBar *vbar = verticalScrollBar();
                QScrollBar *hbar = horizontalScrollBar();
                vbar->setValue(vbar->value() - delta.y());
                hbar->setValue(hbar->value() - delta.x());
                ge->accept(pan);
                return true;
            }
        }
        return QGraphicsView::viewportEvent(event);
    }
コード例 #8
0
ファイル: pagetab.cpp プロジェクト: 22350/luna-sysmgr
bool PageTab::sceneEvent(QEvent* event)
{
	if (event->type() == QEvent::GestureOverride) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		ge->accept();
		return true;
	}
	else if (event->type() == QEvent::Gesture) {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QGesture* g = ge->gesture(Qt::TapGesture);
		if (g) {
			QTapGesture* tap = static_cast<QTapGesture*>(g);
			if (tap->state() == Qt::GestureFinished) {
				tapGesture(tap,ge);
			}
			return true;
		}
		g = ge->gesture(Qt::TapAndHoldGesture);
		if (g) {
			QTapAndHoldGesture* hold = static_cast<QTapAndHoldGesture*>(g);
			if (hold->state() == Qt::GestureFinished) {
				tapAndHoldGesture(hold,ge);
			}
			return true;
		}
//		g = ge->gesture((Qt::GestureType) SysMgrGestureFlick);
//		if (g) {
//			FlickGesture* flick = static_cast<FlickGesture*>(g);
//			if (flick->state() == Qt::GestureFinished) {
//				flickGesture(flick,ge);
//			}
//			return true;
//		}
	}
	return QGraphicsObject::sceneEvent(event);
}