Warning, /education/gcompris/src/activities/digital_electricity/DragListItem.qml is written in an unsupported language. File is not indexed.
0001 /* gcompris - DragListItem.qml
0002 *
0003 * SPDX-FileCopyrightText: 2016 Pulkit Gupta <pulkitnsit@gmail.com>
0004 *
0005 * Authors:
0006 * Bruno Coudoin <bruno.coudoin@gcompris.net> (GTK+ version)
0007 * Pulkit Gupta <pulkitnsit@gmail.com> (Qt Quick port)
0008 *
0009 * SPDX-License-Identifier: GPL-3.0-or-later
0010 */
0011 import QtQuick 2.12
0012 import GCompris 1.0
0013 import "digital_electricity.js" as Activity
0014
0015 Item {
0016 id: item
0017
0018 width: tile.width
0019 height: tile.height
0020
0021 property string source: componentSrc
0022 property string imageName: imgName
0023 property string toolTipTxt: toolTipText
0024 property double imageWidth: imgWidth
0025 property double imageHeight: imgHeight
0026 property double heightInColumn
0027 property double widthInColumn
0028 property double tileWidth
0029 property double tileHeight
0030 property bool selected: false
0031
0032 signal pressed
0033
0034 Rectangle {
0035 id: tile
0036 width: tileWidth
0037 height: tileHeight
0038 color: (parent.selected && tileImage.parent == tile) ? "#33FF294D" : "transparent"
0039 border.color: (parent.selected && tileImage.parent == tile) ? "white" : "transparent"
0040 border.width: 3
0041 radius: 2
0042
0043 property double xCenter: tile.x + tile.width / 2
0044 property double yCenter: tile.y + tile.height / 2
0045 property bool selected: false
0046
0047 Image {
0048 anchors.centerIn: parent
0049 width: widthInColumn
0050 height: heightInColumn
0051 fillMode: Image.PreserveAspectFit
0052 source: Activity.url + imgName
0053 }
0054
0055 Image {
0056 id: tileImage
0057 anchors.centerIn: parent
0058 width: smallWidth
0059 height: smallHeight
0060 fillMode: Image.PreserveAspectFit
0061 source: Activity.url + imgName
0062 mipmap: true
0063 antialiasing: true
0064
0065 property double smallWidth: widthInColumn
0066 property double smallHeight: heightInColumn
0067 property double fullWidth: imgWidth * playArea.width
0068 property double fullHeight: imgHeight * playArea.height
0069 property QtObject tileImageParent
0070 property bool small: true
0071
0072 function toSmall() {
0073 width = smallWidth
0074 height = smallHeight
0075 small = true
0076 }
0077
0078 function toFull() {
0079 width = fullWidth * Activity.currentZoom
0080 height = fullHeight * Activity.currentZoom
0081 small = false
0082 }
0083
0084 MultiPointTouchArea {
0085 id: mouseArea
0086 touchPoints: [ TouchPoint { id: point1 } ]
0087 property real startX
0088 property real startY
0089 property bool pressedOnce
0090
0091 anchors.fill: parent
0092
0093 onPressed: {
0094 tileImage.anchors.centerIn = undefined
0095 startX = point1.x
0096 startY = point1.y
0097 tileImage.toFull()
0098 toolTip.show(toolTipText)
0099 pressedOnce = true
0100 item.selected = true
0101 Activity.disableToolDelete()
0102 }
0103
0104 onUpdated: {
0105 var moveX = point1.x - startX
0106 var moveY = point1.y - startY
0107 parent.x = parent.x + moveX
0108 parent.y = parent.y + moveY
0109 }
0110
0111 onReleased: {
0112 if (pressedOnce) {
0113 pressedOnce = false
0114 item.selected = false
0115 var coord = playArea.mapFromItem(tileImage.parent, parent.x, parent.y)
0116 if(coord.x > 0 && coord.y > 0 && ((playArea.width/Activity.currentZoom) - coord.x > tileImage.fullWidth))
0117 Activity.createComponent(coord.x, coord.y, index)
0118 tileImage.anchors.centerIn = tile
0119 tileImage.toSmall()
0120 toolTip.show("")
0121 }
0122 }
0123 }
0124 }
0125 }
0126 }