changed button visibility

This commit is contained in:
oxidiert
2025-09-30 16:21:20 +02:00
parent 66122dd6c3
commit ac2e0dabd2

View File

@ -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 {