From 7c27ca624c2ea9d380dae05f5fa4834c21d264d7 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:00:51 +0300 Subject: [PATCH] refactor(#5): convert SettingsScreen to use HermesScaffold * refactor(#5): convert SettingsScreen to use HermesScaffold Replace raw Material3 Scaffold + manual TopAppBar with the shared HermesScaffold wrapper. Removes ~30 lines of duplicated boilerplate and gives SettingsScreen scroll-aware top bar behavior. Closes #5 * fix(#5): restore ExperimentalMaterial3Api import for SegmentedButton --------- Co-authored-by: M57 --- .../ui/settings/SettingsScreen.kt | 41 ++++--------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt b/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt index 54e2f56c..5ec81b30 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Visibility import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material3.Button @@ -32,15 +31,12 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextFieldDefaults -import androidx.compose.material3.Scaffold import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -56,6 +52,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.m57.hermescontrol.theme.ThemePreference +import com.m57.hermescontrol.ui.common.HermesScaffold @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -69,41 +66,17 @@ fun SettingsScreen( BackHandler(onBack = onBack) - Scaffold( - modifier = modifier.fillMaxSize(), - topBar = { - TopAppBar( - title = { - Text( - "Settings", - style = - MaterialTheme.typography.titleLarge.copy( - fontWeight = FontWeight.Bold, - ), - ) - }, - navigationIcon = { - IconButton(onClick = onBack) { - Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = "Back", - ) - } - }, - colors = - TopAppBarDefaults.topAppBarColors( - containerColor = MaterialTheme.colorScheme.surface, - ), - ) - }, - ) { paddingValues -> + HermesScaffold( + title = "Settings", + showBack = true, + onBack = onBack, + ) { Column( modifier = Modifier .fillMaxSize() - .padding(paddingValues) .verticalScroll(rememberScrollState()) - .padding(16.dp), + .padding(horizontal = 16.dp, vertical = 8.dp), verticalArrangement = Arrangement.spacedBy(16.dp), ) { // Connection section