summaryrefslogtreecommitdiffhomepage
path: root/android/app
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-07-06 15:14:27 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-07-11 22:54:48 +0200
commita0f678c8b564efecad2338555cc9af66b72fac7e (patch)
tree3489ca42eee81dd285f7b21e66491a88dd1a4459 /android/app
parent2d4f28072a976c513ac8a7e2f5657bdb347e6817 (diff)
downloadmullvadvpn-a0f678c8b564efecad2338555cc9af66b72fac7e.tar.xz
mullvadvpn-a0f678c8b564efecad2338555cc9af66b72fac7e.zip
Remove subtitle from base cell
Diffstat (limited to 'android/app')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt8
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt84
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/MtuComposeCell.kt15
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt28
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt8
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,
)