Warning, /education/gcompris/src/activities/adjacent_numbers/DraggableTile.qml is written in an unsupported language. File is not indexed.

0001 /* GCompris - DraggableTile.qml
0002  *
0003  * SPDX-FileCopyrightText: 2023 Alexandre Laurent <littlewhite.dev@gmail.com>
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 import QtQuick 2.12
0007 import QtQml.Models 2.12
0008 
0009 import GCompris 1.0
0010 import "../../core"
0011 
0012 /**
0013  * Could use guesscount/DragTile?
0014  */
0015 MouseArea {    
0016     id: draggableMouseArea
0017     width: 1
0018     height: width
0019 
0020     property bool dropActive: true
0021     property int onGoingAnimationCount: 0
0022 
0023     // For storing the initial position when dragged
0024     property point beginDragPosition
0025     property MouseArea originalParent
0026     property bool mouseHeld: false
0027 
0028     // anchors.fill: parent
0029 
0030     drag.target: dragableElement
0031     enabled: (!onGoingAnimationCount) && items.buttonsEnabled
0032 
0033     onPressed: {
0034         z = 100
0035         draggableMouseArea.beginDragPosition = Qt.point(dragableElement.x, dragableElement.y)
0036         mouseHeld = true
0037         // Activity.targetColorReset()
0038     }
0039     onReleased: {
0040         z = 0
0041         dragableElement.Drag.drop()
0042         mouseHeld = false
0043         dragableElement.parent = draggableMouseArea
0044 
0045         // The element may die on drop if removed, check if it exists
0046         if(dragableElement) {
0047             dragableElement.x = beginDragPosition.x
0048             dragableElement.y = beginDragPosition.y
0049         }
0050     }
0051 
0052     Rectangle {
0053         id: dragableElement
0054         width: parent.width
0055         height: parent.height
0056         color: "white"
0057         opacity: 1
0058         radius: height * 0.1
0059 
0060         Drag.keys: ""
0061         Drag.active: draggableMouseArea.drag.active
0062         Drag.hotSpot.x: width/2
0063         Drag.hotSpot.y: height/2
0064 
0065         property string valueText: dragableValueText.text
0066 
0067         GCText {
0068             id: dragableValueText
0069             text: value
0070             anchors.centerIn: parent
0071             height: parent.height * 0.6
0072             width: parent.width * 0.6
0073             fontSizeMode: Text.Fit
0074             fontSize: largeSize
0075             verticalAlignment: Text.AlignVCenter
0076             horizontalAlignment: Text.AlignHCenter
0077         }
0078     }
0079 }