diff --git a/src/activities/letter-in-word/LetterInWord.qml b/src/activities/letter-in-word/LetterInWord.qml --- a/src/activities/letter-in-word/LetterInWord.qml +++ b/src/activities/letter-in-word/LetterInWord.qml @@ -66,6 +66,12 @@ property alias bar: bar property alias background: background property alias wordsModel: wordsModel + property int currentLetterCase: 0 + property var letterCase: [ + {"text": qsTr("Lower Case")}, + {"text": qsTr("Upper Case")}, + {"text": qsTr("Mixed Case")} + ] property int currentMode: normalModeWordCount readonly property int easyModeWordCount: 5 readonly property int normalModeWordCount: 11 @@ -107,9 +113,11 @@ property alias localeBox: localeBox property alias easyModeConfig: easyModeConfig property alias normalModeConfig: normalModeConfig + property alias letterCaseBox: letterCaseBox height: column.height property alias availableLangs: langs.languages + LanguageList { id: langs } @@ -140,6 +148,19 @@ spacing: 5 width: dialogActivityConfig.width GCComboBox { + id: letterCaseBox + label: qsTr("Select case for letter to be searched") + background: dialogActivityConfig + model: items.letterCase + currentText: model[items.currentLetterCase].text + currentIndex: items.currentLetterCase + } + } + + Flow { + spacing: 5 + width: dialogActivityConfig.width + GCComboBox { id: localeBox model: langs.languages background: dialogActivityConfig @@ -156,6 +177,10 @@ items.currentMode = dataToSave["savedMode"] === "5" ? items.easyModeWordCount : items.normalModeWordCount } + if(dataToSave && dataToSave["savedLetterMode"]) { + items.currentLetterCase = dataToSave["savedLetterCase"] + } + if(dataToSave && dataToSave["locale"]) { background.locale = dataToSave["locale"]; } @@ -172,12 +197,15 @@ var oldMode = items.currentMode items.currentMode = dialogActivityConfig.loader.item.easyModeConfig.checked ? items.easyModeWordCount : items.normalModeWordCount - dataToSave = {"locale": newLocale, "savedMode": items.currentMode} + var oldLetterCase = items.currentLetterCase + items.currentLetterCase = dialogActivityConfig.loader.item.letterCaseBox.currentIndex + + dataToSave = {"locale": newLocale, "savedMode": items.currentMode, "savedLetterCase": items.currentLetterCase} background.locale = newLocale; // Restart the activity with new information - if(oldLocale !== newLocale || oldMode !== items.currentMode) { + if(oldLocale !== newLocale || oldMode !== items.currentMode || oldLetterCase !== items.currentLetterCase) { background.stop(); background.start(); } @@ -263,6 +291,11 @@ } fontSize: hugeSize font.weight: Font.DemiBold + font.capitalization: { + if (items.currentLetterCase == 2) return Math.floor(Math.random() * 2) + else return items.currentLetterCase + } + color: "#2a2a2a" text: items.question } diff --git a/src/activities/letter-in-word/letter-in-word.js b/src/activities/letter-in-word/letter-in-word.js --- a/src/activities/letter-in-word/letter-in-word.js +++ b/src/activities/letter-in-word/letter-in-word.js @@ -118,7 +118,7 @@ } currentLetter = questions[currentSubLevel]; - items.question = currentLetter + items.question = items.isCaps ? currentLetter.toUpperCase() : currentLetter; items.animateX.restart(); if (GCompris.ApplicationSettings.isAudioVoicesEnabled &&