Warning, /education/gcompris/src/activities/guessnumber/Guessnumber.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - guessnumber.qml 0002 * 0003 * SPDX-FileCopyrightText: 2014 Thib ROMAIN <thibrom@gmail.com> 0004 * 0005 * Authors: 0006 * Clement Coudoin <clement.coudoin@free.fr> (GTK+ version) 0007 * Thib ROMAIN <thibrom@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 0014 import "../../core" 0015 import "guessnumber.js" as Activity 0016 0017 ActivityBase { 0018 id: activity 0019 0020 onStart: focus = true 0021 onStop: {} 0022 0023 property alias currentActivity: activity.activityInfo 0024 0025 pageComponent: Rectangle { 0026 id: background 0027 color: "#5a3820" 0028 0029 signal start 0030 signal stop 0031 0032 onWidthChanged: helico.init() 0033 onHeightChanged: helico.init() 0034 0035 Component.onCompleted: { 0036 dialogActivityConfig.initialize() 0037 activity.start.connect(start) 0038 activity.stop.connect(stop) 0039 } 0040 0041 // Add here the QML items you need to access in javascript 0042 QtObject { 0043 id: items 0044 property Item main: activity.main 0045 property alias background: background 0046 property int currentLevel: activity.currentLevel 0047 property alias bonus: bonus 0048 property alias helico: helico 0049 property alias textArea: textArea 0050 property alias infoText: userInfo 0051 property alias answerArea: answerArea 0052 readonly property var levels: activity.datasetLoader.data.length !== 0 ? activity.datasetLoader.data : null 0053 property int currentMax: 0 0054 property alias numpad: numpad 0055 property int maxSize: background.height * 0.16 0056 property int size: 70 * ApplicationInfo.ratio 0057 property int barHeightAddon: ApplicationSettings.isBarHidden ? 1 : 3 0058 } 0059 0060 onStart: { Activity.start(items) } 0061 onStop: { Activity.stop() } 0062 0063 // the cave image needs to be aligned on the right to always see the exit 0064 Image { 0065 source: "resource/cave.svg" 0066 height: parent.height 0067 sourceSize.height: height 0068 anchors.right: parent.right 0069 } 0070 0071 Helico { 0072 id: helico 0073 fillMode: "PreserveAspectFit" 0074 sourceSize.height: height 0075 height: (items.size>items.maxSize) ? items.maxSize : items.size 0076 } 0077 0078 GCText { 0079 id: textArea 0080 anchors.top: parent.top 0081 anchors.topMargin: 10 0082 anchors.left: parent.left 0083 anchors.leftMargin: numpad.columnWidth + 10 0084 anchors.right: answerArea.left 0085 horizontalAlignment: Text.AlignHCenter 0086 width: parent.width - answerArea.width - 10 0087 wrapMode: TextEdit.WordWrap 0088 color: "white" 0089 font.bold: true 0090 fontSize: mediumSize 0091 } 0092 0093 AnswerArea { 0094 id: answerArea 0095 anchors.right: parent.right 0096 anchors.rightMargin: numpad.visible ? 0097 numpad.columnWidth + 10 * ApplicationInfo.ratio : 0098 10 * ApplicationInfo.ratio 0099 anchors.top: parent.top 0100 anchors.topMargin: 10 0101 } 0102 0103 GCText { 0104 id: userInfo 0105 anchors.top: textArea.top 0106 anchors.topMargin: 15 + textArea.contentHeight 0107 anchors.horizontalCenter: textArea.horizontalCenter 0108 color: "white" 0109 font.bold: true 0110 fontSize: regularSize 0111 } 0112 0113 NumPad { 0114 id: numpad 0115 onAnswerChanged: { 0116 if(answer && answerArea.userEntry != answer) 0117 activity.audioEffects.play('qrc:/gcompris/src/activities/guessnumber/resource/helicopter.wav') 0118 answerArea.userEntry = answer 0119 } 0120 maxDigit: ("" + items.currentMax).length 0121 columnWidth: 60 * ApplicationInfo.ratio 0122 enableInput: !bonus.isPlaying 0123 } 0124 0125 Keys.onPressed: { 0126 numpad.updateAnswer(event.key, true); 0127 } 0128 0129 Keys.onReleased: { 0130 numpad.updateAnswer(event.key, false); 0131 } 0132 0133 DialogChooseLevel { 0134 id: dialogActivityConfig 0135 currentActivity: activity.activityInfo 0136 0137 onSaveData: { 0138 levelFolder = dialogActivityConfig.chosenLevels 0139 currentActivity.currentLevels = dialogActivityConfig.chosenLevels 0140 ApplicationSettings.setCurrentLevels(currentActivity.name, dialogActivityConfig.chosenLevels) 0141 } 0142 0143 onLoadData: { 0144 if(activityData) { 0145 Activity.initLevel() 0146 } 0147 } 0148 onClose: { 0149 home() 0150 } 0151 onStartActivity: { 0152 background.stop() 0153 background.start() 0154 } 0155 } 0156 0157 DialogHelp { 0158 id: dialogHelp 0159 onClose: home() 0160 } 0161 0162 Bar { 0163 id: bar 0164 level: items.currentLevel + 1 0165 content: BarEnumContent { value: help | home | level | activityConfig } 0166 onHelpClicked: { 0167 displayDialog(dialogHelp) 0168 } 0169 onActivityConfigClicked: { 0170 displayDialog(dialogActivityConfig) 0171 } 0172 onPreviousLevelClicked: Activity.previousLevel() 0173 onNextLevelClicked: Activity.nextLevel() 0174 onHomeClicked: activity.home() 0175 } 0176 0177 Bonus { 0178 id: bonus 0179 Component.onCompleted: win.connect(Activity.nextLevel) 0180 } 0181 } 0182 0183 }