From 5f568f4c0e5cd1eba911e64cc212c8755b8d880f Mon Sep 17 00:00:00 2001 From: oxidiert Date: Thu, 21 Aug 2025 11:54:59 +0200 Subject: [PATCH] added edit mode for every important question layout --- .../java/com/dano/test1/HandlerDateSpinner.kt | 48 +++++++++- .../dano/test1/HandlerGlassScaleQuestion.kt | 65 +++++++++++++- .../test1/HandlerMultiCheckboxQuestion.kt | 90 ++++++++++++++++++- .../com/dano/test1/HandlerValueSpinner.kt | 29 +++++- .../java/com/dano/test1/QuestionnaireBase.kt | 8 +- 5 files changed, 229 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt b/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt index 87d4943..db34a78 100644 --- a/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt +++ b/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt @@ -3,6 +3,7 @@ package com.dano.test1 import android.content.Context import android.view.View import android.widget.* +import kotlinx.coroutines.* import java.text.SimpleDateFormat import java.util.* @@ -12,7 +13,8 @@ class HandlerDateSpinner( private val languageID: String, private val goToNextQuestion: () -> Unit, private val goToPreviousQuestion: () -> Unit, - private val showToast: (String) -> Unit + private val showToast: (String) -> Unit, + private val questionnaireMeta: String // neu für DB-Abfrage ) : QuestionHandler { private lateinit var question: QuestionItem.DateSpinnerQuestion @@ -36,6 +38,7 @@ class HandlerDateSpinner( questionTextView.text = question.question?.let { LanguageManager.getText(languageID, it) } ?: "" textView.text = question.textKey?.let { LanguageManager.getText(languageID, it) } ?: "" + // --- gespeicherte Antwort aus answers oder null --- val (savedYear, savedMonthIndex, savedDay) = question.question?.let { parseSavedDate(answers[it] as? String) } ?: Triple(null, null, null) @@ -54,6 +57,49 @@ class HandlerDateSpinner( setupSpinner(spinnerMonth, months, defaultMonth) setupSpinner(spinnerYear, years, defaultYear) + // --- DB-Abfrage falls noch nichts in answers gespeichert --- + val answerMapKey = question.question ?: (question.id ?: "") + if (answerMapKey.isNotBlank() && !answers.containsKey(answerMapKey)) { + CoroutineScope(Dispatchers.IO).launch { + try { + val clientCode = GlobalValues.LAST_CLIENT_CODE + if (clientCode.isNullOrBlank()) return@launch + + val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val myQuestionId = questionnaireMeta + "-" + question.question + val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue + + if (!dbAnswer.isNullOrBlank()) { + withContext(Dispatchers.Main) { + answers[answerMapKey] = dbAnswer + + val (dbYear, dbMonthIndex, dbDay) = parseSavedDate(dbAnswer) + + dbYear?.let { year -> + val index = years.indexOf(year) + if (index >= 0) spinnerYear.setSelection(index) + } + + dbMonthIndex?.let { monthIndex -> + if (monthIndex in months.indices) { + val monthObj = months[monthIndex] + val idx = months.indexOf(monthObj) + if (idx >= 0) spinnerMonth.setSelection(idx) + } + } + + dbDay?.let { day -> + val idx = days.indexOf(day) + if (idx >= 0) spinnerDay.setSelection(idx) + } + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + } + layout.findViewById