104 lines
3.6 KiB
Kotlin

package id.ac.ubharajaya.sistemakademik
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import id.ac.ubharajaya.sistemakademik.ui.screens.AbsensiScreen
import id.ac.ubharajaya.sistemakademik.ui.screens.LoginScreen
import id.ac.ubharajaya.sistemakademik.ui.screens.ProfilScreen
import id.ac.ubharajaya.sistemakademik.ui.screens.RiwayatScreen
import id.ac.ubharajaya.sistemakademik.ui.theme.SistemAkademikTheme
import id.ac.ubharajaya.sistemakademik.utils.SessionManager
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val sessionManager = SessionManager(this)
setContent {
SistemAkademikTheme {
var isLoggedIn by remember { mutableStateOf(sessionManager.isLoggedIn()) }
Surface(modifier = Modifier.fillMaxSize()) {
if (isLoggedIn) {
MainNavigation(
activity = this,
sessionManager = sessionManager,
onLogout = {
sessionManager.logout()
isLoggedIn = false
}
)
} else {
LoginScreen(
onLoginSuccess = {
isLoggedIn = true
},
sessionManager = sessionManager
)
}
}
}
}
}
}
@Composable
fun MainNavigation(
activity: ComponentActivity,
sessionManager: SessionManager,
onLogout: () -> Unit
) {
var selectedTab by remember { mutableStateOf(0) }
Scaffold(
bottomBar = {
NavigationBar {
NavigationBarItem(
selected = selectedTab == 0,
onClick = { selectedTab = 0 },
icon = { Icon(Icons.Default.CheckCircle, "Absensi") },
label = { Text("Absensi") }
)
NavigationBarItem(
selected = selectedTab == 1,
onClick = { selectedTab = 1 },
icon = { Icon(Icons.Default.List, "Riwayat") },
label = { Text("Riwayat") }
)
NavigationBarItem(
selected = selectedTab == 2,
onClick = { selectedTab = 2 },
icon = { Icon(Icons.Default.Person, "Profil") },
label = { Text("Profil") }
)
}
}
) { padding ->
when (selectedTab) {
0 -> AbsensiScreen(
modifier = Modifier.padding(padding),
activity = activity,
sessionManager = sessionManager
)
1 -> RiwayatScreen(
modifier = Modifier.padding(padding),
sessionManager = sessionManager
)
2 -> ProfilScreen(
modifier = Modifier.padding(padding),
sessionManager = sessionManager,
onLogout = onLogout
)
}
}
}