Warning, /education/gcompris/src/activities/left_right_click/Animal.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - Animal.qml
0002 *
0003 * SPDX-FileCopyrightText: 2022 Samarth Raj <mailforsamarth@gmail.com>
0004 * SPDX-FileCopyrightText: 2022 Timothée Giet <animtim@gmail.com>
0005 * SPDX-License-Identifier: GPL-3.0-or-later
0006 */
0007 import QtQuick 2.12
0008
0009 import "../../core"
0010 import "left_right_click.js" as Activity
0011
0012 Item {
0013 id: animal
0014 z: 10
0015 visible: !animalInvisible ? true : false
0016 property bool clicked: false
0017
0018 Rectangle {
0019 id: animalRect
0020 anchors.horizontalCenter: parent.horizontalCenter
0021 anchors.verticalCenter: parent.verticalCenter
0022 width: parent.width * 0.8
0023 height: parent.height * 0.8
0024 color: "transparent"
0025 border.color: "transparent"
0026 border.width: 5
0027 radius: 10
0028 Image {
0029 width: parent.width * 0.9
0030 height: parent.height * 0.9
0031 sourceSize.width: width
0032 source: imageSource
0033 anchors.horizontalCenter: parent.horizontalCenter
0034 anchors.verticalCenter: parent.verticalCenter
0035 fillMode: Image.PreserveAspectFit
0036 }
0037 PropertyAnimation {
0038 id: disappearAnimal
0039 target: animal
0040 property: 'visible'
0041 to: false
0042 duration: 1000
0043 }
0044 PropertyAnimation {
0045 id: borderHighlight
0046 target: animalRect
0047 property: 'border.color'
0048 to: "#F2F2F2"
0049 duration: 0
0050 }
0051 MouseArea {
0052 id: mouseArea
0053 anchors.fill: parent
0054 acceptedButtons: Qt.LeftButton | Qt.RightButton
0055 enabled: !animal.clicked
0056 onClicked: {
0057 // if left target animal is clicked with left click
0058 if((mouse.button === Qt.LeftButton) && (animalIdentifier === Activity.Position.left)) {
0059 animal.clicked = true
0060 animal.state = "toLeftTarget"
0061 Activity.incrementCounter()
0062 disappearAnimal.running = true
0063 }
0064 else if((mouse.button === Qt.RightButton) && (animalIdentifier === Activity.Position.right)) {
0065 animal.clicked = true
0066 animal.state = "toRightTarget"
0067 Activity.incrementCounter()
0068 disappearAnimal.running = true
0069 }
0070 else {
0071 wrongClick()
0072 }
0073 triggerClick(mouse.button)
0074 }
0075
0076 function triggerClick(mouseButton) {
0077 if(mouseButton === Qt.LeftButton)
0078 leftClickTrigger()
0079 else
0080 rightClickTrigger()
0081 }
0082
0083 hoverEnabled: enabled
0084 onEntered: {
0085 animalRect.border.color = "#F2F2F2"
0086 }
0087 onExited: {
0088 animalRect.border.color = "transparent"
0089 }
0090 }
0091 }
0092
0093 states: [
0094 State {
0095 name: "toLeftTarget"
0096 ParentChange {
0097 target: animal
0098 parent: leftArea
0099 }
0100 PropertyChanges {
0101 target: animal
0102 x: (leftArea.width - animal.width) * 0.5
0103 y: (leftArea.height - animal.height) * 0.75
0104 }
0105 },
0106 State {
0107 name: "toRightTarget"
0108 ParentChange {
0109 target: animal
0110 parent: rightArea
0111 }
0112 PropertyChanges {
0113 target: animal
0114 x: (leftArea.width - animal.width) * 0.5
0115 y: (leftArea.height - animal.height) * 0.5
0116 }
0117 }
0118 ]
0119
0120 Behavior on x {
0121 PropertyAnimation { easing.type: Easing.OutQuad; duration: 1000 }
0122 }
0123 Behavior on y {
0124 PropertyAnimation { easing.type: Easing.OutQuad; duration: 1000 }
0125 }
0126 }