/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Qt Software Information (qt-info@nokia.com) ** ** This file is part of the $MODULE$ of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you are unsure which license is appropriate for your use, please ** contact the sales department at qt-sales@nokia.com. ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "knob.h" #include #include Knob::Knob() : QGraphicsEllipseItem(-50, -50, 100, 100) { setAcceptTouchEvents(true); setBrush(Qt::lightGray); QGraphicsEllipseItem *leftItem = new QGraphicsEllipseItem(0, 0, 10, 10, this); leftItem->setPos(-45, -5); leftItem->setBrush(Qt::darkGreen); QGraphicsEllipseItem *rightItem = new QGraphicsEllipseItem(0, 0, 10, 10, this); rightItem->setPos(35, -5); rightItem->setBrush(Qt::darkRed); } bool Knob::sceneEvent(QEvent *event) { switch (event->type()) { case QEvent::GraphicsSceneTouchBegin: event->accept(); break; case QEvent::GraphicsSceneTouchUpdate: case QEvent::GraphicsSceneTouchEnd: { QGraphicsSceneTouchEvent *touchEvent = static_cast(event); if (touchEvent->touchPoints().count() == 2) { QGraphicsSceneTouchEvent::TouchPoint *touchPoint1 = touchEvent->touchPoints().first(); QGraphicsSceneTouchEvent::TouchPoint *touchPoint2 = touchEvent->touchPoints().last(); QLineF line1(touchPoint1->lastScenePos(), touchPoint2->lastScenePos()); QLineF line2(touchPoint1->scenePos(), touchPoint2->scenePos()); rotate(line2.angleTo(line1)); } touchEvent->accept(); break; } default: return QGraphicsItem::sceneEvent(event); } return true; }