File indexing completed on 2024-04-28 15:07:45

0001 /* GCompris - braille_alphabets.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Arkit Vora <arkitvora123@gmail.com>
0004  *
0005  * Authors:
0006  *   Srishti Sethi <srishakatux@gmail.com> (GTK+ version)
0007  *   Arkit Vora <arkitvora123@gmail.com> (Qt Quick port)
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 .pragma library
0012 .import QtQuick 2.12 as Quick
0013 .import "qrc:/gcompris/src/core/core.js" as Core
0014 
0015 var url = "qrc:/gcompris/src/activities/braille_alphabets/resource/"
0016 
0017 var numberOfLevel
0018 var items
0019 var dataset
0020 var currentDataSet
0021 
0022 function start(items_, dataset_) {
0023     items = items_
0024     dataset = dataset_.get()
0025     numberOfLevel = dataset.length * 2
0026     items.currentLevel = Core.getInitialLevel(numberOfLevel)
0027     initLevel()
0028 }
0029 
0030 function stop() {
0031 }
0032 
0033 function initLevel() {
0034     items.containerModel.clear()
0035 
0036     switch(items.currentLevel) {
0037         case 0:
0038             items.instructions = ""
0039             items.brailleCodeSeen = true
0040             currentDataSet = dataset[0].slice()
0041             break
0042         case 1:
0043             items.instructions = qsTr("Now it's a little bit harder without the reference.")
0044             items.brailleCodeSeen = false
0045             currentDataSet = dataset[0].slice()
0046             break
0047         case 2:
0048             items.instructions = qsTr("Look at the braille character chart and observe how similar the first and second lines are.")
0049             items.brailleCodeSeen = true
0050             currentDataSet = dataset[1].slice()
0051             break
0052         case 3:
0053             items.instructions = qsTr("Now it's a little bit harder without the reference.")
0054             items.brailleCodeSeen = false
0055             currentDataSet = dataset[1].slice()
0056             break
0057         case 4:
0058             items.instructions = qsTr("Again, similar to the first line in the character chart but take care, the 'W' letter was added afterward.")
0059             items.brailleCodeSeen = true
0060             currentDataSet = dataset[2].slice()
0061             break
0062         case 5:
0063             items.instructions = qsTr("Now it's a little bit harder without the reference.")
0064             items.brailleCodeSeen = false
0065             currentDataSet = dataset[2].slice()
0066             break
0067         case 6:
0068             items.instructions = qsTr("This is easy, numbers are the same as letters from A to J.")
0069             items.brailleCodeSeen = true
0070             currentDataSet = dataset[3].slice()
0071             break
0072         case 7:
0073             items.instructions = qsTr("Now it's a little bit harder without the reference.")
0074             items.brailleCodeSeen = false
0075             currentDataSet = dataset[3].slice()
0076             break
0077         case 8:
0078             items.instructions = ""
0079             items.brailleCodeSeen = true
0080             currentDataSet = dataset[4].slice()
0081             break
0082         case 9:
0083             items.instructions = qsTr("Now it's a little bit harder without the reference.")
0084             items.brailleCodeSeen = false
0085             currentDataSet = dataset[4].slice()
0086             break
0087     }
0088 
0089     for(var i = 0;  i < currentDataSet.length; ++i) {
0090         items.containerModel.append(currentDataSet[i])
0091     }
0092 
0093     // Shuffle not to ask the question in the model order
0094     currentDataSet = Core.shuffle(currentDataSet)
0095 
0096     items.score.numberOfSubLevels = currentDataSet.length;
0097     items.score.currentSubLevel = 0;
0098 
0099     items.playableChar.isLetter = currentDataSet[0].letter >= "A" && currentDataSet[0].letter <= "Z"
0100     initQuestion()
0101 }
0102 
0103 function nextLevel() {
0104     items.score.stopWinAnimation();
0105     items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel);
0106     initLevel();
0107 }
0108 
0109 function previousLevel() {
0110     items.score.stopWinAnimation();
0111     items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel);
0112     initLevel();
0113 }
0114 
0115 function goodAnswer() {
0116     items.buttonsBlocked = true
0117     items.score.currentSubLevel++
0118     items.score.playWinAnimation()
0119     items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/completetask.wav");
0120 }
0121 
0122 function nextQuestion() {
0123     if(items.score.currentSubLevel >= items.score.numberOfSubLevels) {
0124         items.bonus.good("flower")
0125     } else {
0126         initQuestion()
0127     }
0128 }
0129 
0130 function initQuestion() {
0131     items.playableChar.clearLetter()
0132     items.questionItem.text = getCurrentTextQuestion()
0133     if(items.instructions)
0134         items.questionItem.text += "\n" + items.instructions
0135     items.buttonsBlocked = false
0136 }
0137 
0138 function getCurrentTextQuestion() {
0139     return currentDataSet[items.score.currentSubLevel].text.arg(getCurrentLetter())
0140 }
0141 
0142 function getCurrentLetter() {
0143     return currentDataSet[items.score.currentSubLevel].letter
0144 }
0145