diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-03-11 11:50:51 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-03-11 11:50:51 +0100 |
| commit | 7ce802876646dafdcb35f8842a7c75eecc9fdddc (patch) | |
| tree | efd590e43341be928bef1caf31317c8cfbe45bad | |
| parent | 2e727ca6552a694480faa6debd5100666d57711b (diff) | |
| parent | 79a591abcf5b859d719851bc60d84c57e3f8cce5 (diff) | |
| download | mullvadvpn-7ce802876646dafdcb35f8842a7c75eecc9fdddc.tar.xz mullvadvpn-7ce802876646dafdcb35f8842a7c75eecc9fdddc.zip | |
Merge branch 'use-horizontaldivider-and-verticaldivider-droid-677'
6 files changed, 27 insertions, 56 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/RelayLocationCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/RelayLocationCell.kt index e340b959d6..68899f7f77 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/RelayLocationCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/RelayLocationCell.kt @@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable @@ -29,7 +30,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.component.Chevron -import net.mullvad.mullvadvpn.compose.component.VerticalDivider import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.lib.theme.color.Alpha40 diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/VerticalDivider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/VerticalDivider.kt deleted file mode 100644 index d7e4709b5d..0000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/VerticalDivider.kt +++ /dev/null @@ -1,28 +0,0 @@ -package net.mullvad.mullvadvpn.compose.component - -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.width -import androidx.compose.material3.DividerDefaults -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp - -@Composable -fun VerticalDivider( - modifier: Modifier = Modifier, - thickness: Dp = DividerDefaults.Thickness, - color: Color = DividerDefaults.color, -) { - val targetThickness = - if (thickness == Dp.Hairline) { - (1f / LocalDensity.current.density).dp - } else { - thickness - } - Box(modifier.fillMaxHeight().width(targetThickness).background(color = color)) -} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/extensions/LazyListExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/extensions/LazyListExtensions.kt index 8e1f562b47..594eac4c7a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/extensions/LazyListExtensions.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/extensions/LazyListExtensions.kt @@ -2,8 +2,9 @@ package net.mullvad.mullvadvpn.compose.extensions import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.runtime.Composable inline fun LazyListScope.itemWithDivider( @@ -13,7 +14,18 @@ inline fun LazyListScope.itemWithDivider( ) = item(key = key, contentType = contentType) { itemContent() - Divider() + HorizontalDivider() + } + +inline fun <T> LazyListScope.itemsWithDivider( + items: List<T>, + noinline key: ((item: T) -> Any)? = null, + noinline contentType: (item: T) -> Any? = { null }, + crossinline itemContent: @Composable LazyItemScope.(item: T) -> Unit +) = + items(items = items, key = key, contentType = contentType) { item -> + itemContent(item) + HorizontalDivider() } inline fun <T> LazyListScope.itemsIndexedWithDivider( @@ -24,5 +36,5 @@ inline fun <T> LazyListScope.itemsIndexedWithDivider( ) = itemsIndexed(items = items, key = key, contentType = contentType) { index, item -> itemContent(index, item) - Divider() + HorizontalDivider() } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt index f1306538d0..99fc28fdb5 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -274,7 +274,7 @@ private fun ColumnScope.DeviceListContent( navigateToRemoveDeviceConfirmationDialog(deviceUiState.device) } if (state.deviceUiItems.lastIndex != index) { - Divider() + HorizontalDivider() } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt index b67807ad28..000ad9a1cd 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt @@ -9,8 +9,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Divider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -37,6 +35,8 @@ import net.mullvad.mullvadvpn.compose.button.ApplyButton import net.mullvad.mullvadvpn.compose.cell.CheckboxCell import net.mullvad.mullvadvpn.compose.cell.ExpandableComposeCell import net.mullvad.mullvadvpn.compose.cell.SelectableCell +import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider +import net.mullvad.mullvadvpn.compose.extensions.itemsWithDivider import net.mullvad.mullvadvpn.compose.state.RelayFilterState import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition import net.mullvad.mullvadvpn.lib.theme.AppTheme @@ -146,28 +146,17 @@ fun FilterScreen( }, ) { contentPadding -> LazyColumn(modifier = Modifier.padding(contentPadding).fillMaxSize()) { - item { - Divider() - OwnershipHeader(ownershipExpanded, { ownershipExpanded = it }) - } + itemWithDivider { OwnershipHeader(ownershipExpanded) { ownershipExpanded = it } } if (ownershipExpanded) { item { AnyOwnership(state, onSelectedOwnership) } - items(state.filteredOwnershipByProviders) { ownership -> - Divider() + itemsWithDivider(state.filteredOwnershipByProviders) { ownership -> Ownership(ownership, state, onSelectedOwnership) } } - item { - Divider() - ProvidersHeader(providerExpanded, { providerExpanded = it }) - } + itemWithDivider() { ProvidersHeader(providerExpanded) { providerExpanded = it } } if (providerExpanded) { - item { - Divider() - AllProviders(state, onAllProviderCheckChange) - } - items(state.filteredProvidersByOwnership) { provider -> - Divider() + itemWithDivider { AllProviders(state, onAllProviderCheckChange) } + itemsWithDivider(state.filteredProvidersByOwnership) { provider -> Provider(provider, state, onSelectedProvider) } } 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 0aeece1c19..6928e8fb43 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 @@ -7,8 +7,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material3.Divider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text @@ -67,6 +65,7 @@ import net.mullvad.mullvadvpn.compose.destinations.WireguardPortInfoDialogDestin import net.mullvad.mullvadvpn.compose.dialog.WireguardCustomPortNavArgs import net.mullvad.mullvadvpn.compose.dialog.WireguardPortInfoDialogArgument import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider +import net.mullvad.mullvadvpn.compose.extensions.itemsIndexedWithDivider import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG @@ -436,7 +435,7 @@ fun VpnSettingsScreen( } if (state.isCustomDnsEnabled) { - itemsIndexed(state.customDnsItems) { index, item -> + itemsIndexedWithDivider(state.customDnsItems) { index, item -> DnsCell( address = item.address, isUnreachableLocalDnsWarningVisible = @@ -444,7 +443,6 @@ fun VpnSettingsScreen( onClick = { navigateToDns(index, item.address) }, modifier = Modifier.animateItemPlacement() ) - Divider() } itemWithDivider { |
