/* * SPDX-FileCopyrightText: 2026 Shiham Abdul Rahman * SPDX-License-Identifier: GPL-3.0-or-later */ package sh.sar.isodroid import android.content.Context import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.lifecycle.ViewModelProvider import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import sh.sar.isodroid.ui.screens.DownloadsScreen import sh.sar.isodroid.ui.screens.MainScreen import sh.sar.isodroid.ui.screens.SettingsScreen import sh.sar.isodroid.ui.screens.SetupWizardScreen import sh.sar.isodroid.ui.theme.ISODroidTheme import sh.sar.isodroid.viewmodel.MainViewModel class MainActivity : ComponentActivity() { private lateinit var viewModel: MainViewModel private var setupComplete by mutableStateOf(false) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() viewModel = ViewModelProvider(this)[MainViewModel::class.java] // Check if setup was completed previously setupComplete = isSetupComplete() // Initialize ViewModel if setup is already complete if (setupComplete) { viewModel.initialize() } setContent { ISODroidTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { if (setupComplete) { ISODroidNavHost(viewModel = viewModel) } else { SetupWizardScreen( onSetupComplete = { markSetupComplete() setupComplete = true viewModel.initialize() } ) } } } } } private fun isSetupComplete(): Boolean { val prefs = getSharedPreferences("iso_drive_prefs", Context.MODE_PRIVATE) return prefs.getBoolean("setup_complete", false) } private fun markSetupComplete() { val prefs = getSharedPreferences("iso_drive_prefs", Context.MODE_PRIVATE) prefs.edit().putBoolean("setup_complete", true).apply() } } @Composable fun ISODroidNavHost(viewModel: MainViewModel) { val navController = rememberNavController() NavHost( navController = navController, startDestination = "main" ) { composable("main") { MainScreen( viewModel = viewModel, onNavigateToDownloads = { navController.navigate("downloads") }, onNavigateToSettings = { navController.navigate("settings") } ) } composable("downloads") { DownloadsScreen( onNavigateBack = { navController.popBackStack() } ) } composable("settings") { SettingsScreen( viewModel = viewModel, onNavigateBack = { navController.popBackStack() } ) } } }