From 0ba44aef85284fc976417e36118501f74a006806 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Mon, 25 Jun 2012 20:06:12 +0200 Subject: [PATCH] Added photosurface example to demo PinchArea/MouseArea together It seems to be important to put the MouseArea inside the PinchArea in order to support simultaneous drag/rotate/pinch. Change-Id: Ic3ec6a131bd2d4c7f8a8560cd9c3015a717fef20 Reviewed-by: Gunnar Sletta --- examples/quick/demos/demos.pro | 1 + .../doc/images/qml-photosurface-example-small.png | Bin 0 -> 47271 bytes .../demos/photosurface/doc/src/photosurface.qdoc | 37 +++++ examples/quick/demos/photosurface/photosurface.qml | 138 ++++++++++++++++++++ .../demos/photosurface/photosurface.qmlproject | 20 +++ 5 files changed, 196 insertions(+), 0 deletions(-) create mode 100644 examples/quick/demos/photosurface/doc/images/qml-photosurface-example-small.png create mode 100644 examples/quick/demos/photosurface/doc/src/photosurface.qdoc create mode 100644 examples/quick/demos/photosurface/photosurface.qml create mode 100644 examples/quick/demos/photosurface/photosurface.qmlproject diff --git a/examples/quick/demos/demos.pro b/examples/quick/demos/demos.pro index 474b5b1..67128a9 100644 --- a/examples/quick/demos/demos.pro +++ b/examples/quick/demos/demos.pro @@ -8,4 +8,5 @@ SUBDIRS = samegame \ EXAMPLE_FILES = \ clocks \ photoviewer \ + photosurface \ rssnews diff --git a/examples/quick/demos/photosurface/doc/images/qml-photosurface-example-small.png b/examples/quick/demos/photosurface/doc/images/qml-photosurface-example-small.png new file mode 100644 index 0000000000000000000000000000000000000000..a0cd8239993bdbcb709e8a86e5206da013f5d522 GIT binary patch literal 47271 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 D2FD7D literal 0 HcmV?d00001 diff --git a/examples/quick/demos/photosurface/doc/src/photosurface.qdoc b/examples/quick/demos/photosurface/doc/src/photosurface.qdoc new file mode 100644 index 0000000..343acce --- /dev/null +++ b/examples/quick/demos/photosurface/doc/src/photosurface.qdoc @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \title QML Demo - Photo Surface + \example demos/photosurface + \brief This is the typical touch photo-shuffling example written in QML. + \image qml-photosurface-example-small.png + \ingroup qtquickexamples + + This example demonstrates how to handle dragging, rotation and + pinch zooming within the same item using a PinchArea containing a MouseArea. +*/ diff --git a/examples/quick/demos/photosurface/photosurface.qml b/examples/quick/demos/photosurface/photosurface.qml new file mode 100644 index 0000000..8095718 --- /dev/null +++ b/examples/quick/demos/photosurface/photosurface.qml @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 +import QtQuick.Dialogs 1.0 +import Qt.labs.folderlistmodel 1.0 + +Rectangle { + id: root + width: 1024; height: 600 + color: "black" + visible: true + property int highestZ: 0 + property real defaultSize: 200 + + FileDialog { + id: fileDialog + title: "Choose a folder with some images" + selectFolder: true + onAccepted: { folderModel.folder = filePaths[0] + "/" } + } + + Repeater { + model: FolderListModel { + id: folderModel + objectName: "folderModel" + showDirs: false + nameFilters: ["*.png", "*.jpg", "*.gif"] + } + Rectangle { + id: photoFrame + width: image.width * image.scale + 20 + height: image.height * image.scale + 20 + border.color: "black" + border.width: 2 + smooth: true + antialiasing: true + x: Math.random() * root.width - defaultSize + y: Math.random() * root.height - defaultSize + rotation: Math.random() * 13 - 6 + Image { + id: image + anchors.centerIn: parent + fillMode: Image.PreserveAspectFit + source: folderModel.folder + fileName + scale: defaultSize / Math.max(sourceSize.width, sourceSize.height) + antialiasing: true + } + PinchArea { + anchors.fill: parent + property real initialScale + property real initialRotation + onPinchStarted: { + initialScale = image.scale + initialRotation = parent.rotation + } + onPinchUpdated: { + image.scale = initialScale * pinch.scale; + parent.rotation = initialRotation + pinch.rotation + if (Math.abs(photoFrame.rotation) < 4) + parent.rotation = 0; + } + onPinchFinished: photoFrame.border.color = "black"; + MouseArea { + id: dragArea + hoverEnabled: true + anchors.fill: parent + drag.target: photoFrame + onPressed: photoFrame.z = ++root.highestZ; + onEntered: photoFrame.border.color = "red"; + onExited: photoFrame.border.color = "black"; + onWheel: { + if (wheel.modifiers & Qt.ControlModifier) { + photoFrame.rotation += wheel.angleDelta.y / 120 * 5; + if (Math.abs(photoFrame.rotation) < 4) + photoFrame.rotation = 0; + } else { + photoFrame.rotation += wheel.angleDelta.x / 120; + if (Math.abs(photoFrame.rotation) < 0.6) + photoFrame.rotation = 0; + var scaleBefore = image.scale; + image.scale += image.scale * wheel.angleDelta.y / 120 / 10; + photoFrame.x -= image.width * (image.scale - scaleBefore) / 2.0; + photoFrame.y -= image.height * (image.scale - scaleBefore) / 2.0; + } + } + } + } + } + } + Text { + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.margins: 10 + color: "darkgrey" + text: "On a touchscreen: use two fingers to zoom and rotate, one finger to drag\n" + + "With a mouse: drag normally, use the vertical wheel to zoom, horizontal wheel to rotate, or hold Ctrl while using the vertical wheel to rotate" + } + + Component.onCompleted: fileDialog.open() +} diff --git a/examples/quick/demos/photosurface/photosurface.qmlproject b/examples/quick/demos/photosurface/photosurface.qmlproject new file mode 100644 index 0000000..ae2065f --- /dev/null +++ b/examples/quick/demos/photosurface/photosurface.qmlproject @@ -0,0 +1,20 @@ +import QmlProject 1.1 + +Project { + mainFile: "photosurface.qml" + + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + Files { + filter: "*.ts" + directory: "i18n" + } +} -- 1.7.2.5