tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 9e40dfef52d9a5e2caa1ee7afcf695fdc262b6f6
parent 145a2400d3a197490df4c743b21087d4c4ff65fd
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date:   Thu, 20 Nov 2025 08:32:24 +0000

Bug 1998092 - Part 9: Extract a reusable Settings Section Header from DataChoicesScreen r=android-reviewers,007

- Extracts `TitleText` from `DataChoicesScreen` to become a reusable Section Header component that can be reused in other Settings Screen
- Figma: https://www.figma.com/design/ctk1Pw1TBxUwVgTTOvjHb4/2025-Android-Fundamentals?node-id=996-32991&m=dev

Differential Revision: https://phabricator.services.mozilla.com/D272176

Diffstat:
Amobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/settings/SettingsSectionHeader.kt | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt | 27++++++++++-----------------
2 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/settings/SettingsSectionHeader.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/settings/SettingsSectionHeader.kt @@ -0,0 +1,51 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.compose.settings + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewLightDark +import org.mozilla.fenix.theme.FirefoxTheme +import org.mozilla.fenix.theme.Theme + +/** + * Settings section header. + * + * @param text The header string. + * @param modifier [Modifier] to be applied to the layout. + */ +@Composable +fun SettingsSectionHeader(text: String, modifier: Modifier = Modifier) { + Text( + text = text, + style = FirefoxTheme.typography.headline8, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = modifier, + ) +} + +@Composable +@PreviewLightDark +private fun SettingsSectionHeaderPreview() { + FirefoxTheme { + Surface { + SettingsSectionHeader("Settings") + } + } +} + +@Composable +@Preview +private fun SettingsSectionHeaderPrivatePreview() { + FirefoxTheme(theme = Theme.Private) { + Surface { + SettingsSectionHeader("Settings") + } + } +} diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text @@ -39,6 +38,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.compose.LinkText import org.mozilla.fenix.compose.LinkTextState import org.mozilla.fenix.compose.list.RadioButtonListItem +import org.mozilla.fenix.compose.settings.SettingsSectionHeader import org.mozilla.fenix.theme.FirefoxTheme /** @@ -172,13 +172,13 @@ private fun CrashReportsSection( selectedOption: CrashReportOption = CrashReportOption.Ask, onOptionSelected: (CrashReportOption) -> Unit, onLearnMoreClicked: () -> Unit, - ) { +) { Column( verticalArrangement = Arrangement.spacedBy(16.dp), modifier = Modifier .fillMaxWidth(), ) { - TitleText( + SettingsSectionHeader( text = stringResource(R.string.crash_reports_data_category), modifier = Modifier .padding(horizontal = 16.dp), @@ -214,16 +214,6 @@ private fun CrashReportsSection( } @Composable -private fun TitleText(text: String, modifier: Modifier) { - Text( - text = text, - style = FirefoxTheme.typography.body2, - color = MaterialTheme.colorScheme.tertiary, - modifier = modifier, - ) -} - -@Composable private fun SectionBodyText(text: String, modifier: Modifier = Modifier) { Text( text = text, @@ -261,7 +251,10 @@ private fun TogglePreferenceSection( .fillMaxWidth() .background(FirefoxTheme.colors.layer1), ) { - TitleText(categoryTitle, Modifier.padding(horizontal = 16.dp)) + SettingsSectionHeader( + text = categoryTitle, + modifier = Modifier.padding(horizontal = 16.dp), + ) // Section Body Row( @@ -329,9 +322,9 @@ private fun StudiesSection( .fillMaxWidth() .background(FirefoxTheme.colors.layer1), ) { - TitleText( - stringResource(R.string.studies_data_category), - Modifier.padding(horizontal = 16.dp), + SettingsSectionHeader( + text = stringResource(R.string.studies_data_category), + modifier = Modifier.padding(horizontal = 16.dp), ) Column(