From 1f496b5a0c5f9a59eff39d66bd61a3628d24ca0d Mon Sep 17 00:00:00 2001 From: Daniel Ocks Date: Mon, 28 Jul 2025 10:56:30 +0200 Subject: [PATCH] Erweiterung des Frameworks. --- app/src/main/assets/questionnaire_order.json | 16 +++++--- .../com/dano/test1/HandlerOpeningScreen.kt | 38 +++++++++++++------ .../java/com/dano/test1/QuestionnaireItem.kt | 3 +- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/app/src/main/assets/questionnaire_order.json b/app/src/main/assets/questionnaire_order.json index eac5793..18ac359 100644 --- a/app/src/main/assets/questionnaire_order.json +++ b/app/src/main/assets/questionnaire_order.json @@ -1,18 +1,23 @@ [ { - "file": "questionnaire_1_demographic_information.json" + "file": "questionnaire_1_demographic_information.json", + "showPoints": false }, { - "file": "questionnaire_2_rhs.json" + "file": "questionnaire_2_rhs.json", + "showPoints": true }, { - "file": "questionnaire_3_integration_index.json" + "file": "questionnaire_3_integration_index.json", + "showPoints": true }, { - "file": "questionnaire_4_consultation_results.json" + "file": "questionnaire_4_consultation_results.json", + "showPoints": false }, { "file": "questionnaire_5_final_interview.json", + "showPoints": false, "condition": { "questionnaire": "questionnaire_4_consultation_results", "questionId": "consultation_decision", @@ -21,6 +26,7 @@ } }, { - "file": "questionnaire_6_follow_up_survey.json" + "file": "questionnaire_6_follow_up_survey.json", + "showPoints": false } ] diff --git a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt b/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt index 180a698..0450b88 100644 --- a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt +++ b/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt @@ -73,7 +73,10 @@ class HandlerOpeningScreen(private val activity: MainActivity) { value = conditionObj.getString("value") ) } else null - QuestionItem.QuestionnaireEntry(file, condition) + + val showPoints = obj.optBoolean("showPoints", false) + + QuestionItem.QuestionnaireEntry(file, condition, showPoints) } } catch (e: Exception) { e.printStackTrace() @@ -81,7 +84,6 @@ class HandlerOpeningScreen(private val activity: MainActivity) { } } - private fun createQuestionnaireButtons() { buttonContainer.removeAllViews() dynamicButtons.clear() @@ -204,7 +206,7 @@ class HandlerOpeningScreen(private val activity: MainActivity) { buttonPoints.clear() for (entry in completedEntries) { - if (entry.isDone && (entry.sumPoints ?: 0) > 0) { + if (entry.isDone) { buttonPoints[entry.questionnaireId] = entry.sumPoints ?: 0 if (entry.questionnaireId.contains("questionnaire_3_integration_index", ignoreCase = true)) { @@ -255,28 +257,40 @@ class HandlerOpeningScreen(private val activity: MainActivity) { private fun updateButtonTexts() { questionnaireFiles.forEach { (button, fileName) -> + + // Suche passenden QuestionnaireEntry + val entry = questionnaireEntries.firstOrNull { it.file == fileName } + val key = fileName.substringAfter("questionnaire_").substringAfter("_").removeSuffix(".json") var buttonText = LanguageManager.getText(languageID, key) - val matchedEntry = buttonPoints.entries.firstOrNull { fileName.contains(it.key, ignoreCase = true) } - val points = matchedEntry?.value ?: 0 - if (points > 0) { + val pointsAvailable = buttonPoints.entries.firstOrNull { fileName.contains(it.key, ignoreCase = true) } + val points = pointsAvailable?.value ?: 0 + + if (entry?.showPoints == true && pointsAvailable != null) { buttonText += " (${points} P)" } + button.text = buttonText - // Farbgebung je nach Punktzahl - when { - points in 1..12 -> button.setBackgroundColor(Color.parseColor("#4CAF50")) // Grün - points in 13..36 -> button.setBackgroundColor(Color.parseColor("#FFEB3B")) // Gelb - points in 37..100 -> button.setBackgroundColor(Color.parseColor("#F44336")) // Rot - else -> button.setBackgroundColor(Color.parseColor("#E0E0E0")) // Standardgrau bei 0 + // Farbe setzen nur wenn Punkte angezeigt werden und Fragebogen ausgefüllt ist + if (entry?.showPoints == true && pointsAvailable != null) { + when { + points in 0..12 -> button.setBackgroundColor(Color.parseColor("#4CAF50")) // Grün + points in 13..36 -> button.setBackgroundColor(Color.parseColor("#FFEB3B")) // Gelb + points in 37..100 -> button.setBackgroundColor(Color.parseColor("#F44336")) // Rot + else -> button.setBackgroundColor(Color.parseColor("#E0E0E0")) // Grau bei 0 Punkten + } + } else { + // Standardgrau, wenn Punkte nicht angezeigt werden sollen oder Fragebogen nicht ausgefüllt ist + button.setBackgroundColor(Color.parseColor("#E0E0E0")) } } buttonLoad.text = LanguageManager.getText(languageID, "load") } + private fun setButtonsEnabled(enabledButtons: List