diff --git a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt b/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt index 5d1488b..4f1a82e 100644 --- a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt +++ b/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt @@ -75,11 +75,15 @@ class HandlerOpeningScreen(private val activity: MainActivity) { setupUploadButton() setupDownloadButton() setupDatabaseButtonHandler() + uiHandler.removeCallbacks(statusTicker) updateStatusStrip() uiHandler.post(statusTicker) + val pathExists = File("/data/data/com.dano.test1/databases/questionnaire_database").exists() updateMainButtonsState(pathExists) + updateDownloadButtonState(pathExists) // <<< NEU: Download-Button anhand DB-Status setzen + if (pathExists && !editText.text.isNullOrBlank()) buttonLoad.performClick() } @@ -449,7 +453,14 @@ class HandlerOpeningScreen(private val activity: MainActivity) { private fun setupDownloadButton() { downloadButton.text = t("download") + + // Bei Setup gleich den aktuellen Zustand anwenden + val hasDb = File("/data/data/com.dano.test1/databases/questionnaire_database").exists() + updateDownloadButtonState(hasDb) + downloadButton.setOnClickListener { + // Falls der Button (später) deaktiviert ist, passiert einfach nichts + if (!downloadButton.isEnabled) return@setOnClickListener Toast.makeText(activity, t("login_required"), Toast.LENGTH_SHORT).show() } } @@ -468,6 +479,31 @@ class HandlerOpeningScreen(private val activity: MainActivity) { b.isEnabled = isDatabaseAvailable b.alpha = if (isDatabaseAvailable) 1.0f else 0.5f } + // Der Download-Button wird separat gesteuert + } + + /** <<< NEU: Steuert Aktivierung & Look des Download-Buttons je nach DB-Verfügbarkeit */ + private fun updateDownloadButtonState(isDatabaseAvailable: Boolean) { + val mb = downloadButton as? MaterialButton + if (isDatabaseAvailable) { + downloadButton.isEnabled = false + downloadButton.alpha = 0.5f + mb?.apply { + strokeWidth = dp(1) + strokeColor = ColorStateList.valueOf(STROKE_DISABLED) + backgroundTintList = ColorStateList.valueOf(Color.parseColor("#F5F5F5")) + rippleColor = ColorStateList.valueOf(Color.parseColor("#00000000")) + } + } else { + downloadButton.isEnabled = true + downloadButton.alpha = 1.0f + mb?.apply { + strokeWidth = dp(2) + strokeColor = ColorStateList.valueOf(STROKE_ENABLED) + backgroundTintList = ColorStateList.valueOf(Color.WHITE) + rippleColor = ColorStateList.valueOf(Color.parseColor("#22000000")) + } + } } private fun dp(v: Int): Int = (v * activity.resources.displayMetrics.density).toInt() @@ -542,7 +578,6 @@ class HandlerOpeningScreen(private val activity: MainActivity) { val ageMs = if (ts > 0L) (System.currentTimeMillis() - ts) else 0L val h = TimeUnit.MILLISECONDS.toHours(ageMs) val m = TimeUnit.MILLISECONDS.toMinutes(ageMs) - h * 60 - // Sitzungstext lokalisieren if (ts > 0L) { statusSession.text = "${t("session_label")}: ${h}${t("hours_short")} ${m}${t("minutes_short")}" } else {