More styling

Signed-off-by: Percy Wegmann <percy@tailscale.com>
ox/styling_bak
Percy Wegmann 2 years ago
parent 3eda5688c9
commit 994639b67d
No known key found for this signature in database
GPG Key ID: 29D8CDEB4C13D48B

@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
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.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -37,7 +38,9 @@ fun MullvadExitNodePicker(
LoadingIndicator.Wrap { LoadingIndicator.Wrap {
Scaffold( Scaffold(
topBar = { topBar = {
Header(titleText = "${countryCode.flag()} ${any.country}", onBack = nav.onNavigateBack) Header(
title = { Text("${countryCode.flag()} ${any.country}") },
onBack = nav.onNavigateBack)
}) { innerPadding -> }) { innerPadding ->
LazyColumn(modifier = Modifier.padding(innerPadding)) { LazyColumn(modifier = Modifier.padding(innerPadding)) {
if (nodes.size > 1) { if (nodes.size > 1) {

@ -6,6 +6,7 @@ package com.tailscale.ipn.ui.view
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@ -19,7 +20,6 @@ import androidx.compose.material3.ListItem
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -35,8 +35,6 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import com.tailscale.ipn.R import com.tailscale.ipn.R
import com.tailscale.ipn.ui.theme.listItem import com.tailscale.ipn.ui.theme.listItem
import com.tailscale.ipn.ui.theme.surfaceContainerListItem
import com.tailscale.ipn.ui.theme.topAppBar
import com.tailscale.ipn.ui.theme.ts_color_light_blue import com.tailscale.ipn.ui.theme.ts_color_light_blue
import com.tailscale.ipn.ui.util.Lists import com.tailscale.ipn.ui.util.Lists
import com.tailscale.ipn.ui.util.itemsWithDividers import com.tailscale.ipn.ui.util.itemsWithDividers
@ -55,16 +53,13 @@ fun PeerDetails(
model.node.collectAsState().value?.let { node -> model.node.collectAsState().value?.let { node ->
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( Header(
title = { title = {
ListItem( Column {
colors = MaterialTheme.colorScheme.surfaceContainerListItem,
headlineContent = {
Text( Text(
text = node.displayName, text = node.displayName,
style = MaterialTheme.typography.titleMedium.copy(lineHeight = 20.sp)) style = MaterialTheme.typography.titleMedium.copy(lineHeight = 20.sp),
}, color = MaterialTheme.colorScheme.onSurface)
supportingContent = {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Box( Box(
modifier = modifier =
@ -75,15 +70,14 @@ fun PeerDetails(
Spacer(modifier = Modifier.size(8.dp)) Spacer(modifier = Modifier.size(8.dp))
Text( Text(
text = stringResource(id = node.connectedStrRes(netmap)), text = stringResource(id = node.connectedStrRes(netmap)),
style = MaterialTheme.typography.bodyMedium.copy(lineHeight = 20.sp)) style = MaterialTheme.typography.bodyMedium.copy(lineHeight = 20.sp),
color = MaterialTheme.colorScheme.onSurfaceVariant)
}
} }
}, },
) onBack = { nav.onBack() })
}, },
colors = MaterialTheme.colorScheme.topAppBar, ) { innerPadding ->
navigationIcon = { BackArrow(action = { nav.onBack() }) },
)
}) { innerPadding ->
LazyColumn( LazyColumn(
modifier = Modifier.padding(innerPadding), modifier = Modifier.padding(innerPadding),
) { ) {
@ -92,8 +86,7 @@ fun PeerDetails(
modifier = modifier =
Modifier.fillMaxWidth() Modifier.fillMaxWidth()
.background( .background(
color = MaterialTheme.colorScheme.surface, color = MaterialTheme.colorScheme.surface, shape = RectangleShape)) {
shape = RectangleShape)) {
Text( Text(
modifier = Modifier.padding(start = 16.dp, top = 16.dp), modifier = Modifier.padding(start = 16.dp, top = 16.dp),
text = stringResource(R.string.tailscale_addresses), text = stringResource(R.string.tailscale_addresses),

@ -30,7 +30,8 @@ import com.tailscale.ipn.ui.util.itemsWithDividers
@OptIn(ExperimentalPermissionsApi::class) @OptIn(ExperimentalPermissionsApi::class)
@Composable @Composable
fun PermissionsView(nav: BackNavigation, openApplicationSettings: () -> Unit) { fun PermissionsView(nav: BackNavigation, openApplicationSettings: () -> Unit) {
Scaffold(topBar = { Header(title = R.string.permissions, onBack = nav.onBack) }) { innerPadding -> Scaffold(topBar = { Header(titleRes = R.string.permissions, onBack = nav.onBack) }) { innerPadding
->
val permissions = Permissions.all val permissions = Permissions.all
val permissionStates = val permissionStates =
rememberMultiplePermissionsState(permissions = permissions.map { it.name }) rememberMultiplePermissionsState(permissions = permissions.map { it.name })

@ -45,8 +45,9 @@ fun SettingsView(
val managedBy = viewModel.managedBy.collectAsState().value val managedBy = viewModel.managedBy.collectAsState().value
Scaffold( Scaffold(
topBar = { Header(title = R.string.settings_title, onBack = settingsNav.onBackPressed) }) { topBar = {
innerPadding -> Header(titleRes = R.string.settings_title, onBack = settingsNav.onBackPressed)
}) { innerPadding ->
Column(modifier = Modifier.padding(innerPadding)) { Column(modifier = Modifier.padding(innerPadding)) {
UserView( UserView(
profile = user, profile = user,

@ -32,9 +32,19 @@ data class BackNavigation(
// Header view for all secondary screens // Header view for all secondary screens
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun Header(@StringRes title: Int = 0, titleText: String? = null, onBack: (() -> Unit)? = null) { fun Header(
@StringRes titleRes: Int = 0,
title: (@Composable () -> Unit)? = null,
onBack: (() -> Unit)? = null
) {
TopAppBar( TopAppBar(
title = { Text(titleText ?: stringResource(title)) }, title = {
title?.let { title() }
?: Text(
stringResource(titleRes),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSurface)
},
colors = MaterialTheme.colorScheme.topAppBar, colors = MaterialTheme.colorScheme.topAppBar,
navigationIcon = { onBack?.let { BackArrow(action = it) } }, navigationIcon = { onBack?.let { BackArrow(action = it) } },
) )

Loading…
Cancel
Save