Warning, /education/gcompris/src/activities/categorization/Categorization.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - categorization.qml
0002 *
0003 * SPDX-FileCopyrightText: 2016 Divyam Madaan <divyam3897@gmail.com>
0004 *
0005 * Authors:
0006 * Divyam Madaan <divyam3897@gmail.com>
0007 *
0008 * SPDX-License-Identifier: GPL-3.0-or-later
0009 */
0010
0011 import QtQuick 2.12
0012 import GCompris 1.0
0013
0014 import "../../core"
0015 import "categorization.js" as Activity
0016 import "qrc:/gcompris/src/core/core.js" as Core
0017 import "."
0018
0019 ActivityBase {
0020 id: activity
0021
0022 onStart: focus = true
0023 onStop: {}
0024
0025 property bool vert: background.width <= background.height
0026
0027 pageComponent: Image {
0028 id: background
0029 source: "qrc:/gcompris/src/activities/guesscount/resource/backgroundW01.svg"
0030 anchors.fill: parent
0031 sourceSize.width: parent.width
0032 signal start
0033 signal stop
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 categoryReview: categoryReview
0049 property alias menuScreen: menuScreen
0050 property alias menuModel: menuScreen.menuModel
0051 property alias dialogActivityConfig: dialogActivityConfig
0052 property string mode: "easy"
0053 property bool instructionsVisible: true
0054 property bool categoryImageChecked: (mode === "easy" || mode === "medium")
0055 property bool scoreChecked: (mode === "easy" || mode === "expert")
0056 property bool iAmReadyChecked: (mode === "expert")
0057 property bool displayUpdateDialogAtStart: true
0058 property var details
0059 property bool categoriesFallback
0060 property alias file: file
0061 property var categories: activity.datasetLoader.data
0062 property bool okEnabled: true
0063 }
0064
0065 onStart: {
0066 Activity.init(items)
0067 Activity.start()
0068 }
0069
0070 MenuScreen {
0071 id: menuScreen
0072
0073 File {
0074 id: file
0075 onError: console.error("File error: " + msg);
0076 }
0077 }
0078
0079 Rectangle {
0080 id: categoryArea
0081 color: "#00ffffff"
0082 anchors.top: background.top
0083 anchors.bottom: bar.top
0084 anchors.left: background.left
0085 anchors.right: background.right
0086 anchors.bottomMargin: bar.height * 0.2
0087 CategoryReview {
0088 id: categoryReview
0089 }
0090 }
0091
0092 DialogChooseLevel {
0093 id: dialogActivityConfig
0094 currentActivity: activity.activityInfo
0095
0096 onLoadData: {
0097 if(activityData && activityData["mode"])
0098 items.mode = activityData["mode"]
0099 if(activityData && activityData["displayUpdateDialogAtStart"] !== undefined)
0100 items.displayUpdateDialogAtStart = (activityData["displayUpdateDialogAtStart"] === "true") ? true : false
0101 }
0102
0103 onSaveData: {
0104 activityData["displayUpdateDialogAtStart"] = items.displayUpdateDialogAtStart
0105 levelFolder = dialogActivityConfig.chosenLevels
0106 currentActivity.currentLevels = dialogActivityConfig.chosenLevels
0107 ApplicationSettings.setCurrentLevels(currentActivity.name, dialogActivityConfig.chosenLevels)
0108 }
0109
0110 onStartActivity: {
0111 items.mode = activityData["mode"]
0112 items.menuScreen.iAmReady.visible = (activityData["mode"] === "expert") ? true : false;
0113 background.stop();
0114 background.start()
0115 }
0116 onClose: home()
0117 }
0118
0119 DialogHelp {
0120 id: dialogHelp
0121 onClose: home()
0122 }
0123
0124 Bar {
0125 id: bar
0126 level: items.currentLevel + 1
0127 content: menuScreen.started ? withConfig : withoutConfig
0128 property BarEnumContent withConfig: BarEnumContent { value: help | home | activityConfig}
0129 property BarEnumContent withoutConfig: BarEnumContent { value: home | level }
0130 onPreviousLevelClicked: Activity.previousLevel()
0131 onNextLevelClicked: Activity.nextLevel()
0132 onHelpClicked: {
0133 displayDialog(dialogHelp)
0134 }
0135 onHomeClicked: {
0136 if(items.menuScreen.started)
0137 activity.home()
0138 else if(items.categoryReview.started)
0139 Activity.launchMenuScreen()
0140 }
0141 onActivityConfigClicked: {
0142 displayDialog(dialogActivityConfig)
0143 }
0144 }
0145
0146 Bonus {
0147 id: bonus
0148 Component.onCompleted: win.connect(Activity.nextLevel)
0149 onStop: items.okEnabled = true
0150 }
0151
0152 Loader {
0153 id: categoriesFallbackDialog
0154 sourceComponent: GCDialog {
0155 parent: activity.main
0156 isDestructible: false
0157 message: qsTr("You don't have all the images for this activity. " +
0158 "Click on 'Update the image set' to download the full word image set. " +
0159 "Click on the cross or on 'Never show this dialog again' to play with the demo version.")
0160 button1Text: qsTr("Update the image set")
0161 button2Text: qsTr("Never show this dialog again")
0162 onClose: items.categoriesFallback = false
0163 onButton1Hit: DownloadManager.downloadResource(GCompris.WORDSET)
0164 onButton2Hit: { items.displayUpdateDialogAtStart = false; items.dialogActivityConfig.saveData()}
0165 }
0166 anchors.fill: parent
0167 focus: true
0168 active: items.categoriesFallback && items.displayUpdateDialogAtStart && ApplicationInfo.isDownloadAllowed;
0169 onStatusChanged: if (status == Loader.Ready) item.start()
0170 }
0171 }
0172 }