aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-10-27 21:20:23 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-10-29 06:55:33 +0000
commitbbb113b0e3a82325ba5c1b79061cae757db7468d (patch)
tree03d59347b51a5a673dbfdf3ac3b6644be52f871a /src/templates
parent442e034b20bac29798806abd39acdd6aea7b65e6 (diff)
QQuickSwitch: cleanup implementation details from the API
Change-Id: I7cb9df78455bd32cfe70f29a1d3f9392dc88930f Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Diffstat (limited to 'src/templates')
-rw-r--r--src/templates/qquickswitch.cpp118
-rw-r--r--src/templates/qquickswitch_p.h5
2 files changed, 62 insertions, 61 deletions
diff --git a/src/templates/qquickswitch.cpp b/src/templates/qquickswitch.cpp
index 35b0b85c..241deed9 100644
--- a/src/templates/qquickswitch.cpp
+++ b/src/templates/qquickswitch.cpp
@@ -89,6 +89,11 @@ public:
void updatePosition();
+ bool handleMousePressEvent(QQuickItem *child, QMouseEvent *event);
+ bool handleMouseMoveEvent(QQuickItem *child, QMouseEvent *event);
+ bool handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event);
+ bool handleMouseUngrabEvent(QQuickItem *child);
+
qreal position;
QPoint pressPoint;
};
@@ -99,6 +104,58 @@ void QQuickSwitchPrivate::updatePosition()
q->setPosition(checked ? 1.0 : 0.0);
}
+bool QQuickSwitchPrivate::handleMousePressEvent(QQuickItem *child, QMouseEvent *event)
+{
+ Q_Q(QQuickSwitch);
+ Q_UNUSED(child);
+ pressPoint = event->pos();
+ q->setPressed(true);
+ event->accept();
+ return true;
+}
+
+bool QQuickSwitchPrivate::handleMouseMoveEvent(QQuickItem *child, QMouseEvent *event)
+{
+ Q_Q(QQuickSwitch);
+ if (!child->keepMouseGrab())
+ child->setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->pos().x() - pressPoint.x(), Qt::XAxis, event));
+ if (child->keepMouseGrab()) {
+ q->setPosition(q->positionAt(event->pos()));
+ event->accept();
+ }
+ return true;
+}
+
+bool QQuickSwitchPrivate::handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event)
+{
+ Q_Q(QQuickSwitch);
+ pressPoint = QPoint();
+ q->setPressed(false);
+ if (child->keepMouseGrab()) {
+ q->setChecked(position > 0.5);
+ q->setPosition(checked ? 1.0 : 0.0);
+ child->setKeepMouseGrab(false);
+ event->accept();
+ } else {
+ QQuickMouseEvent me(event->x(), event->y(), event->button(), event->buttons(), event->modifiers(), true /* isClick */);
+ emit q->clicked(&me);
+ event->setAccepted(me.isAccepted());
+ q->toggle();
+ }
+ return true;
+}
+
+bool QQuickSwitchPrivate::handleMouseUngrabEvent(QQuickItem *child)
+{
+ Q_Q(QQuickSwitch);
+ Q_UNUSED(child);
+ pressPoint = QPoint();
+ q->setChecked(position > 0.5);
+ q->setPosition(checked ? 1.0 : 0.0);
+ q->setPressed(false);
+ return true;
+}
+
QQuickSwitch::QQuickSwitch(QQuickItem *parent) :
QQuickAbstractButton(*(new QQuickSwitchPrivate), parent)
{
@@ -166,16 +223,17 @@ void QQuickSwitch::mirrorChange()
bool QQuickSwitch::childMouseEventFilter(QQuickItem *child, QEvent *event)
{
+ Q_D(QQuickSwitch);
if (child == indicator()) {
switch (event->type()) {
case QEvent::MouseButtonPress:
- return handleMousePressEvent(child, static_cast<QMouseEvent *>(event));
+ return d->handleMousePressEvent(child, static_cast<QMouseEvent *>(event));
case QEvent::MouseMove:
- return handleMouseMoveEvent(child, static_cast<QMouseEvent *>(event));
+ return d->handleMouseMoveEvent(child, static_cast<QMouseEvent *>(event));
case QEvent::MouseButtonRelease:
- return handleMouseReleaseEvent(child, static_cast<QMouseEvent *>(event));
+ return d->handleMouseReleaseEvent(child, static_cast<QMouseEvent *>(event));
case QEvent::UngrabMouse:
- return handleMouseUngrabEvent(child);
+ return d->handleMouseUngrabEvent(child);
default:
return false;
}
@@ -183,58 +241,6 @@ bool QQuickSwitch::childMouseEventFilter(QQuickItem *child, QEvent *event)
return false;
}
-bool QQuickSwitch::handleMousePressEvent(QQuickItem *child, QMouseEvent *event)
-{
- Q_D(QQuickSwitch);
- Q_UNUSED(child);
- d->pressPoint = event->pos();
- setPressed(true);
- event->accept();
- return true;
-}
-
-bool QQuickSwitch::handleMouseMoveEvent(QQuickItem *child, QMouseEvent *event)
-{
- Q_D(QQuickSwitch);
- if (!child->keepMouseGrab())
- child->setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->pos().x() - d->pressPoint.x(), Qt::XAxis, event));
- if (child->keepMouseGrab()) {
- setPosition(positionAt(event->pos()));
- event->accept();
- }
- return true;
-}
-
-bool QQuickSwitch::handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event)
-{
- Q_D(QQuickSwitch);
- d->pressPoint = QPoint();
- setPressed(false);
- if (child->keepMouseGrab()) {
- setChecked(position() > 0.5);
- setPosition(isChecked() ? 1.0 : 0.0);
- child->setKeepMouseGrab(false);
- event->accept();
- } else {
- QQuickMouseEvent me(event->x(), event->y(), event->button(), event->buttons(), event->modifiers(), true /* isClick */);
- emit clicked(&me);
- event->setAccepted(me.isAccepted());
- toggle();
- }
- return true;
-}
-
-bool QQuickSwitch::handleMouseUngrabEvent(QQuickItem *child)
-{
- Q_D(QQuickSwitch);
- Q_UNUSED(child);
- d->pressPoint = QPoint();
- setChecked(position() > 0.5);
- setPosition(isChecked() ? 1.0 : 0.0);
- setPressed(false);
- return true;
-}
-
qreal QQuickSwitch::positionAt(const QPoint &point) const
{
qreal pos = point.x() / indicator()->width();
diff --git a/src/templates/qquickswitch_p.h b/src/templates/qquickswitch_p.h
index 8e822b73..2670c863 100644
--- a/src/templates/qquickswitch_p.h
+++ b/src/templates/qquickswitch_p.h
@@ -76,11 +76,6 @@ protected:
void mirrorChange() Q_DECL_OVERRIDE;
bool childMouseEventFilter(QQuickItem *child, QEvent *event) Q_DECL_OVERRIDE;
- bool handleMousePressEvent(QQuickItem *child, QMouseEvent *event);
- bool handleMouseMoveEvent(QQuickItem *child, QMouseEvent *event);
- bool handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event);
- bool handleMouseUngrabEvent(QQuickItem *child);
-
virtual qreal positionAt(const QPoint &point) const;
private: