72 lines
2.5 KiB
Kotlin
72 lines
2.5 KiB
Kotlin
package space.darkest.nova.android
|
|
|
|
import android.Manifest
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
import androidx.compose.animation.slideInHorizontally
|
|
import androidx.compose.animation.slideOutHorizontally
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.setValue
|
|
import androidx.navigation.compose.NavHost
|
|
import androidx.navigation.compose.composable
|
|
import androidx.navigation.compose.rememberNavController
|
|
import space.darkest.nova.android.data.AgendaDay
|
|
import space.darkest.nova.android.data.CalendarRepository
|
|
import space.darkest.nova.android.ui.AgendaScreen
|
|
import space.darkest.nova.android.ui.SettingsScreen
|
|
import space.darkest.nova.android.ui.theme.NovaTheme
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
|
|
private var agenda by mutableStateOf(emptyList<AgendaDay>())
|
|
|
|
private val calendarPermission = registerForActivityResult(
|
|
ActivityResultContracts.RequestPermission()
|
|
) { granted ->
|
|
if (granted) refreshAgenda()
|
|
}
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
enableEdgeToEdge()
|
|
|
|
calendarPermission.launch(Manifest.permission.READ_CALENDAR)
|
|
|
|
setContent {
|
|
NovaTheme {
|
|
val navController = rememberNavController()
|
|
NavHost(
|
|
navController = navController,
|
|
startDestination = "agenda",
|
|
enterTransition = { slideInHorizontally { it } },
|
|
exitTransition = { slideOutHorizontally { -it } },
|
|
popEnterTransition = { slideInHorizontally { -it } },
|
|
popExitTransition = { slideOutHorizontally { it } },
|
|
) {
|
|
composable("agenda") {
|
|
AgendaScreen(
|
|
agenda = agenda,
|
|
onSettingsClick = { navController.navigate("settings") },
|
|
)
|
|
}
|
|
composable("settings") {
|
|
SettingsScreen(onBack = { navController.popBackStack() })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
refreshAgenda()
|
|
}
|
|
|
|
private fun refreshAgenda() {
|
|
agenda = CalendarRepository.getAgenda(this, 14)
|
|
}
|
|
}
|