120 lines
3.7 KiB
Kotlin
120 lines
3.7 KiB
Kotlin
/*
|
|
* SPDX-FileCopyrightText: 2026 Shiham Abdul Rahman <shihaam@shihaam.dev>
|
|
* 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()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|