mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
Start migration away from global top app bar (#3132)
This commit is contained in:
parent
e4bfce0989
commit
fed3ebbd36
17 changed files with 685 additions and 466 deletions
|
|
@ -22,6 +22,7 @@ package com.geeksville.mesh.ui
|
|||
import android.Manifest
|
||||
import android.os.Build
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.core.Animatable
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
import androidx.compose.animation.core.tween
|
||||
|
|
@ -87,6 +88,7 @@ import com.geeksville.mesh.model.UIViewModel
|
|||
import com.geeksville.mesh.navigation.ConnectionsRoutes
|
||||
import com.geeksville.mesh.navigation.ContactsRoutes
|
||||
import com.geeksville.mesh.navigation.MapRoutes
|
||||
import com.geeksville.mesh.navigation.NodeDetailRoutes
|
||||
import com.geeksville.mesh.navigation.NodesRoutes
|
||||
import com.geeksville.mesh.navigation.Route
|
||||
import com.geeksville.mesh.navigation.SettingsRoutes
|
||||
|
|
@ -135,7 +137,6 @@ enum class TopLevelDestination(@StringRes val label: Int, val icon: ImageVector,
|
|||
NodesRoutes.Nodes::class,
|
||||
MapRoutes.Map::class,
|
||||
ConnectionsRoutes.Connections::class,
|
||||
SettingsRoutes.Settings::class,
|
||||
)
|
||||
.any { this.hasRoute(it) }
|
||||
|
||||
|
|
@ -349,26 +350,42 @@ fun MainScreen(
|
|||
if (sharedContact != null) {
|
||||
SharedContactDialog(contact = sharedContact, onDismiss = { sharedContact = null })
|
||||
}
|
||||
MainAppBar(
|
||||
viewModel = uIViewModel,
|
||||
navController = navController,
|
||||
onAction = { action ->
|
||||
when (action) {
|
||||
is NodeMenuAction.MoreDetails -> {
|
||||
navController.navigate(
|
||||
NodesRoutes.NodeDetailGraph(action.node.num),
|
||||
{
|
||||
launchSingleTop = true
|
||||
restoreState = true
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
is NodeMenuAction.Share -> sharedContact = action.node
|
||||
else -> {}
|
||||
}
|
||||
},
|
||||
)
|
||||
fun NavDestination.hasGlobalAppBar(): Boolean =
|
||||
// List of screens to exclude from having the global app bar
|
||||
listOf(
|
||||
ConnectionsRoutes.Connections::class,
|
||||
ContactsRoutes.Contacts::class,
|
||||
MapRoutes.Map::class,
|
||||
NodeDetailRoutes.NodeMap::class,
|
||||
NodesRoutes.Nodes::class,
|
||||
NodesRoutes.NodeDetail::class,
|
||||
SettingsRoutes.Settings::class,
|
||||
)
|
||||
.none { this.hasRoute(it) }
|
||||
|
||||
AnimatedVisibility(visible = currentDestination?.hasGlobalAppBar() ?: true) {
|
||||
MainAppBar(
|
||||
viewModel = uIViewModel,
|
||||
navController = navController,
|
||||
onAction = { action ->
|
||||
when (action) {
|
||||
is NodeMenuAction.MoreDetails -> {
|
||||
navController.navigate(
|
||||
NodesRoutes.NodeDetailGraph(action.node.num),
|
||||
{
|
||||
launchSingleTop = true
|
||||
restoreState = true
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
is NodeMenuAction.Share -> sharedContact = action.node
|
||||
else -> {}
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
NavHost(
|
||||
navController = navController,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue