Warning, /education/gcompris/src/activities/traffic/Traffic.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - Traffic.qml
0002 *
0003 * SPDX-FileCopyrightText: 2014 Holger Kaelberer <holger.k@elberer.de>
0004 *
0005 * Authors:
0006 * Bruno Coudoin <bruno.coudoin@gcompris.net> (GTK+ version)
0007 * Holger Kaelberer <holger.k@elberer.de> (Qt Quick port)
0008 *
0009 * SPDX-License-Identifier: GPL-3.0-or-later
0010 */
0011
0012 import QtQuick 2.12
0013 import GCompris 1.0
0014
0015 import "../../core"
0016 import "traffic.js" as Activity
0017
0018 ActivityBase {
0019 id: activity
0020
0021 onStart: focus = true
0022 onStop: {}
0023
0024 pageComponent: Rectangle {
0025 id: background
0026 color: "#64B560"
0027
0028 signal start
0029 signal stop
0030
0031 property string mode: "IMAGE" // allow to choose between "COLOR" and "IMAGE"
0032 Component.onCompleted: {
0033 dialogActivityConfig.initialize()
0034 activity.start.connect(start)
0035 activity.stop.connect(stop)
0036 }
0037
0038 QtObject {
0039 id: items
0040 property Item main: activity.main
0041 property GCSfx audioEffects: activity.audioEffects
0042 property alias background: background
0043 property int currentLevel: activity.currentLevel
0044 property alias bonus: bonus
0045 property alias score: score
0046 property alias jamBox: jamBox
0047 property alias jamGrid: jamGrid
0048 property bool isVertical: background.width < background.height - 64 * ApplicationInfo.ratio
0049 }
0050
0051 onStart: { Activity.start(items, mode) }
0052 onStop: { Activity.stop() }
0053
0054 Rectangle {
0055 color: "#9EC282"
0056 width: jamBox.width * 1.075
0057 height: width
0058 radius: width * 0.15
0059 anchors.centerIn: jamBox
0060 }
0061 Rectangle {
0062 color: "#9EC282"
0063 width: background.width * 0.5
0064 height: jamBox.height * 0.2
0065 anchors.left: jamBox.horizontalCenter
0066 anchors.verticalCenter: outsideRoad.verticalCenter
0067 }
0068 Rectangle {
0069 id: outsideRoad
0070 color: "#444444"
0071 width: background.width * 0.5
0072 height: jamBox.height * 0.125
0073 anchors.left: jamBox.horizontalCenter
0074 anchors.bottom: jamBox.verticalCenter
0075 }
0076
0077 Image {
0078 id: jamBox
0079 source: "qrc:/gcompris/src/activities/traffic/resource/jamBox.svg"
0080 width: parent.height - 64 * ApplicationInfo.ratio
0081 height: width
0082 sourceSize.width: width
0083 sourceSize.height: height
0084 anchors.horizontalCenter: background.horizontalCenter
0085 states: [
0086 State {
0087 name: "verticalLayout"
0088 when: items.isVertical
0089 PropertyChanges {
0090 target: jamBox
0091 width: parent.width
0092 }
0093 AnchorChanges {
0094 target: jamBox
0095 anchors.top: undefined
0096 anchors.verticalCenter: background.verticalCenter
0097 }
0098 },
0099 State {
0100 name: "horizontalLayout"
0101 when: !items.isVertical
0102 PropertyChanges {
0103 target: jamBox
0104 width: parent.height - 64 * ApplicationInfo.ratio
0105 }
0106 AnchorChanges {
0107 target: jamBox
0108 anchors.top: parent.top
0109 anchors.verticalCenter: undefined
0110 }
0111 }
0112 ]
0113
0114 Grid {
0115 id: jamGrid
0116 anchors.centerIn: parent
0117 width: parent.width * 0.75
0118 height: width
0119 columns: 6
0120 rows: 6
0121 spacing: 0
0122 // Add an alias to mode so it can be used on Car items
0123 property alias mode: background.mode
0124 Repeater {
0125 id: gridRepeater
0126 model: jamGrid.columns * jamGrid.rows
0127
0128 delegate: Rectangle {
0129 id: gridDelegate
0130 height: jamGrid.height / jamGrid.rows
0131 width: height
0132 border.width: 1
0133 border.color: "#A2A2A2"
0134 color: "transparent"
0135 }
0136 }
0137 }
0138 }
0139
0140 DialogHelp {
0141 id: dialogHelp
0142 onClose: home()
0143 }
0144
0145 DialogChooseLevel {
0146 id: dialogActivityConfig
0147 currentActivity: activity.activityInfo
0148
0149 onClose: {
0150 home()
0151 }
0152 onLoadData: {
0153 if(activityData && activityData["mode"]) {
0154 background.mode = activityData["mode"];
0155 }
0156 }
0157 }
0158
0159 Bar {
0160 id: bar
0161 level: items.currentLevel + 1
0162 content: BarEnumContent { value: help | home | level | reload | activityConfig }
0163 onHelpClicked: {
0164 displayDialog(dialogHelp)
0165 }
0166 onPreviousLevelClicked: Activity.previousLevel()
0167 onNextLevelClicked: Activity.nextLevel()
0168 onHomeClicked: activity.home()
0169 onReloadClicked: Activity.initLevel()
0170 onActivityConfigClicked: {
0171 displayDialog(dialogActivityConfig)
0172 }
0173 }
0174
0175 Bonus {
0176 id: bonus
0177 Component.onCompleted: win.connect(Activity.nextLevel)
0178 }
0179
0180 Score {
0181 id: score
0182 anchors.top: parent.top
0183 anchors.topMargin: 10 * ApplicationInfo.ratio
0184 anchors.right: parent.right
0185 anchors.rightMargin: 10 * ApplicationInfo.ratio
0186 anchors.bottom: undefined
0187 onStop: Activity.nextSubLevel()
0188 }
0189 }
0190 }