feat: add TopAppBar

This commit is contained in:
Sweetbread 2025-04-24 21:46:03 +03:00
parent bc7e2b4100
commit 0c57d0b7e7
Signed by: Sweetbread
GPG Key ID: 17A5CB9A7DD85319
3 changed files with 45 additions and 10 deletions

View File

@ -16,20 +16,21 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox
import androidx.compose.material.icons.filled.DateRange
import androidx.compose.material.icons.filled.Home
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.core.view.WindowCompat
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import io.ktor.client.HttpClient
import io.ktor.client.engine.android.Android
@ -39,11 +40,13 @@ import io.ktor.client.plugins.cache.HttpCache
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logger
import io.ktor.client.plugins.logging.Logging
import ru.sweetbread.unn.R
import ru.sweetbread.unn.db.AppDatabase
import ru.sweetbread.unn.ui.composes.Blogposts
import ru.sweetbread.unn.ui.composes.Schedule
import ru.sweetbread.unn.ui.theme.UNNTheme
import splitties.arch.room.roomDb
import splitties.resources.appStr
import splitties.toast.toast
val client = HttpClient(Android) {
@ -72,6 +75,7 @@ val db = roomDb<AppDatabase>(name = "database")
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -81,15 +85,31 @@ class MainActivity : ComponentActivity() {
UNNTheme {
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
val navController = rememberNavController()
var route by remember { mutableStateOf("portal/blogposts") }
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute = navBackStackEntry?.destination?.route
Scaffold(
topBar = {
CenterAlignedTopAppBar (
title = {
Text(
when {
currentRoute?.startsWith("portal/") == true -> appStr(R.string.news)
currentRoute?.startsWith("journal/") == true -> appStr(R.string.schedule)
else -> appStr(R.string.app_name)
},
Modifier.padding()
)
}
)
},
bottomBar = {
NavigationBar {
NavigationBarItem(
onClick = {
route = "portal/blogposts"
navController.navigate(route)
navController.navigate("portal/blogposts") {
launchSingleTop = true
}
},
icon = {
Icon(
@ -97,13 +117,14 @@ class MainActivity : ComponentActivity() {
contentDescription = "Home"
)
},
selected = route.startsWith("portal/")
selected = currentRoute?.startsWith("portal/") == true
)
NavigationBarItem(
onClick = {
route = "journal/schedule"
navController.navigate(route)
navController.navigate("journal/schedule") {
launchSingleTop = true
}
},
icon = {
Icon(
@ -111,7 +132,7 @@ class MainActivity : ComponentActivity() {
contentDescription = "Schedule"
)
},
selected = route.startsWith("journal/")
selected = currentRoute?.startsWith("journal/") == true
)
NavigationBarItem(

View File

@ -1,4 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Created by sweetbread
~ Copyright (c) 2025. All rights reserved.
-->
<resources>
<string name="app_name_reg">ННГУ</string>
<string name="app_name_dev">ННГУ Альфа</string>
@ -14,4 +19,6 @@
<string name="building">Здание</string>
<string name="floor">Этаж</string>
<string name="noData">Нет данных</string>
<string name="news">Новости</string>
<string name="schedule">Расписание</string>
</resources>

View File

@ -1,3 +1,8 @@
<!--
~ Created by sweetbread
~ Copyright (c) 2025. All rights reserved.
-->
<resources>
<string name="app_name_reg">UNN</string>
<string name="app_name_dev">UNN Dev</string>
@ -16,5 +21,7 @@
<string name="floor">Floor</string>
<string name="lorem" translatable="false">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vel iaculis elit. Aliquam varius urna ut nisl rhoncus ullamcorper. Maecenas et nisl at dui mollis maximus nec in libero. Ut eu nulla id felis hendrerit lobortis. Maecenas vel facilisis lectus. Morbi eleifend massa a ante consequat, eu aliquam elit euismod. Aenean quis erat tincidunt, egestas ligula id, convallis tortor. Vivamus volutpat condimentum nisl sed eleifend. Aenean dapibus dolor ut orci lobortis, placerat lobortis tortor pretium. Nam eros lectus, convallis sed ultricies sit amet, lacinia sed sem. In mi odio, porta non malesuada et, cursus a metus. Morbi quis odio sed quam commodo gravida id sit amet dolor. Donec ac iaculis massa. Nulla mauris sapien, auctor consequat est in, tempus accumsan ipsum. Donec semper volutpat nisi. Quisque dignissim tellus ipsum, sed malesuada libero aliquam sed. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam eleifend pharetra orci eu scelerisque. In hac habitasse platea dictumst. Sed non neque vitae metus porttitor vestibulum ut eget felis. Aliquam venenatis a magna eu mattis. Proin rutrum, sapien id viverra finibus, nisi quam aliquam eros, et dignissim lectus sem sit amet purus. Donec et semper enim, sed pretium lacus. Nullam venenatis ullamcorper maximus. Mauris pellentesque velit non sem sollicitudin molestie. Duis hendrerit consequat enim eget euismod.</string>
<string name="noData">No Data</string>
<string name="news">News</string>
<string name="schedule">Schedule</string>
<!-- <string name="login_failed">"Login failed"</string>-->
</resources>