Warning, /education/gcompris/src/activities/categorization/Zone.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - Zone.qml
0002 *
0003 * SPDX-FileCopyrightText: 2016 Divyam Madaan <divyam3897@gmail.com>
0004 *
0005 * Authors:
0006 * Divyam Madaan <divyam3897@gmail.com>
0007 *
0008 * SPDX-License-Identifier: GPL-3.0-or-later
0009 */
0010 import QtQuick 2.12
0011 import GCompris 1.0
0012
0013 import "../../core"
0014 import "categorization.js" as Activity
0015
0016 Flow {
0017 id: zoneFlow
0018 width: parent.width/3
0019 height: parent.height
0020 property alias repeater: repeater
0021 property alias model: zoneModel
0022
0023 ListModel {
0024 id: zoneModel
0025 }
0026
0027 Repeater {
0028 id: repeater
0029 model: zoneModel
0030 Item {
0031 id: item
0032 width: itemWidth
0033 height: itemWidth
0034 opacity: 1
0035 Image {
0036 id: image
0037 fillMode: Image.PreserveAspectFit
0038 sourceSize.width: itemWidth
0039 width: sourceSize.width
0040 height: sourceSize.width
0041 source: name
0042 MultiPointTouchArea {
0043 id: dragArea
0044 anchors.fill: parent
0045 touchPoints: [ TouchPoint { id: point1 } ]
0046 property real positionX
0047 property real positionY
0048 property real lastX
0049 property real lastY
0050 property bool isRight: isRight
0051 property string currPosition: "middle"
0052 property string imageSource: image.source.toString()
0053
0054 onPressed: {
0055 items.instructionsVisible = false
0056 positionX = point1.x
0057 positionY = point1.y
0058 var imagePos = image.mapToItem(null,0,0)
0059 if(Activity.isDragInLeftArea(leftScreen.width, imagePos.x + parent.width)) {
0060 currPosition = "left"
0061 }
0062 else if(Activity.isDragInRightArea(middleScreen.width + leftScreen.width,imagePos.x)) {
0063 currPosition = "right"
0064 }
0065 else
0066 currPosition = "middle"
0067 }
0068
0069 onUpdated: {
0070 var moveX = point1.x - positionX
0071 var moveY = point1.y - positionY
0072 parent.x = parent.x + moveX
0073 parent.y = parent.y + moveY
0074 var imagePos = image.mapToItem(null,0,0)
0075 leftAreaContainsDrag = Activity.isDragInLeftArea(leftScreen.width, imagePos.x + parent.width)
0076 rightAreaContainsDrag = Activity.isDragInRightArea(middleScreen.width + leftScreen.width,imagePos.x)
0077 lastX = 0, lastY = 0
0078 }
0079
0080 onReleased: {
0081 var droppedPosition = "middle";
0082 if(lastX == point1.x && lastY == point1.y)
0083 return;
0084 else if(leftAreaContainsDrag)
0085 droppedPosition = "left"
0086 else if(rightAreaContainsDrag)
0087 droppedPosition = "right"
0088
0089 Activity.setValues()
0090
0091 // If we drop on same zone, we move it at its initial place
0092 if(currPosition == droppedPosition) {
0093 image.x = 0
0094 image.y = 0
0095 }
0096 else {
0097 Activity.dropControl(currPosition, droppedPosition, imageSource, index)
0098 image.source = ""
0099 }
0100
0101 lastX = point1.x
0102 lastY = point1.y
0103 }
0104 }
0105 }
0106 }
0107 }
0108 }
0109