From 64fd5de16b09fb724625090aa7e19f6f098c705f Mon Sep 17 00:00:00 2001 From: Tom Pratt Date: Wed, 15 Apr 2026 22:23:37 +0200 Subject: [PATCH] Put players table in an OutlinedBox, makes the UI look more consistent. --- .../features/netplay/ui/NetplayScreen.kt | 28 +++++++--- .../dolphinemu/ui/theme/DolphinTheme.kt | 55 +++++++++++-------- .../app/src/main/res/values/strings.xml | 4 ++ 3 files changed, 55 insertions(+), 32 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt index d5fdab900a..999746f0ea 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt @@ -192,15 +192,25 @@ private fun PLayersAndSettings( MenuSpacer() - PlayersTable( - rows = buildList { - add(listOf("Player", "Ping", "Mapping")) - addAll(players.map { listOf(it.name, it.ping.toString(), it.mapping) }) - repeat(4 - players.size) { add(listOf("", "", "")) } - }, - modifier = Modifier - .fillMaxWidth() - ) + OutlinedBox( + label = { Text(stringResource(R.string.netplay_players_label)) }, + ) { + PlayersTable( + rows = buildList { + add( + listOf( + stringResource(R.string.netplay_players_name), + stringResource(R.string.netplay_players_ping), + stringResource(R.string.netplay_players_mapping), + ) + ) + addAll(players.map { listOf(it.name, it.ping.toString(), it.mapping) }) + repeat(4 - players.size) { add(listOf("", "", "")) } + }, + modifier = Modifier + .fillMaxWidth() + ) + } } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt index d24b3d834f..cf768e6dc0 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/theme/DolphinTheme.kt @@ -135,9 +135,10 @@ fun MenuSpacer() = Spacer(modifier = Modifier.height(16.dp)) @OptIn(ExperimentalMaterial3Api::class) @Composable fun OutlinedBox( - onClick: () -> Unit, label: @Composable () -> Unit, modifier: Modifier = Modifier, + onClick: (() -> Unit)? = null, + fadeContentTop: Boolean = false, content: @Composable () -> Unit, ) { Box( @@ -153,24 +154,30 @@ fun OutlinedBox( .fillMaxSize() ) { content() - Box( - modifier = Modifier - .fillMaxWidth() - .height(16.dp) - .background( - Brush.verticalGradient( - colors = listOf( - MaterialTheme.colorScheme.surface, - Color.Transparent + if (fadeContentTop) { + Box( + modifier = Modifier + .fillMaxWidth() + .height(16.dp) + .background( + Brush.verticalGradient( + colors = listOf( + MaterialTheme.colorScheme.surface, + Color.Transparent + ) ) ) - ) - ) + ) + } } }, enabled = true, singleLine = false, - contentPadding = OutlinedTextFieldDefaults.contentPadding(top = 0.dp), + contentPadding = if (fadeContentTop) { + OutlinedTextFieldDefaults.contentPadding(top = 0.dp) + } else { + OutlinedTextFieldDefaults.contentPadding() + }, visualTransformation = VisualTransformation.None, interactionSource = interactionSource, label = { label() }, @@ -183,15 +190,17 @@ fun OutlinedBox( ) } ) - Box( - modifier = Modifier - .fillMaxSize() - .clip(MaterialTheme.shapes.extraSmall) - .clickable( - interactionSource = interactionSource, - indication = LocalIndication.current, - onClick = onClick, - ) - ) + if (onClick != null) { + Box( + modifier = Modifier + .fillMaxSize() + .clip(MaterialTheme.shapes.extraSmall) + .clickable( + interactionSource = interactionSource, + indication = LocalIndication.current, + onClick = onClick, + ) + ) + } } } diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index fa2d588652..8383824940 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -1003,4 +1003,8 @@ It can efficiently compress both junk data and encrypted Wii data. Buffer size changed to %1$d "Host input authority %1$s" Game + Players + Name + Ping + Mapping