- enableEdgeToEdge() dans MainActivity (Material You) - insets consommés UNE SEULE FOIS : TopAppBar M3 = barre de statut, NavigationBar = barre de navigation - Scaffold racine + imbriqués (Doses/Analyses) : contentWindowInsets = 0 pour ne pas cumuler (avant : fenêtre AppCompat + padding interne TopAppBar = double espace vide en haut) - docs : §10 (pattern insets), §14 bug #33, historique, CHANGELOG - versionCode 8, versionName 1.2.5
74 lines
2.7 KiB
Kotlin
74 lines
2.7 KiB
Kotlin
package com.hormonetrack
|
|
|
|
import android.Manifest
|
|
import android.content.Intent
|
|
import android.content.pm.PackageManager
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.app.AppCompatDelegate
|
|
import androidx.core.os.LocaleListCompat
|
|
import androidx.lifecycle.lifecycleScope
|
|
import com.hormonetrack.ui.HormoneTrackRoot
|
|
import com.hormonetrack.ui.theme.HormoneTrackTheme
|
|
import kotlinx.coroutines.flow.first
|
|
import kotlinx.coroutines.launch
|
|
|
|
class MainActivity : AppCompatActivity() {
|
|
|
|
private val notificationPermissionLauncher =
|
|
registerForActivityResult(ActivityResultContracts.RequestPermission()) { }
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
val container = (application as HormoneTrackApp).container
|
|
|
|
// Edge-to-edge (Material You) : le contenu s'étend sous les barres système.
|
|
// Les insets sont alors consommés UNE SEULE FOIS — par les TopAppBar
|
|
// Material 3 (barre de statut) et la NavigationBar (barre de navigation).
|
|
// Avant : la fenêtre poussait déjà le contenu sous la barre de statut ET
|
|
// les TopAppBar rajoutaient leur padding interne → double espace vide en haut.
|
|
enableEdgeToEdge()
|
|
|
|
lifecycleScope.launch {
|
|
val lang = container.settings.language.first()
|
|
val locales = if (lang == "system") {
|
|
LocaleListCompat.getEmptyLocaleList()
|
|
} else {
|
|
LocaleListCompat.forLanguageTags(lang)
|
|
}
|
|
if (AppCompatDelegate.getApplicationLocales() != locales) {
|
|
AppCompatDelegate.setApplicationLocales(locales)
|
|
}
|
|
}
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) !=
|
|
PackageManager.PERMISSION_GRANTED
|
|
) {
|
|
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
|
|
}
|
|
}
|
|
|
|
val openLogDose = intent?.getBooleanExtra("open_log_dose", false) ?: false
|
|
val treatmentId = intent?.getLongExtra("treatment_id", -1L) ?: -1L
|
|
|
|
setContent {
|
|
HormoneTrackTheme {
|
|
HormoneTrackRoot(
|
|
initialOpenLogDose = openLogDose,
|
|
initialTreatmentId = treatmentId
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onNewIntent(intent: Intent) {
|
|
super.onNewIntent(intent)
|
|
setIntent(intent)
|
|
}
|
|
}
|