package mg.dot.feufaro

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.core.view.WindowCompat
import android.view.WindowManager
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import org.koin.androidx.compose.KoinAndroidContext

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        enableEdgeToEdge()
        super.onCreate(savedInstanceState)
        setFilePickerActivity(this)
        WindowCompat.setDecorFitsSystemWindows(window, false)
        hideSystemBar()


        setContent {
            KoinAndroidContext {
                App()
            }
        }
    }
    private fun hideSystemBar() {
        // Pour les versions d'Android plus récentes (API 30+)
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
            val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)

            // Cacher les barres système
            windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())

            // Définir le comportement des barres système pour le mode immersif
            // BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE: Les barres apparaissent temporairement
            // après un balayage et disparaissent ensuite. C'est le comportement le plus courant
            // pour le mode immersif.
            windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
        } else {
            // Pour les versions d'Android plus anciennes (API < 30)
            @Suppress("DEPRECATION")
            window.decorView.systemUiVisibility = (
                    android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // Rend le mode immersif "collant"
                            or android.view.View.SYSTEM_UI_FLAG_FULLSCREEN // Cache la barre d'état
                            or android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // Cache la barre de navigation
                            or android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            or android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            or android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    )
            // Utiliser FLAG_LAYOUT_NO_LIMITS pour s'assurer que le contenu s'étend derrière la barre de navigation si elle réapparaît temporairement
            @Suppress("DEPRECATION")
            window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
        }
    }
}

@Preview
@Composable
fun AppAndroidPreview() {
    App()
}