diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-07-06 15:14:27 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-07-11 22:54:48 +0200 |
| commit | a0f678c8b564efecad2338555cc9af66b72fac7e (patch) | |
| tree | 3489ca42eee81dd285f7b21e66491a88dd1a4459 /android/app | |
| parent | 2d4f28072a976c513ac8a7e2f5657bdb347e6817 (diff) | |
| download | mullvadvpn-a0f678c8b564efecad2338555cc9af66b72fac7e.tar.xz mullvadvpn-a0f678c8b564efecad2338555cc9af66b72fac7e.zip | |
Remove subtitle from base cell
Diffstat (limited to 'android/app')
7 files changed, 64 insertions, 92 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt index 26ba0d5f4b..384f365e5e 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt @@ -2,18 +2,14 @@ package net.mullvad.mullvadvpn import androidx.compose.ui.test.SemanticsNodeInteraction import androidx.compose.ui.test.SemanticsNodeInteractionsProvider -import androidx.compose.ui.test.hasAnyChild import androidx.compose.ui.test.hasTestTag import androidx.compose.ui.test.hasText -fun SemanticsNodeInteractionsProvider.onNodeWithTagAndChildrenText( +fun SemanticsNodeInteractionsProvider.onNodeWithTagAndText( testTag: String, text: String, substring: Boolean = false, ignoreCase: Boolean = false, useUnmergedTree: Boolean = false ): SemanticsNodeInteraction = - onNode( - hasTestTag(testTag).and(hasAnyChild(hasText(text, substring, ignoreCase))), - useUnmergedTree - ) + onNode(hasTestTag(testTag).and(hasText(text, substring, ignoreCase)), useUnmergedTree) diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt index fd3be6092f..1b97a47914 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt @@ -26,7 +26,7 @@ import net.mullvad.mullvadvpn.model.Constraint import net.mullvad.mullvadvpn.model.Port import net.mullvad.mullvadvpn.model.PortRange import net.mullvad.mullvadvpn.model.QuantumResistantState -import net.mullvad.mullvadvpn.onNodeWithTagAndChildrenText +import net.mullvad.mullvadvpn.onNodeWithTagAndText import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem import net.mullvad.mullvadvpn.viewmodel.StagedDns import org.junit.Before @@ -565,7 +565,7 @@ class VpnSettingsScreenTest { // Assert composeTestRule - .onNodeWithTagAndChildrenText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On") + .onNodeWithTagAndText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On") .assertExists() } @@ -590,7 +590,7 @@ class VpnSettingsScreenTest { // Assert composeTestRule - .onNodeWithTagAndChildrenText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On") + .onNodeWithTagAndText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On") .performClick() verify(exactly = 1) { mockSelectQuantumResistantSettingListener.invoke(QuantumResistantState.On) @@ -631,7 +631,7 @@ class VpnSettingsScreenTest { // Assert composeTestRule - .onNodeWithTagAndChildrenText( + .onNodeWithTagAndText( testTag = String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 51820), text = "51820" ) @@ -661,7 +661,7 @@ class VpnSettingsScreenTest { // Assert composeTestRule - .onNodeWithTagAndChildrenText( + .onNodeWithTagAndText( testTag = String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 51820), text = "51820" ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt index e8c0518233..01e2aed039 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt @@ -6,8 +6,8 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth @@ -59,58 +59,37 @@ internal fun BaseCell( bodyView: @Composable () -> Unit = {}, isRowEnabled: Boolean = true, onCellClicked: () -> Unit = {}, - subtitle: @Composable (() -> Unit)? = null, - subtitleModifier: Modifier = Modifier, background: Color = MaterialTheme.colorScheme.primary, startPadding: Dp = Dimens.cellStartPadding, endPadding: Dp = Dimens.cellEndPadding, + minHeight: Dp = Dimens.cellHeight, testTag: String = "" ) { - Column( + val rowModifier = + Modifier.let { + if (isRowEnabled) { + it.clickable { onCellClicked() } + } else it + } + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start, modifier = - Modifier.fillMaxWidth().wrapContentHeight().background(background).testTag(testTag) + rowModifier + .wrapContentHeight() + .defaultMinSize(minHeight = minHeight) + .fillMaxWidth() + .background(background) + .testTag(testTag) + .padding(start = startPadding, end = endPadding) ) { - val rowModifier = - Modifier.let { - if (isRowEnabled) { - it.clickable { onCellClicked() } - } else it - } - Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Start, - modifier = - rowModifier - .height(Dimens.cellHeight) - .fillMaxWidth() - .padding(start = startPadding, end = endPadding) - ) { - iconView() - - title() + iconView() - Spacer(modifier = Modifier.weight(1.0f)) + title() - Column(modifier = modifier.wrapContentWidth().wrapContentHeight()) { bodyView() } - } + Spacer(modifier = Modifier.weight(1.0f)) - if (subtitle != null) { - Row( - modifier = - subtitleModifier - .background(MaterialTheme.colorScheme.secondary) - .padding( - start = startPadding, - top = Dimens.cellFooterTopPadding, - end = endPadding, - bottom = Dimens.cellLabelVerticalPadding - ) - .fillMaxWidth() - .wrapContentHeight() - ) { - subtitle() - } - } + Column(modifier = modifier.wrapContentWidth().wrapContentHeight()) { bodyView() } } } @@ -129,3 +108,22 @@ internal fun BaseCellTitle( modifier = modifier.wrapContentWidth(align = Alignment.End).wrapContentHeight() ) } + +@Composable +fun BaseSubtitleCell(text: String, modifier: Modifier = Modifier) { + Text( + text = text, + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSecondary, + modifier = + modifier + .padding( + start = Dimens.cellStartPadding, + top = Dimens.cellFooterTopPadding, + end = Dimens.cellEndPadding, + bottom = Dimens.cellLabelVerticalPadding + ) + .fillMaxWidth() + .wrapContentHeight() + ) +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/MtuComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/MtuComposeCell.kt index d390bb20e5..e14849b599 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/MtuComposeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/MtuComposeCell.kt @@ -8,13 +8,11 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.theme.AppTheme -import net.mullvad.mullvadvpn.compose.theme.MullvadWhite60 import net.mullvad.mullvadvpn.constant.MTU_MAX_VALUE import net.mullvad.mullvadvpn.constant.MTU_MIN_VALUE @@ -30,13 +28,10 @@ fun MtuComposeCell( onEditMtu: () -> Unit, ) { val titleModifier = Modifier - val subtitleModifier = Modifier BaseCell( title = { MtuTitle(modifier = titleModifier) }, bodyView = { MtuBodyView(mtuValue = mtuValue, modifier = titleModifier) }, - subtitle = { MtuSubtitle(subtitleModifier) }, - subtitleModifier = subtitleModifier, onCellClicked = { onEditMtu.invoke() } ) } @@ -57,17 +52,15 @@ private fun MtuBodyView(mtuValue: String, modifier: Modifier) { Row(modifier = modifier.wrapContentWidth1().wrapContentHeight()) { Text( text = mtuValue.ifEmpty { stringResource(id = R.string.hint_default) }, - color = Color.White + color = MaterialTheme.colorScheme.onPrimary ) } } @Composable -private fun MtuSubtitle(modifier: Modifier) { - Text( +fun MtuSubtitle(modifier: Modifier = Modifier) { + BaseSubtitleCell( text = stringResource(R.string.wireguard_mtu_footer, MTU_MIN_VALUE, MTU_MAX_VALUE), - style = MaterialTheme.typography.labelMedium, - color = MullvadWhite60, - modifier = modifier + modifier ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt index fb8a5e89d1..7b1ee8ee46 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt @@ -32,8 +32,7 @@ fun NavigationComposeCell( BaseCell( onCellClicked = onClick, title = { NavigationTitleView(title = title, modifier = modifier) }, - bodyView = { bodyView() }, - subtitle = null, + bodyView = { bodyView() } ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt index 50756ef32e..78fda6015f 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt @@ -39,14 +39,6 @@ private fun PreviewSwitchComposeCell() { onCellClicked = {}, onInfoClicked = {} ) - HeaderSwitchComposeCell( - title = "Checkbox Title", - isEnabled = true, - isToggled = true, - onCellClicked = {}, - onInfoClicked = {}, - subtitle = "Subtitle" - ) NormalSwitchComposeCell( title = "Checkbox Item", isEnabled = true, @@ -63,7 +55,6 @@ fun NormalSwitchComposeCell( title: String, isToggled: Boolean, startPadding: Dp = Dimens.indentedCellStartPadding, - subtitle: String? = null, isEnabled: Boolean = true, background: Color = MaterialTheme.colorScheme.primary, onCellClicked: (Boolean) -> Unit = {}, @@ -73,7 +64,6 @@ fun NormalSwitchComposeCell( titleView = { BaseCellTitle(title = title, style = MaterialTheme.typography.labelLarge) }, isToggled = isToggled, startPadding = startPadding, - subtitle = subtitle, isEnabled = isEnabled, background = background, onCellClicked = onCellClicked, @@ -86,7 +76,6 @@ fun HeaderSwitchComposeCell( title: String, isToggled: Boolean, startPadding: Dp = Dimens.cellStartPadding, - subtitle: String? = null, isEnabled: Boolean = true, background: Color = MaterialTheme.colorScheme.primary, onCellClicked: (Boolean) -> Unit = {}, @@ -96,7 +85,6 @@ fun HeaderSwitchComposeCell( titleView = { BaseCellTitle(title = title, style = MaterialTheme.typography.titleMedium) }, isToggled = isToggled, startPadding = startPadding, - subtitle = subtitle, isEnabled = isEnabled, background = background, onCellClicked = onCellClicked, @@ -109,7 +97,6 @@ private fun SwitchComposeCell( titleView: @Composable () -> Unit, isToggled: Boolean, startPadding: Dp, - subtitle: String?, isEnabled: Boolean, background: Color, onCellClicked: (Boolean) -> Unit, @@ -117,16 +104,6 @@ private fun SwitchComposeCell( ) { BaseCell( title = titleView, - subtitle = - subtitle?.let { - @Composable { - Text( - text = it, - style = MaterialTheme.typography.labelMedium, - color = MaterialTheme.colorScheme.onSecondary - ) - } - }, isRowEnabled = isEnabled, bodyView = { SwitchCellView( @@ -198,3 +175,8 @@ fun CustomDnsCellSubtitle(isCellClickable: Boolean, modifier: Modifier) { modifier = modifier ) } + +@Composable +fun SwitchComposeSubtitleCell(text: String, modifier: Modifier = Modifier) { + BaseSubtitleCell(text = text, modifier = modifier) +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt index f5c8d39cd4..f59581f515 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt @@ -51,8 +51,10 @@ import net.mullvad.mullvadvpn.compose.cell.ExpandableComposeCell import net.mullvad.mullvadvpn.compose.cell.HeaderSwitchComposeCell import net.mullvad.mullvadvpn.compose.cell.InformationComposeCell import net.mullvad.mullvadvpn.compose.cell.MtuComposeCell +import net.mullvad.mullvadvpn.compose.cell.MtuSubtitle import net.mullvad.mullvadvpn.compose.cell.NormalSwitchComposeCell import net.mullvad.mullvadvpn.compose.cell.SelectableCell +import net.mullvad.mullvadvpn.compose.cell.SwitchComposeSubtitleCell import net.mullvad.mullvadvpn.compose.component.CollapsingToolbarScaffold import net.mullvad.mullvadvpn.compose.component.CollapsingTopBar import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar @@ -274,13 +276,15 @@ fun VpnSettingsScreen( Spacer(modifier = Modifier.height(cellVerticalSpacing)) HeaderSwitchComposeCell( title = stringResource(R.string.auto_connect), - subtitle = stringResource(id = R.string.auto_connect_footer), isToggled = uiState.isAutoConnectEnabled, isEnabled = true, onCellClicked = { newValue -> onToggleAutoConnect(newValue) } ) } item { + SwitchComposeSubtitleCell(text = stringResource(id = R.string.auto_connect_footer)) + } + item { Spacer(modifier = Modifier.height(cellVerticalSpacing)) HeaderSwitchComposeCell( title = stringResource(R.string.local_network_sharing), @@ -294,6 +298,7 @@ fun VpnSettingsScreen( Spacer(modifier = Modifier.height(cellVerticalSpacing)) MtuComposeCell(mtuValue = uiState.mtu, onEditMtu = { onMtuCellClick() }) } + item { MtuSubtitle() } itemWithDivider { ExpandableComposeCell( @@ -493,7 +498,6 @@ fun VpnSettingsScreen( ) }, bodyView = {}, - subtitle = null, background = MaterialTheme.colorScheme.secondaryContainer, startPadding = biggerPadding, ) |
