diff --git a/app/src/main/assets/header_order.json b/app/src/main/assets/header_order.json new file mode 100644 index 0000000..31c0c8e --- /dev/null +++ b/app/src/main/assets/header_order.json @@ -0,0 +1,106 @@ +[ + "client_code", + "questionnaire_1_demographic_information", + "questionnaire_1_demographic_information-coach_code", + "questionnaire_1_demographic_information-consent_instruction", + "questionnaire_1_demographic_information-no_consent_entered", + "questionnaire_1_demographic_information-accommodation", + "questionnaire_1_demographic_information-other_accommodation", + "questionnaire_1_demographic_information-client_code_entry_question", + "questionnaire_1_demographic_information-age", + "questionnaire_1_demographic_information-gender", + "questionnaire_1_demographic_information-country_of_origin", + "questionnaire_1_demographic_information-departure_country", + "questionnaire_1_demographic_information-since_in_germany", + "questionnaire_1_demographic_information-living_situation", + "questionnaire_1_demographic_information-number_family_members", + "questionnaire_1_demographic_information-languages_spoken", + "questionnaire_1_demographic_information-german_skills", + "questionnaire_1_demographic_information-school_years_total", + "questionnaire_1_demographic_information-school_years_origin", + "questionnaire_1_demographic_information-school_years_transit", + "questionnaire_1_demographic_information-school_years_germany", + "questionnaire_1_demographic_information-vocational_training", + "questionnaire_1_demographic_information-provisional_accommodation_since", + "questionnaire_2_rhs", + "questionnaire_2_rhs-coach_code", + "questionnaire_2_rhs-glass_explanation", + "questionnaire_2_rhs-q1_symptom", + "questionnaire_2_rhs-q2_symptom", + "questionnaire_2_rhs-q3_symptom", + "questionnaire_2_rhs-q4_symptom", + "questionnaire_2_rhs-q5_symptom", + "questionnaire_2_rhs-q6_symptom", + "questionnaire_2_rhs-q7_symptom", + "questionnaire_2_rhs-q8_symptom", + "questionnaire_2_rhs-q9_symptom", + "questionnaire_2_rhs-q10_reexperience_trauma", + "questionnaire_2_rhs-q11_physical_reaction", + "questionnaire_2_rhs-q12_emotional_numbness", + "questionnaire_2_rhs-q13_easily_startled", + "questionnaire_2_rhs-q14_intro", + "questionnaire_2_rhs-pain_rating_instruction", + "questionnaire_2_rhs-violence_question_1", + "questionnaire_2_rhs-times_happend", + "questionnaire_2_rhs-age_at_incident", + "questionnaire_2_rhs-conflict_since_arrival", + "questionnaire_2_rhs-times_happend2", + "questionnaire_2_rhs-age_at_incident2", + "questionnaire_2_rhs-asylum_procedure_since", + "questionnaire_3_integration_index", + "questionnaire_3_integration_index-coach_code", + "questionnaire_3_integration_index-feeling_connected_to_germany_question", + "questionnaire_3_integration_index-understanding_political_issues", + "questionnaire_3_integration_index-unexpected_expense_question", + "questionnaire_3_integration_index-dining_with_germans_question", + "questionnaire_3_integration_index-reading_german_articles_question", + "questionnaire_3_integration_index-visiting_doctor_question", + "questionnaire_3_integration_index-feeling_as_outsider_question", + "questionnaire_3_integration_index-recent_occupation_question", + "questionnaire_3_integration_index-discussing_politics_question", + "questionnaire_3_integration_index-contact_with_germans_question", + "questionnaire_3_integration_index-speaking_german_opinion_question", + "questionnaire_3_integration_index-job_search_question", + "questionnaire_4_consultation_results", + "questionnaire_4_consultation_results-coach_code", + "questionnaire_4_consultation_results-date_consultation_health_interview_result", + "questionnaire_4_consultation_results-consultation_decision", + "questionnaire_4_consultation_results-consent_conversation_in_6_months", + "questionnaire_4_consultation_results-participation_in_coaching", + "questionnaire_4_consultation_results-consent_coaching_given", + "questionnaire_4_consultation_results-consent_conversation_in_6_months", + "questionnaire_4_consultation_results-decision_after_reflection_period", + "questionnaire_4_consultation_results-professional_referral", + "questionnaire_4_consultation_results-confidentiality_agreement", + "questionnaire_4_consultation_results-health_insurance_card", + "questionnaire_4_consultation_results-consent_conversation_in_6_months", + "questionnaire_5_final_interview", + "questionnaire_5_final_interview-coach_code", + "questionnaire_5_final_interview-consent_followup_6_months", + "questionnaire_5_final_interview-date_final_interview", + "questionnaire_5_final_interview-amount_nat_appointments", + "questionnaire_5_final_interview-amount_session_flowers", + "questionnaire_5_final_interview-amount_session_stones", + "questionnaire_5_final_interview-termination_nat_coaching", + "questionnaire_5_final_interview-client_canceled_NAT", + "questionnaire_6_follow_up_survey", + "questionnaire_6_follow_up_survey-coach_code", + "questionnaire_6_follow_up_survey-follow_up", + "questionnaire_6_follow_up_survey-special_burden_question", + "questionnaire_6_follow_up_survey-glass_explanation", + "questionnaire_6_follow_up_survey-how_strong_past_month", + "questionnaire_6_follow_up_survey-q14_intro", + "questionnaire_6_follow_up_survey-pain_rating_instruction", + "questionnaire_6_follow_up_survey-feeling_connected_to_germany_question", + "questionnaire_6_follow_up_survey-understanding_political_issues", + "questionnaire_6_follow_up_survey-unexpected_expense_question", + "questionnaire_6_follow_up_survey-dining_with_germans_question", + "questionnaire_6_follow_up_survey-reading_german_articles_question", + "questionnaire_6_follow_up_survey-visiting_doctor_question", + "questionnaire_6_follow_up_survey-feeling_as_outsider_question", + "questionnaire_6_follow_up_survey-recent_occupation_question", + "questionnaire_6_follow_up_survey-discussing_politics_question", + "questionnaire_6_follow_up_survey-contact_with_germans_question", + "questionnaire_6_follow_up_survey-speaking_german_opinion_question", + "questionnaire_6_follow_up_survey-job_search_question" +] diff --git a/app/src/main/assets/questionnaire_2_rhs.json b/app/src/main/assets/questionnaire_2_rhs.json index 511610c..4699964 100644 --- a/app/src/main/assets/questionnaire_2_rhs.json +++ b/app/src/main/assets/questionnaire_2_rhs.json @@ -107,7 +107,7 @@ { "id": "q11", "layout": "radio_question", - "question": "times_happend", + "question": "times_happend2", "options": [ { "key": "once" }, { "key": "multiple_times" } @@ -116,7 +116,7 @@ { "id": "q12", "layout": "value_spinner", - "question": "age_at_incident", + "question": "age_at_incident2", "range": { "min": 1, "max": 122 diff --git a/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt b/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt index efcc5b0..8868b2c 100644 --- a/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt +++ b/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt @@ -4,12 +4,12 @@ import android.util.Log import android.view.View import android.widget.* import com.dano.test1.data.Client -import com.dano.test1.data.CompletedQuestionnaire import com.dano.test1.data.Question import com.dano.test1.data.Questionnaire import kotlinx.coroutines.* +import org.json.JSONArray +import java.nio.charset.Charset import kotlin.math.roundToInt -import com.dano.test1.R class DatabaseButtonHandler( private val activity: MainActivity, @@ -19,6 +19,9 @@ class DatabaseButtonHandler( private val uiScope = CoroutineScope(SupervisorJob() + Dispatchers.Main) private val tag = "DatabaseButtonHandler" + // Cache für geladene IDs aus assets/header_order.json + private var orderedIdsCache: List? = null + fun setup() { databaseButton.text = "Datenbank" databaseButton.setOnClickListener { openDatabaseScreen() } @@ -66,65 +69,124 @@ class DatabaseButtonHandler( } // --------------------------- - // SCREEN 2: Fragebogen-Übersicht für einen Client + // SCREEN 2: Fragebogen-Übersicht + "header"-Liste für einen Client // --------------------------- private fun openClientOverviewScreen(clientCode: String) { activity.setContentView(R.layout.client_overview_screen) val title: TextView = requireView(R.id.titleClientOverview, "titleClientOverview") - val table: TableLayout = requireView(R.id.tableQuestionnaires, "tableQuestionnaires") + val tableQ: TableLayout = requireView(R.id.tableQuestionnaires, "tableQuestionnaires") val progress: ProgressBar = requireView(R.id.progressBarClient, "progressBarClient") val emptyView: TextView = requireView(R.id.emptyViewClient, "emptyViewClient") val backButton: Button = requireView(R.id.backButtonClient, "backButtonClient") + // "header" Sektion + val headerLabel: TextView = requireView(R.id.headerLabel, "headerLabel") + val tableOrdered: TableLayout = requireView(R.id.tableOrdered, "tableOrdered") + title.text = "Client: $clientCode – Fragebögen" + headerLabel.text = "header" backButton.setOnClickListener { openDatabaseScreen() } progress.visibility = View.VISIBLE emptyView.visibility = View.GONE - table.removeAllViews() + tableQ.removeAllViews() + tableOrdered.removeAllViews() - addHeaderRow(table, listOf("#", "Fragebogen-ID", "Status")) + addHeaderRow(tableQ, listOf("#", "Fragebogen-ID", "Status")) + addHeaderRow(tableOrdered, listOf("#", "ID", "Wert")) uiScope.launch { - val (allQuestionnaires, completedForClient) = withContext(Dispatchers.IO) { - val qs = MyApp.database.questionnaireDao().getAll() - val done = MyApp.database.completedQuestionnaireDao().getAllForClient(clientCode) - qs to done + val result = withContext(Dispatchers.IO) { + val allQuestionnaires = MyApp.database.questionnaireDao().getAll() + val completedForClient = MyApp.database.completedQuestionnaireDao().getAllForClient(clientCode) + val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + Triple(allQuestionnaires, completedForClient, allAnswersForClient) } progress.visibility = View.GONE + val allQuestionnaires: List = result.first + val completedForClient = result.second + val allAnswersForClient = result.third + if (allQuestionnaires.isEmpty()) { emptyView.text = "Keine Fragebögen vorhanden." emptyView.visibility = View.VISIBLE - return@launch } val statusMap = completedForClient.associate { it.questionnaireId to it.isDone } + val questionnaireIdSet = allQuestionnaires.map { it.id }.toSet() + val answerMap = allAnswersForClient.associate { it.questionId to it.answerValue } - allQuestionnaires.forEachIndexed { idx, q -> + // *** Sortierung der FRAGEBÖGEN nach questionnaire_1..., _2..., _3..., _4..., _5..., _6... *** + val sortedQuestionnaires = allQuestionnaires.sortedWith( + compareBy( + { extractQuestionnaireNumber(it.id) ?: Int.MAX_VALUE }, + { it.id } + ) + ) + + // Tabelle 1: Fragebögen (nur ✓ klickbar) – HIER KEINE Hintergrundfarben, nur Textfarbe + sortedQuestionnaires.forEachIndexed { idx, q -> val isDone = statusMap[q.id] ?: false val statusText = if (isDone) "✓" else "✗" - val statusColor = if (isDone) 0xFF4CAF50.toInt() else 0xFFF44336.toInt() + val statusTextColor = if (isDone) 0xFF4CAF50.toInt() else 0xFFF44336.toInt() if (isDone) { - // NUR diese sind klickbar addClickableRow( - table = table, + table = tableQ, cells = listOf((idx + 1).toString(), q.id, statusText), onClick = { openQuestionnaireDetailScreen(clientCode, q.id) }, - colorOverrides = mapOf(2 to statusColor) + colorOverrides = mapOf(2 to statusTextColor), // nur Text einfärben + cellBgOverrides = emptyMap() ) } else { - // Nicht klickbar, leicht ausgegraut addDisabledRow( - table = table, + table = tableQ, cells = listOf((idx + 1).toString(), q.id, statusText), - colorOverrides = mapOf(2 to statusColor) + colorOverrides = mapOf(2 to statusTextColor), // nur Text einfärben + cellBgOverrides = emptyMap() ) } } + + // Tabelle 2: "header"-Liste in der Reihenfolge aus assets/header_order.json + // HIER: GRÜN/ROT als HINTERGRUND für Fragebögen + GELB für "None"-Zeilen + val orderedIds = loadOrderedIds() + orderedIds.forEachIndexed { idx, id -> + var rowBgColor: Int? = null + + val (value, bgColorForCells) = when { + id == "client_code" -> clientCode to null + id in questionnaireIdSet -> { + if (statusMap[id] == true) { + "Done" to 0xFF4CAF50.toInt() // GRÜN als Hintergrund + } else { + "Not Done" to 0xFFF44336.toInt() // ROT als Hintergrund + } + } + else -> { + val v = answerMap[id] + val out = if (!v.isNullOrBlank()) v else "None" + if (out == "None") { + rowBgColor = 0xFFFFF59D.toInt() // GELB ganze Zeile bei None + } + out to null + } + } + + // Für Fragebögen im Header: ID (Spalte 2) und Wert (Spalte 3) farbig HINTERLEGEN + val cellBg = if (bgColorForCells != null) mapOf(1 to bgColorForCells, 2 to bgColorForCells) else emptyMap() + + addRow( + table = tableOrdered, + cells = listOf((idx + 1).toString(), id, value), + colorOverrides = emptyMap(), // keine Textfarben im Header + rowBgColor = rowBgColor, // GELB für "None" + cellBgOverrides = cellBg // GRÜN/ROT für Done/Not Done + ) + } } } @@ -176,8 +238,33 @@ class DatabaseButtonHandler( } // --------------------------- - // UI-Helfer + // assets/header_order.json laden (mit Cache) // --------------------------- + private fun loadOrderedIds(): List { + orderedIdsCache?.let { return it } + return try { + val stream = activity.assets.open("header_order.json") + val json = stream.readBytes().toString(Charset.forName("UTF-8")) + val arr = JSONArray(json) + val list = MutableList(arr.length()) { i -> arr.getString(i) } + orderedIdsCache = list + list + } catch (e: Exception) { + Log.e(tag, "header_order.json konnte nicht geladen werden: ${e.message}") + Toast.makeText(activity, "header_order.json fehlt oder ist ungültig", Toast.LENGTH_LONG).show() + emptyList() + } + } + + // --------------------------- + // Hilfsfunktionen + // --------------------------- + private fun extractQuestionnaireNumber(id: String): Int? { + // Erwartet Präfix "questionnaire_" + val m = Regex("^questionnaire_(\\d+)").find(id.lowercase()) + return m?.groupValues?.get(1)?.toIntOrNull() + } + private fun addHeaderRow(table: TableLayout, labels: List) { val row = TableRow(activity) labels.forEach { label -> row.addView(makeHeaderCell(label)) } @@ -188,11 +275,16 @@ class DatabaseButtonHandler( private fun addRow( table: TableLayout, cells: List, - colorOverrides: Map = emptyMap() + colorOverrides: Map = emptyMap(), // optional: Textfarben je Spalte + rowBgColor: Int? = null, // optional: ganze Zeile hinterlegen + cellBgOverrides: Map = emptyMap() // optional: einzelne Zellen hinterlegen ) { val row = TableRow(activity) + rowBgColor?.let { row.setBackgroundColor(it) } + cells.forEachIndexed { index, text -> - row.addView(makeBodyCell(text, colorOverrides[index])) + val tv = makeBodyCell(text, colorOverrides[index], cellBgOverrides[index]) + row.addView(tv) } table.addView(row) addDivider(table) @@ -202,7 +294,8 @@ class DatabaseButtonHandler( table: TableLayout, cells: List, onClick: () -> Unit, - colorOverrides: Map = emptyMap() + colorOverrides: Map = emptyMap(), + cellBgOverrides: Map = emptyMap() ) { val row = TableRow(activity).apply { isClickable = true @@ -211,7 +304,8 @@ class DatabaseButtonHandler( setOnClickListener { onClick() } } cells.forEachIndexed { index, text -> - row.addView(makeBodyCell(text, colorOverrides[index])) + val tv = makeBodyCell(text, colorOverrides[index], cellBgOverrides[index]) + row.addView(tv) } table.addView(row) addDivider(table) @@ -220,15 +314,17 @@ class DatabaseButtonHandler( private fun addDisabledRow( table: TableLayout, cells: List, - colorOverrides: Map = emptyMap() + colorOverrides: Map = emptyMap(), + cellBgOverrides: Map = emptyMap() ) { val row = TableRow(activity).apply { isClickable = false isEnabled = false - alpha = 0.6f // leicht ausgegraut + alpha = 0.6f } cells.forEachIndexed { index, text -> - row.addView(makeBodyCell(text, colorOverrides[index])) + val tv = makeBodyCell(text, colorOverrides[index], cellBgOverrides[index]) + row.addView(tv) } table.addView(row) addDivider(table) @@ -253,12 +349,17 @@ class DatabaseButtonHandler( setTypeface(typeface, android.graphics.Typeface.BOLD) } - private fun makeBodyCell(text: String, color: Int? = null): TextView = + private fun makeBodyCell( + text: String, + textColor: Int? = null, + bgColor: Int? = null + ): TextView = TextView(activity).apply { this.text = text setPadding(dp(12), dp(10), dp(12), dp(10)) textSize = 15f - color?.let { setTextColor(it) } + textColor?.let { setTextColor(it) } + bgColor?.let { setBackgroundColor(it) } } private fun dp(value: Int): Int { diff --git a/app/src/main/java/com/dano/test1/LanguageManager.kt b/app/src/main/java/com/dano/test1/LanguageManager.kt index 91b9224..8179bab 100644 --- a/app/src/main/java/com/dano/test1/LanguageManager.kt +++ b/app/src/main/java/com/dano/test1/LanguageManager.kt @@ -188,6 +188,8 @@ object LanguageManager { "violence_question_1" to "Sind Sie jemals so schwer von anderen verletzt worden, dass Sie ärztliche Unterstützung benötigt haben? (Arzt, Krankenhaus)", "times_happend" to "Ist das ... passiert?", "age_at_incident" to "In welchem Alter: mit ... Jahren?", + "times_happend2" to "Ist das ... passiert?", + "age_at_incident2" to "In welchem Alter: mit ... Jahren?", "conflict_since_arrival" to "Seitdem Sie in Deutschland sind, sind Sie jemals in gewalttätige Konflikte (Prügelei, körperlich, und psychische Konflikte) geraten?", "finish_data_entry" to "Wenn Sie nun mit der Dateneingabe fertig sind, klicken Sie auf \"Speichern\".", "feeling_connected_to_germany_question" to "Wie stark fühlen Sie sich Deutschland verbunden (in Deutschland angekommen)?", @@ -487,6 +489,8 @@ object LanguageManager { "violence_question_1" to "Have you ever been injured by others so seriously that you needed medical attention? (doctor, hospital)", "times_happend" to "Has this ... happened?", "age_at_incident" to "At what age: at ... years?", + "times_happend2" to "Has this ... happened?", + "age_at_incident2" to "At what age: at ... years?", "conflict_since_arrival" to "Since arriving in Germany, have you ever been involved in violent conflicts (physical fights, physical or psychological conflicts)?", "finish_data_entry" to "When you have finished entering the data, click \"Save\".", "feeling_connected_to_germany_question" to "How connected do you feel to Germany (how well have you settled in Germany)?", @@ -781,6 +785,8 @@ object LanguageManager { "violence_question_1" to "Avez-vous déjà été blessé(e) si gravement par d’autres que vous avez dû consulter un médecin ou aller à l’hôpital ?", "times_happend" to "Cela est-il arrivé ... ?", "age_at_incident" to "À quel âge : à ... ans ?", + "times_happend2" to "Cela est-il arrivé ... ?", + "age_at_incident2" to "À quel âge : à ... ans ?", "conflict_since_arrival" to "Depuis votre arrivée en Allemagne, avez-vous été impliqué dans des conflits violents (bagarres, conflits physiques ou psychiques) ?", "finish_data_entry" to "Lorsque vous avez terminé la saisie des données, cliquez sur \"Enregistrer\".", "feeling_connected_to_germany_question" to "Dans quelle mesure vous sentez-vous lié(e) à l’Allemagne (vous êtes arrivé(e) en Allemagne) ?", @@ -1079,6 +1085,8 @@ object LanguageManager { "violence_question_1" to "Бывали ли случаи, когда вас так сильно ранили другие, что вам понадобилась медицинская помощь? (врач, больница)", "times_happend" to "Сколько раз это происходило?", "age_at_incident" to "В каком возрасте?", + "times_happend2" to "Сколько раз это происходило?", + "age_at_incident2" to "В каком возрасте?", "conflict_since_arrival" to "Бывали ли у вас с тех пор, как вы в Германии, случаи насильственных конфликтов (драки, физические или психологические конфликты)?", "finish_data_entry" to "Когда вы завершите ввод данных, нажмите \"Сохранить\".", "feeling_connected_to_germany_question" to "Насколько вы чувствуете себя связанным с Германией (адаптировались в Германии)?", @@ -1373,6 +1381,8 @@ object LanguageManager { "violence_question_1" to "Чи коли-небудь вас так сильно поранили інші, що вам потрібна була медична допомога? (лікар, лікарня)", "times_happend" to "Це сталося ... разів?", "age_at_incident" to "У якому віці: у ... років?", + "times_happend2" to "Це сталося ... разів?", + "age_at_incident2" to "У якому віці: у ... років?", "conflict_since_arrival" to "Відтоді, як ви в Німеччині, чи потрапляли ви в насильницькі конфлікти (бійки, фізичні та психологічні конфлікти)?", "finish_data_entry" to "Коли завершите введення даних, натисніть \"Зберегти\".", "feeling_connected_to_germany_question" to "Наскільки ви відчуваєте себе пов’язаним з Німеччиною (після прибуття в Німеччину)?", @@ -1671,6 +1681,8 @@ object LanguageManager { "violence_question_1" to "Hiç başka biri tarafından öyle bir şekilde yaralandınız mı ki tıbbi yardım almak zorunda kaldınız? (doktor, hastane)", "times_happend" to "Bu ... kez oldu mu?", "age_at_incident" to "Olay yaşandığında kaç yaşındaydınız?", + "times_happend2" to "Bu ... kez oldu mu?", + "age_at_incident2" to "Olay yaşandığında kaç yaşındaydınız?", "conflict_since_arrival" to "Almanya’ya geldikten sonra hiç şiddet içeren çatışmalara (kavga, fiziksel veya psikolojik) girdiniz mi?", "finish_data_entry" to "Veri girişini tamamladığınızda \"Kaydet\"e tıklayın.", "feeling_connected_to_germany_question" to "Kendinizi Almanya’ya ne kadar bağlı hissediyorsunuz (Almanya’ya geldikten sonra)?", @@ -1969,6 +1981,8 @@ object LanguageManager { "violence_question_1" to "Czy został(a) Pan/Pani kiedykolwiek tak poważnie zraniony(a) przez inne osoby, że potrzebował(a) Pan/Pani pomocy medycznej? (lekarz, szpital)", "times_happend" to "Czy to się wydarzyło ...?", "age_at_incident" to "W jakim wieku: w wieku ... lat?", + "times_happend2" to "Czy to się wydarzyło ...?", + "age_at_incident2" to "W jakim wieku: w wieku ... lat?", "conflict_since_arrival" to "Czy od czasu przybycia do Niemiec zdarzyło się Panu/Pani uczestniczyć w aktach przemocy (bójki, konflikty fizyczne i psychiczne)?", "finish_data_entry" to "Gdy zakończysz wprowadzanie danych, kliknij \"Zapisz\".", "feeling_connected_to_germany_question" to "Jak bardzo czuje się Pan/Pani związany(a) z Niemcami (czy czuje się Pan/Pani osiedlony(a) w Niemczech)?", @@ -2267,6 +2281,8 @@ object LanguageManager { "violence_question_1" to "هل سبق أن تعرضت لإصابة خطيرة من قبل الآخرين لدرجة أنك احتجت إلى رعاية طبية؟ (طبيب، مستشفى)", "times_happend" to "هل حدث هذا ...؟", "age_at_incident" to "في أي عمر: عندما كنت بعمر ... سنة؟", + "times_happend2" to "هل حدث هذا ...؟", + "age_at_incident2" to "في أي عمر: عندما كنت بعمر ... سنة؟", "conflict_since_arrival" to "منذ وصولك إلى ألمانيا، هل دخلت في صراعات عنيفة (عراك، صراعات جسدية أو نفسية)؟", "finish_data_entry" to "عند الانتهاء من إدخال البيانات، انقر على \"حفظ\".", "feeling_connected_to_germany_question" to "ما مدى شعورك بالارتباط بألمانيا (هل تشعر أنك أصبحت جزءاً منها)؟", @@ -2565,6 +2581,8 @@ object LanguageManager { "violence_question_1" to "Ați fost vreodată rănit(ă) atât de grav de alte persoane încât ați avut nevoie de ajutor medical? (medic, spital)", "times_happend" to "Acest lucru s-a întâmplat ...?", "age_at_incident" to "La ce vârstă: la ... ani?", + "times_happend2" to "Acest lucru s-a întâmplat ...?", + "age_at_incident2" to "La ce vârstă: la ... ani?", "conflict_since_arrival" to "De când sunteți în Germania, ați fost implicat(ă) în conflicte violente (bătaie, conflicte fizice sau psihice)?", "finish_data_entry" to "Când ați terminat introducerea datelor, faceți clic pe \"Salvează\".", "feeling_connected_to_germany_question" to "Cât de mult simțiți că sunteți legat(ă) de Germania (că v-ați integrat)?", @@ -2863,6 +2881,8 @@ object LanguageManager { "violence_question_1" to "¿Alguna vez resultó tan gravemente herido por otros que necesitó asistencia médica? (Médico, hospital)", "times_happend" to "¿Ha ocurrido esto...?", "age_at_incident" to "¿A qué edad ocurrió? A los ... años", + "times_happend2" to "¿Ha ocurrido esto...?", + "age_at_incident2" to "¿A qué edad ocurrió? A los ... años", "conflict_since_arrival" to "¿Desde que llegó a Alemania, ha estado involucrado en conflictos violentos (peleas físicas o conflictos psicológicos)?", "finish_data_entry" to "Cuando haya terminado de introducir los datos, haga clic en \"Guardar\".", "feeling_connected_to_germany_question" to "¿Qué tan conectado se siente con Alemania (llegado a Alemania)?", diff --git a/app/src/main/res/layout/client_overview_screen.xml b/app/src/main/res/layout/client_overview_screen.xml index 6d4273e..71dcfe3 100644 --- a/app/src/main/res/layout/client_overview_screen.xml +++ b/app/src/main/res/layout/client_overview_screen.xml @@ -15,6 +15,7 @@ android:textSize="20sp" android:paddingBottom="8dp" /> + + + + + + + + + + + +