Adding working navbar still

This commit is contained in:
Fabio 2025-04-09 14:01:36 +02:00
parent 445c124665
commit 0b459e9f95
8 changed files with 87 additions and 21 deletions

View File

@ -3,39 +3,36 @@ package com.f1rq.lifemap
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import com.f1rq.lifemap.ui.theme.LifeMapTheme
import com.f1rq.lifemap.navigationbar.NavigationBar import com.f1rq.lifemap.navigationbar.NavigationBar
import com.f1rq.lifemap.screens.ListView
import com.f1rq.lifemap.screens.MapView
import com.f1rq.lifemap.ui.theme.LifeMapTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContent { setContent {
LifeMapTheme() { LifeMapTheme {
val navController = rememberNavController() val navController = rememberNavController()
Scaffold( Scaffold(
bottomBar = { bottomBar = { NavigationBar(navController) }
NavigationBar()
}
) { innerPadding -> ) { innerPadding ->
NavHost( NavHost(
navController = navController, navController = navController,
startDestination = "home" startDestination = "mapview",
modifier = Modifier.padding(innerPadding)
) { ) {
composable("home") { HomeScreen(Modifier.padding(innerPadding)) } composable("mapview") { MapView(Modifier) }
composable("settings") { SettingsScreen(Modifier.padding(innerPadding)) } composable("listview") { ListView(Modifier) }
} }
} }
} }
@ -46,7 +43,8 @@ class MainActivity : ComponentActivity() {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
fun GreetingPreview() { fun GreetingPreview() {
LifeMapTheme() { LifeMapTheme {
NavigationBar() val previewNavController = rememberNavController()
NavigationBar(navController = previewNavController)
} }
} }

View File

@ -0,0 +1,32 @@
package com.f1rq.lifemap
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController
import com.f1rq.lifemap.navigationbar.NavigationBar
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.compose.runtime.getValue
@Composable
fun NavBarHandler(navController: NavHostController) {
val currentRoute = currentRoute(navController)
NavigationBar(
modifier = Modifier,
onWorldViewTapped = {
if (currentRoute != "mapview") navController.navigate("mapview")
},
onListViewTapped = {
if (currentRoute != "listview") navController.navigate("listview")
},
//homeState = if (currentRoute == "home") "active" else "inactive",
//settingsState = if (currentRoute == "settings") "active" else "inactive",
)
}
@Composable
private fun currentRoute(navController: NavHostController): String? {
val navBackStackEntry by navController.currentBackStackEntryAsState()
return navBackStackEntry?.destination?.route
}

View File

@ -8,7 +8,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@Composable @Composable
fun SettingsScreen() { fun ListView(modifier: Modifier = Modifier) {
Box( Box(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View File

@ -8,7 +8,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@Composable @Composable
fun HomeScreen() { fun MapView(modifier: Modifier = Modifier) {
Box( Box(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View File

@ -5,7 +5,7 @@
"type": "figma", "type": "figma",
"file": "7RzB5mC9Qj82hGEbAM11GM", "file": "7RzB5mC9Qj82hGEbAM11GM",
"node": "38:3", "node": "38:3",
"version": "2201697548108180498", "version": "2204970891916878617",
"component-id": "915162a5cdf4f7f91ace42d239b4d1faf0d5c6e7" "component-id": "915162a5cdf4f7f91ace42d239b4d1faf0d5c6e7"
}, },
"default": "Navigation bar", "default": "Navigation bar",
@ -96,6 +96,7 @@
"top": 12.0, "top": 12.0,
"bottom": 16.0 "bottom": 16.0
}, },
"tap-handler": "$on world view tapped",
"size-constraints": { "size-constraints": {
"width-constraints": { "width-constraints": {
"sizing-mode": "proportional", "sizing-mode": "proportional",
@ -109,6 +110,7 @@
"icon-container" "icon-container"
], ],
"item-spacing": 4.0, "item-spacing": 4.0,
"background-color": "$world view background color",
"clip-content": false "clip-content": false
}, },
{ {
@ -117,6 +119,7 @@
"top": 12.0, "top": 12.0,
"bottom": 16.0 "bottom": 16.0
}, },
"tap-handler": "$on list view tapped",
"size-constraints": { "size-constraints": {
"width-constraints": { "width-constraints": {
"sizing-mode": "proportional", "sizing-mode": "proportional",
@ -130,6 +133,7 @@
"icon-container1" "icon-container1"
], ],
"item-spacing": 4.0, "item-spacing": 4.0,
"background-color": "$list view background color",
"clip-content": false "clip-content": false
}, },
{ {
@ -175,6 +179,12 @@
"children": [ "children": [
"Frame" "Frame"
], ],
"background-color": {
"alpha": 1.0,
"hue": 0.0,
"saturation": 0.0,
"value": 0.8666666666666667
},
"clip-content": false "clip-content": false
}, },
{ {
@ -289,6 +299,28 @@
} }
} }
}, },
"parameters": {
"world view background color": {
"data-type": "color",
"required": false,
"description": ""
},
"on world view tapped": {
"data-type": "void-callback",
"required": false,
"description": ""
},
"list view background color": {
"data-type": "color",
"required": false,
"description": ""
},
"on list view tapped": {
"data-type": "void-callback",
"required": false,
"description": ""
}
},
"previews": [ "previews": [
{ {
"design": "Navigation bar", "design": "Navigation bar",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#49454F" d="M15.9 15.39c-.26-.8-1.01-1.39-1.9-1.39h-1v-3a1 1 0 0 0-1-1H6V8h2a1 1 0 0 0 1-1V5h2a2 2 0 0 0 2-2v-.41a7.984 7.984 0 0 1 2.9 12.8ZM9 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.22.21-1.79L7 13v1a2 2 0 0 0 2 2m1-16a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z"/></svg> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.9 15.39C15.64 14.59 14.89 14 14 14H13V11C13 10.7348 12.8946 10.4804 12.7071 10.2929C12.5196 10.1054 12.2652 10 12 10H6V8H8C8.26522 8 8.51957 7.89464 8.70711 7.70711C8.89464 7.51957 9 7.26522 9 7V5H11C11.5304 5 12.0391 4.78929 12.4142 4.41421C12.7893 4.03914 13 3.53043 13 3V2.59C15.93 3.77 18 6.64 18 10C18 12.08 17.2 13.97 15.9 15.39ZM9 17.93C5.05 17.44 2 14.08 2 10C2 9.38 2.08 8.78 2.21 8.21L7 13V14C7 14.5304 7.21071 15.0391 7.58579 15.4142C7.96086 15.7893 8.46957 16 9 16M10 0C8.68678 0 7.38642 0.258658 6.17317 0.761205C4.95991 1.26375 3.85752 2.00035 2.92893 2.92893C1.05357 4.8043 0 7.34784 0 10C0 12.6522 1.05357 15.1957 2.92893 17.0711C3.85752 17.9997 4.95991 18.7362 6.17317 19.2388C7.38642 19.7413 8.68678 20 10 20C12.6522 20 15.1957 18.9464 17.0711 17.0711C18.9464 15.1957 20 12.6522 20 10C20 8.68678 19.7413 7.38642 19.2388 6.17317C18.7362 4.95991 17.9997 3.85752 17.0711 2.92893C16.1425 2.00035 15.0401 1.26375 13.8268 0.761205C12.6136 0.258658 11.3132 0 10 0Z" fill="#49454F"/>
</svg>

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="15" fill="none"><path fill="#49454F" d="M4.5.5h14v2h-14v-2Zm0 8v-2h14v2h-14ZM1.5 0a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm0 6a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm3 8.5v-2h14v2h-14Zm-3-2.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Z"/></svg> <svg width="19" height="15" viewBox="0 0 19 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.5 0.5H18.5V2.5H4.5V0.5ZM4.5 8.5V6.5H18.5V8.5H4.5ZM1.5 0C1.89782 0 2.27936 0.158035 2.56066 0.43934C2.84196 0.720644 3 1.10218 3 1.5C3 1.89782 2.84196 2.27936 2.56066 2.56066C2.27936 2.84196 1.89782 3 1.5 3C1.10218 3 0.720644 2.84196 0.43934 2.56066C0.158035 2.27936 0 1.89782 0 1.5C0 1.10218 0.158035 0.720644 0.43934 0.43934C0.720644 0.158035 1.10218 0 1.5 0ZM1.5 6C1.89782 6 2.27936 6.15804 2.56066 6.43934C2.84196 6.72064 3 7.10218 3 7.5C3 7.89782 2.84196 8.27936 2.56066 8.56066C2.27936 8.84196 1.89782 9 1.5 9C1.10218 9 0.720644 8.84196 0.43934 8.56066C0.158035 8.27936 0 7.89782 0 7.5C0 7.10218 0.158035 6.72064 0.43934 6.43934C0.720644 6.15804 1.10218 6 1.5 6ZM4.5 14.5V12.5H18.5V14.5H4.5ZM1.5 12C1.89782 12 2.27936 12.158 2.56066 12.4393C2.84196 12.7206 3 13.1022 3 13.5C3 13.8978 2.84196 14.2794 2.56066 14.5607C2.27936 14.842 1.89782 15 1.5 15C1.10218 15 0.720644 14.842 0.43934 14.5607C0.158035 14.2794 0 13.8978 0 13.5C0 13.1022 0.158035 12.7206 0.43934 12.4393C0.720644 12.158 1.10218 12 1.5 12Z" fill="#49454F"/>
</svg>

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 1.1 KiB