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