diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-10-01 13:47:50 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-10-01 13:47:50 +0200 |
| commit | 4a263046c888a0fda676847dd16a2c4a855d4419 (patch) | |
| tree | 55555315cbf8c7cd74f474c3c20fa2884e36e781 /android/app | |
| parent | 5c05c73feaeeee30dae1c81a7e2ffc3e5b9e03b1 (diff) | |
| parent | 029ceec389cb4ea73c6229a72f655aa125a78091 (diff) | |
| download | mullvadvpn-4a263046c888a0fda676847dd16a2c4a855d4419.tar.xz mullvadvpn-4a263046c888a0fda676847dd16a2c4a855d4419.zip | |
Merge branch 'make-use-of-material-icons'
Diffstat (limited to 'android/app')
52 files changed, 309 insertions, 292 deletions
diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index bb290ac89e..97a3965aaf 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -349,6 +349,7 @@ dependencies { implementation(libs.compose.constrainlayout) implementation(libs.compose.foundation) implementation(libs.compose.material3) + implementation(libs.compose.icons.extended) implementation(libs.compose.ui) implementation(libs.compose.ui.util) implementation(libs.compose.destinations) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/AnimatedIconButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/AnimatedIconButton.kt index 090dc287c6..dd91846c8c 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/AnimatedIconButton.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/AnimatedIconButton.kt @@ -10,15 +10,15 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.graphics.vector.ImageVector import kotlinx.coroutines.delay internal const val PRESS_EFFECT_TIME_SPAN: Long = 1000 @Composable fun AnimatedIconButton( - defaultIcon: Painter, - secondaryIcon: Painter, + defaultIcon: ImageVector, + secondaryIcon: ImageVector, pressEffectDuration: Long = PRESS_EFFECT_TIME_SPAN, defaultIconTint: Color, secondaryIconTint: Color, @@ -50,24 +50,24 @@ fun AnimatedIconButton( } ) { AnimatedContent(targetState = state, label = contentDescription) { targetState -> - val iconPainter: Painter + val imageVector: ImageVector val tint: Color when (targetState) { ButtonState.IDLE -> { - iconPainter = defaultIcon + imageVector = defaultIcon tint = defaultIconTint } ButtonState.TOGGLED -> { - iconPainter = secondaryIcon + imageVector = secondaryIcon tint = secondaryIconTint } ButtonState.PRESSED -> { - iconPainter = secondaryIcon + imageVector = secondaryIcon tint = secondaryIconTint } } - Icon(painter = iconPainter, contentDescription = contentDescription, tint = tint) + Icon(imageVector = imageVector, contentDescription = contentDescription, tint = tint) } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/ExternalActionButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/ExternalActionButton.kt index f4c309bd07..2666ab1485 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/ExternalActionButton.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/ExternalActionButton.kt @@ -1,11 +1,13 @@ package net.mullvad.mullvadvpn.compose.button +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.OpenInNew +import androidx.compose.material.icons.filled.OpenInNew import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.AppTheme @Preview @@ -45,7 +47,11 @@ fun ExternalButton( modifier = modifier, isEnabled = isEnabled, icon = { - Icon(painter = painterResource(id = R.drawable.icon_extlink), contentDescription = null) + Icon( + imageVector = Icons.AutoMirrored.Filled.OpenInNew, + tint = MaterialTheme.colorScheme.onTertiary, + contentDescription = null, + ) }, ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/InfoIconButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/InfoIconButton.kt index 61d0db68b3..df26edb857 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/InfoIconButton.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/InfoIconButton.kt @@ -1,13 +1,13 @@ package net.mullvad.mullvadvpn.compose.button +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import net.mullvad.mullvadvpn.R @Composable fun InfoIconButton( @@ -18,7 +18,7 @@ fun InfoIconButton( ) { IconButton(modifier = modifier, onClick = onClick) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = contentDescription, tint = iconTint, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/SwitchLocationButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/SwitchLocationButton.kt index 69bff821c9..910276bb5b 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/SwitchLocationButton.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/SwitchLocationButton.kt @@ -121,7 +121,10 @@ fun SwitchLocationButton( overflow = TextOverflow.Ellipsis, modifier = if (isReconnectButtonEnabled) { - Modifier.padding(start = componentHeight + Dimens.listItemDivider) + Modifier.padding( + start = + componentHeight + Dimens.listItemDivider + Dimens.smallPadding + ) } else { Modifier }, @@ -153,7 +156,7 @@ fun SwitchLocationButton( .defaultMinSize(minWidth = Dimens.switchLocationRetryMinWidth), ) { Icon( - painter = painterResource(id = R.drawable.icon_reload), + painter = painterResource(R.drawable.icon_reconnect), contentDescription = null, ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt index c73054f772..321a86700f 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt @@ -12,6 +12,8 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -20,7 +22,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -78,7 +79,7 @@ fun CustomPortCell( .testTag(mainTestTag), ) { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = null, tint = MaterialTheme.colorScheme.onSelected, modifier = diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt index a420534780..1aacaedbc1 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt @@ -1,12 +1,14 @@ package net.mullvad.mullvadvpn.compose.cell import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Error +import androidx.compose.material.icons.rounded.Error import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -38,7 +40,7 @@ fun DnsCell( bodyView = { if (isUnreachableLocalDnsWarningVisible) { Icon( - painter = painterResource(id = R.drawable.icon_alert), + imageVector = Icons.Rounded.Error, contentDescription = stringResource(id = R.string.confirm_local_dns), tint = MaterialTheme.colorScheme.warning, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DropdownMenuCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DropdownMenuCell.kt index 4ab25d6078..02568ec5a3 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DropdownMenuCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DropdownMenuCell.kt @@ -1,15 +1,15 @@ package net.mullvad.mullvadvpn.compose.cell +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens @@ -42,7 +42,7 @@ fun ThreeDotCell( bodyView = { IconButton(onClick = onClickDots) { Icon( - painter = painterResource(id = R.drawable.icon_more_vert), + imageVector = Icons.Default.MoreVert, contentDescription = null, tint = textColor, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt index 3ccefe13b5..46a2053ffc 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt @@ -4,6 +4,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -15,7 +17,6 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview @@ -100,7 +101,7 @@ private fun ExpandableComposeCellBody( onClick = onInfoClicked, ) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt index 1823d15765..329f66afb4 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt @@ -3,28 +3,29 @@ package net.mullvad.mullvadvpn.compose.cell import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme 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.painterResource +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens @Preview @Composable private fun PreviewIconCell() { - AppTheme { IconCell(iconId = R.drawable.icon_add, title = "Add") } + AppTheme { IconCell(imageVector = Icons.Default.Add, title = "Add") } } @Composable fun IconCell( - iconId: Int?, + imageVector: ImageVector?, title: String, modifier: Modifier = Modifier, contentDescription: String? = null, @@ -37,9 +38,9 @@ fun IconCell( BaseCell( headlineContent = { Row(verticalAlignment = Alignment.CenterVertically) { - iconId?.let { + imageVector?.let { Icon( - painter = painterResource(id = iconId), + imageVector = imageVector, contentDescription = contentDescription, tint = titleColor, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/InformationComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/InformationComposeCell.kt index adfa64585c..f5376335b3 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/InformationComposeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/InformationComposeCell.kt @@ -4,6 +4,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -13,9 +15,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.lib.theme.color.AlphaInactive @@ -79,7 +79,7 @@ private fun InformationComposeCellBody(modifier: Modifier, onInfoClicked: (() -> .align(Alignment.CenterVertically), ) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onPrimary, ) 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 2ef9a22c4e..2240e10eb8 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 @@ -6,6 +6,10 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ChevronRight +import androidx.compose.material.icons.filled.Error +import androidx.compose.material.icons.filled.OpenInNew import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -13,11 +17,8 @@ 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.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R -import net.mullvad.mullvadvpn.compose.component.ChevronRight import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens @@ -67,7 +68,7 @@ fun NavigationComposeCell( showWarning: Boolean = false, textColor: Color = MaterialTheme.colorScheme.onPrimary, bodyView: @Composable () -> Unit = { - ChevronRight(contentDescription = title, tint = textColor) + Icon(Icons.Default.ChevronRight, contentDescription = title, tint = textColor) }, isRowEnabled: Boolean = true, onClick: () -> Unit, @@ -96,7 +97,7 @@ internal fun NavigationTitleView( ) { if (showWarning) { Icon( - painter = painterResource(id = R.drawable.icon_alert), + imageVector = Icons.Default.Error, modifier = Modifier.padding(end = Dimens.smallPadding), contentDescription = null, tint = MaterialTheme.colorScheme.error, @@ -115,7 +116,7 @@ internal fun NavigationTitleView( @Composable internal fun DefaultExternalLinkView(chevronContentDescription: String, tint: Color) { Icon( - painter = painterResource(id = R.drawable.icon_extlink), + imageVector = Icons.Default.OpenInNew, contentDescription = chevronContentDescription, tint = tint, ) @@ -139,7 +140,11 @@ internal fun NavigationCellBody( if (isExternalLink) { DefaultExternalLinkView(content, tint = contentColor) } else { - ChevronRight(tint = contentColor, contentDescription = contentBodyDescription) + Icon( + Icons.Default.ChevronRight, + tint = contentColor, + contentDescription = contentBodyDescription, + ) } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt index 55e1a76d9d..6688f5d0ab 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt @@ -10,6 +10,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ChevronRight +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable @@ -20,7 +23,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import net.mullvad.mullvadvpn.R -import net.mullvad.mullvadvpn.compose.component.ChevronRight import net.mullvad.mullvadvpn.compose.preview.SelectObfuscationCellPreviewParameterProvider import net.mullvad.mullvadvpn.lib.model.Constraint import net.mullvad.mullvadvpn.lib.model.ObfuscationMode @@ -98,7 +100,11 @@ fun ObfuscationModeCell( .clickable { onNavigate() }, contentAlignment = Alignment.Center, ) { - ChevronRight(tint = MaterialTheme.colorScheme.onPrimary, contentDescription = null) + Icon( + imageVector = Icons.Default.ChevronRight, + tint = MaterialTheme.colorScheme.onPrimary, + contentDescription = null, + ) } } } 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 3ae3487526..5b3b828e3d 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 @@ -15,6 +15,8 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -24,13 +26,11 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import net.mullvad.mullvadvpn.R -import net.mullvad.mullvadvpn.compose.component.Chevron +import net.mullvad.mullvadvpn.compose.component.ExpandChevron import net.mullvad.mullvadvpn.compose.component.MullvadCheckbox import net.mullvad.mullvadvpn.compose.preview.RelayItemCheckableCellPreviewParameterProvider import net.mullvad.mullvadvpn.lib.model.RelayItem @@ -83,10 +83,7 @@ fun StatusRelayItemCell( isSelected, leadingContent = { if (isSelected) { - Icon( - painter = painterResource(id = R.drawable.icon_tick), - contentDescription = null, - ) + Icon(imageVector = Icons.Default.Check, contentDescription = null) } else { Box( modifier = @@ -228,7 +225,7 @@ private fun RowScope.ExpandButton( color = MaterialTheme.colorScheme.surface, modifier = Modifier.padding(vertical = Dimens.verticalDividerPadding), ) - Chevron( + ExpandChevron( color = color, isExpanded = isExpanded, modifier = diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt index f958bec319..9d3688d352 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt @@ -3,17 +3,17 @@ package net.mullvad.mullvadvpn.compose.cell import androidx.compose.foundation.background import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.component.SpacedColumn import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens @@ -100,7 +100,7 @@ fun RowScope.SelectableIcon( isEnabled: Boolean, ) { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = iconContentDescription, tint = MaterialTheme.colorScheme.onSelected, modifier = diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt index 6a684edef1..05bbcb1b5a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt @@ -5,6 +5,9 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.Remove import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -106,15 +109,12 @@ fun SplitTunnelingCell( }, bodyView = { Icon( - painter = - painterResource( - id = - if (isSelected) { - R.drawable.ic_icons_remove - } else { - R.drawable.ic_icons_add - } - ), + imageVector = + if (isSelected) { + Icons.Default.Remove + } else { + Icons.Default.Add + }, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, modifier = Modifier.size(size = Dimens.addIconSize), 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 3ed8887291..c5d9ef1f3f 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 @@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -15,7 +17,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview @@ -167,11 +168,7 @@ fun SwitchCellView( .padding(horizontal = Dimens.miniPadding), onClick = onInfoClicked, ) { - Icon( - painter = painterResource(id = R.drawable.icon_info), - contentDescription = null, - tint = iconColor, - ) + Icon(imageVector = Icons.Default.Info, contentDescription = null, tint = iconColor) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Chevron.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Chevron.kt deleted file mode 100644 index 29ca1537f8..0000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Chevron.kt +++ /dev/null @@ -1,91 +0,0 @@ -package net.mullvad.mullvadvpn.compose.component - -import androidx.compose.animation.core.LinearEasing -import androidx.compose.animation.core.TweenSpec -import androidx.compose.animation.core.animateFloatAsState -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.rotate -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import net.mullvad.mullvadvpn.R - -@Composable -@Preview -private fun PreviewChevron() { - Column { - Chevron(color = MaterialTheme.colorScheme.onPrimary, isExpanded = false) - Chevron(color = MaterialTheme.colorScheme.onPrimary, isExpanded = true) - } -} - -@Composable -@Preview -private fun PreviewChevronRight() { - Column { - ChevronLeft(tint = MaterialTheme.colorScheme.onPrimary) - ChevronRight(tint = MaterialTheme.colorScheme.onPrimary) - } -} - -@Composable -fun Chevron(modifier: Modifier = Modifier, color: Color, isExpanded: Boolean) { - - val degree = remember(isExpanded) { if (isExpanded) UP_ROTATION else DOWN_ROTATION } - val animatedRotation = - animateFloatAsState( - targetValue = degree, - label = "", - animationSpec = TweenSpec(100, easing = LinearEasing), - ) - - Icon( - painterResource(id = R.drawable.icon_chevron), - contentDescription = null, - tint = color, - modifier = modifier.rotate(animatedRotation.value), - ) -} - -@Composable -fun ChevronLeft(modifier: Modifier = Modifier, tint: Color, contentDescription: String? = null) { - Icon( - painterResource(id = R.drawable.icon_chevron), - contentDescription = contentDescription, - tint = tint, - modifier = modifier.rotate(LEFT_ROTATION), - ) -} - -@Composable -fun ChevronRight(modifier: Modifier = Modifier, tint: Color, contentDescription: String? = null) { - Icon( - painterResource(id = R.drawable.icon_chevron), - contentDescription = contentDescription, - tint = tint, - modifier = modifier.rotate(RIGHT_ROTATION), - ) -} - -@Composable -fun ExpandChevronIconButton( - modifier: Modifier = Modifier, - color: Color, - onExpand: (Boolean) -> Unit, - isExpanded: Boolean, -) { - IconButton(modifier = modifier, onClick = { onExpand(!isExpanded) }) { - Chevron(isExpanded = isExpanded, color = color) - } -} - -private const val RIGHT_ROTATION = -90f -private const val LEFT_ROTATION = 90f -private const val DOWN_ROTATION = 0f -private const val UP_ROTATION = 180f diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/CopyableObfuscationView.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/CopyableObfuscationView.kt index ac0938756e..430ae0cba1 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/CopyableObfuscationView.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/CopyableObfuscationView.kt @@ -2,6 +2,11 @@ package net.mullvad.mullvadvpn.compose.component import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.ContentCopy +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -10,7 +15,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import net.mullvad.mullvadvpn.R @@ -38,8 +42,8 @@ fun CopyableObfuscationView( modifier = Modifier.weight(1f), ) AnimatedIconButton( - defaultIcon = painterResource(id = R.drawable.icon_hide), - secondaryIcon = painterResource(id = R.drawable.icon_show), + defaultIcon = Icons.Default.Visibility, + secondaryIcon = Icons.Default.VisibilityOff, defaultIconTint = MaterialTheme.colorScheme.onSurface, secondaryIconTint = MaterialTheme.colorScheme.onSurface, isToggleButton = true, @@ -54,8 +58,8 @@ fun CopyableObfuscationView( @Composable fun CopyAnimatedIconButton(onClick: () -> Unit) { AnimatedIconButton( - defaultIcon = painterResource(id = R.drawable.icon_copy), - secondaryIcon = painterResource(id = R.drawable.icon_tick), + defaultIcon = Icons.Default.ContentCopy, + secondaryIcon = Icons.Default.Check, defaultIconTint = MaterialTheme.colorScheme.onSurface, secondaryIconTint = MaterialTheme.colorScheme.tertiary, isToggleButton = false, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt new file mode 100644 index 0000000000..a38b283256 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt @@ -0,0 +1,61 @@ +package net.mullvad.mullvadvpn.compose.component + +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.TweenSpec +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.layout.Column +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.KeyboardArrowDown +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview + +@Composable +@Preview +private fun PreviewChevron() { + Column { + ExpandChevron(color = MaterialTheme.colorScheme.onPrimary, isExpanded = false) + ExpandChevron(color = MaterialTheme.colorScheme.onPrimary, isExpanded = true) + } +} + +@Composable +fun ExpandChevron(modifier: Modifier = Modifier, color: Color, isExpanded: Boolean) { + + val degree = remember(isExpanded) { if (isExpanded) UP_ROTATION else DOWN_ROTATION } + val animatedRotation = + animateFloatAsState( + targetValue = degree, + label = "", + animationSpec = TweenSpec(ROTATION_ANIMATION_DURATION, easing = LinearEasing), + ) + + Icon( + imageVector = Icons.Default.KeyboardArrowDown, + contentDescription = null, + tint = color, + modifier = modifier.rotate(animatedRotation.value), + ) +} + +@Composable +fun ExpandChevronIconButton( + modifier: Modifier = Modifier, + color: Color, + onExpand: (Boolean) -> Unit, + isExpanded: Boolean, +) { + IconButton(modifier = modifier, onClick = { onExpand(!isExpanded) }) { + ExpandChevron(isExpanded = isExpanded, color = color) + } +} + +private const val DOWN_ROTATION = 0f +private const val UP_ROTATION = 180f +private const val ROTATION_ANIMATION_DURATION = 100 diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/FilterChip.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/FilterChip.kt index 94e1c7853a..92e2093177 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/FilterChip.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/FilterChip.kt @@ -1,6 +1,8 @@ package net.mullvad.mullvadvpn.compose.component import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Clear import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon import androidx.compose.material3.InputChip @@ -9,7 +11,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import net.mullvad.mullvadvpn.R @@ -76,7 +77,7 @@ fun MullvadFilterChip( if (enabled) { { Icon( - painter = painterResource(id = R.drawable.icon_close), + imageVector = Icons.Default.Clear, contentDescription = null, modifier = Modifier.size(Dimens.smallIconSize), ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt index 1276823792..83f4758db4 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt @@ -30,7 +30,7 @@ private fun PreviewMullvadModalBottomSheet() { sheetContent = { HeaderCell(text = "Title") HorizontalDivider() - IconCell(iconId = null, title = "Select") + IconCell(imageVector = null, title = "Select") }, onDismissRequest = {}, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/NavigateButton.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/NavigateButton.kt index c9064e1372..43ba773cdc 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/NavigateButton.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/NavigateButton.kt @@ -1,34 +1,32 @@ package net.mullvad.mullvadvpn.compose.component +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.ArrowDownward +import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.rotate -import androidx.compose.ui.res.painterResource -import net.mullvad.mullvadvpn.R @Composable fun NavigateBackIconButton(modifier: Modifier = Modifier, onNavigateBack: () -> Unit) { IconButton(onClick = onNavigateBack, modifier = modifier) { - Icon(painter = painterResource(id = R.drawable.icon_back), contentDescription = null) + Icon(imageVector = Icons.AutoMirrored.Default.ArrowBack, contentDescription = null) } } @Composable fun NavigateBackDownIconButton(onNavigateBack: () -> Unit) { IconButton(onClick = onNavigateBack) { - Icon( - modifier = Modifier.rotate(-90f), - painter = painterResource(id = R.drawable.icon_back), - contentDescription = null, - ) + Icon(imageVector = Icons.Default.ArrowDownward, contentDescription = null) } } @Composable fun NavigateCloseIconButton(onNavigateClose: () -> Unit) { IconButton(onClick = onNavigateClose) { - Icon(painter = painterResource(id = R.drawable.icon_close), contentDescription = null) + Icon(imageVector = Icons.Default.Close, contentDescription = null) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt index 87757167a7..ce2c49bf9c 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt @@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -14,7 +16,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import net.mullvad.mullvadvpn.R @@ -162,7 +163,7 @@ fun PlayPayment( modifier = Modifier.testTag(PLAY_PAYMENT_INFO_ICON_TEST_TAG), ) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt index 72ee86678b..3d591bafba 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt @@ -11,6 +11,9 @@ import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.OpenInNew +import androidx.compose.material.icons.filled.OpenInNew import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -26,8 +29,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll -import androidx.compose.ui.res.painterResource -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.button.PrimaryButton import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.lib.theme.color.AlphaScrollbar @@ -245,7 +246,8 @@ fun ScaffoldWithLargeTopBarAndButton( ), trailingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_extlink), + imageVector = Icons.AutoMirrored.Filled.OpenInNew, + tint = MaterialTheme.colorScheme.onPrimary, contentDescription = null, ) }, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/TopBar.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/TopBar.kt index d90be57952..5bdb8e71ca 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/TopBar.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/TopBar.kt @@ -17,6 +17,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AccountCircle +import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -161,7 +164,7 @@ fun MullvadTopBar( onClick = onAccountClicked, ) { Icon( - painter = painterResource(R.drawable.icon_account), + imageVector = Icons.Default.AccountCircle, tint = iconTintColor, contentDescription = stringResource(id = R.string.settings_account), ) @@ -175,7 +178,7 @@ fun MullvadTopBar( onClick = onSettingsClicked, ) { Icon( - painter = painterResource(R.drawable.icon_settings), + imageVector = Icons.Default.Settings, tint = iconTintColor, contentDescription = stringResource(id = R.string.settings), ) @@ -229,10 +232,7 @@ private fun PreviewSlimMediumTopBar() { title = "Long top bar with long title", actions = { IconButton(onClick = {}) { - Icon( - painter = painterResource(id = R.drawable.icon_settings), - contentDescription = null, - ) + Icon(imageVector = Icons.Default.Settings, contentDescription = null) } }, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt index ac325c8f9c..676b08ed34 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt @@ -19,7 +19,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -186,7 +185,8 @@ private fun Notification(notificationBannerData: NotificationData) { onClick = it.onClick, ) { Icon( - painter = painterResource(id = it.icon), + modifier = Modifier.padding(Dimens.notificationIconPadding), + imageVector = it.icon, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt index bffd7d7560..1b811ed313 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt @@ -1,8 +1,12 @@ package net.mullvad.mullvadvpn.compose.component.notificationbanner -import androidx.annotation.DrawableRes +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.OpenInNew +import androidx.compose.material.icons.filled.Clear +import androidx.compose.material.icons.filled.OpenInNew import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString @@ -31,7 +35,7 @@ data class NotificationData( ) : this(title, message?.let { AnnotatedString(it) }, statusLevel, action) } -data class NotificationAction(@DrawableRes val icon: Int, val onClick: (() -> Unit)) +data class NotificationAction(val icon: ImageVector, val onClick: (() -> Unit)) @Composable fun InAppNotification.toNotificationData( @@ -60,7 +64,7 @@ fun InAppNotification.toNotificationData( ) ), statusLevel = StatusLevel.Info, - action = NotificationAction(R.drawable.icon_close, onDismissNewDevice), + action = NotificationAction(Icons.Default.Clear, onDismissNewDevice), ) is InAppNotification.AccountExpiry -> NotificationData( @@ -69,7 +73,8 @@ fun InAppNotification.toNotificationData( statusLevel = StatusLevel.Error, action = if (isPlayBuild) null - else NotificationAction(R.drawable.icon_extlink, onClickShowAccount), + else + NotificationAction(Icons.AutoMirrored.Default.OpenInNew, onClickShowAccount), ) InAppNotification.TunnelStateBlocked -> NotificationData( @@ -84,7 +89,11 @@ fun InAppNotification.toNotificationData( statusLevel = StatusLevel.Error, action = if (isPlayBuild) null - else NotificationAction(R.drawable.icon_extlink, onClickUpdateVersion), + else + NotificationAction( + Icons.AutoMirrored.Default.OpenInNew, + onClickUpdateVersion, + ), ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DaitaConfirmationDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DaitaConfirmationDialog.kt index a5237a0ca5..a79398897a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DaitaConfirmationDialog.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DaitaConfirmationDialog.kt @@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Error import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -14,7 +16,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.compose.dropUnlessResumed @@ -44,7 +45,7 @@ fun DaitaConfirmation(navigator: ResultBackNavigator<Boolean>) { icon = { Icon( modifier = Modifier.fillMaxWidth().height(Dimens.dialogIconHeight), - painter = painterResource(id = R.drawable.icon_alert), + imageVector = Icons.Default.Error, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/NegativeConfirmationDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/NegativeConfirmationDialog.kt index bad856d8c7..4720fd9fb7 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/NegativeConfirmationDialog.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/NegativeConfirmationDialog.kt @@ -4,6 +4,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Error import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle @@ -14,7 +16,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.TextStyle @@ -80,7 +81,7 @@ fun NegativeConfirmationDialog( icon = { Icon( modifier = Modifier.fillMaxWidth().height(Dimens.dialogIconHeight), - painter = painterResource(id = R.drawable.icon_alert), + imageVector = Icons.Default.Error, contentDescription = stringResource(id = R.string.remove_button), tint = MaterialTheme.colorScheme.error, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/info/InfoDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/info/InfoDialog.kt index f1f0a6d41f..b77decc9f0 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/info/InfoDialog.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/info/InfoDialog.kt @@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -14,7 +16,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview @@ -48,7 +49,7 @@ fun InfoDialog(message: String, additionalInfo: String? = null, onDismiss: () -> icon = { Icon( modifier = Modifier.fillMaxWidth().height(Dimens.dialogIconHeight), - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = "", tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SplitTunnelingUiStatePreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SplitTunnelingUiStatePreviewParameterProvider.kt index 70d9d2eae2..dee2d25733 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SplitTunnelingUiStatePreviewParameterProvider.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SplitTunnelingUiStatePreviewParameterProvider.kt @@ -16,12 +16,12 @@ class SplitTunnelingUiStatePreviewParameterProvider : AppData( packageName = "my.package.a", name = "TitleA", - iconRes = R.drawable.icon_alert, + iconRes = R.drawable.ic_icons_missing, ), AppData( packageName = "my.package.b", name = "TitleB", - iconRes = R.drawable.icon_chevron, + iconRes = R.drawable.ic_icons_missing, ), ), includedApps = @@ -29,7 +29,7 @@ class SplitTunnelingUiStatePreviewParameterProvider : AppData( packageName = "my.package.c", name = "TitleC", - iconRes = R.drawable.icon_alert, + iconRes = R.drawable.ic_icons_missing, ) ), showSystemApps = true, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt index ac1d758ecc..262f990d99 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -20,7 +22,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -45,7 +46,7 @@ import net.mullvad.mullvadvpn.compose.button.RedeemVoucherButton import net.mullvad.mullvadvpn.compose.component.CopyableObfuscationView import net.mullvad.mullvadvpn.compose.component.InformationView import net.mullvad.mullvadvpn.compose.component.MissingPolicy -import net.mullvad.mullvadvpn.compose.component.NavigateBackDownIconButton +import net.mullvad.mullvadvpn.compose.component.NavigateCloseIconButton import net.mullvad.mullvadvpn.compose.component.PlayPayment import net.mullvad.mullvadvpn.compose.component.ScaffoldWithMediumTopBar import net.mullvad.mullvadvpn.compose.extensions.createOpenAccountPageHook @@ -151,7 +152,7 @@ fun AccountScreen( ScaffoldWithMediumTopBar( appBarTitle = stringResource(id = R.string.settings_account), - navigationIcon = { NavigateBackDownIconButton(onBackClick) }, + navigationIcon = { NavigateCloseIconButton(onBackClick) }, snackbarHostState = snackbarHostState, ) { modifier -> Column( @@ -224,7 +225,7 @@ private fun DeviceNameRow(deviceName: String, onInfoClick: () -> Unit) { InformationView(content = deviceName, whenMissing = MissingPolicy.SHOW_SPINNER) IconButton(onClick = onInfoClick) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt index 51214b294a..5dc2fa6d30 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt @@ -5,6 +5,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ChevronRight +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -14,7 +17,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -28,7 +30,6 @@ import com.ramcosta.composedestinations.navigation.DestinationsNavigator import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.button.PrimaryButton import net.mullvad.mullvadvpn.compose.cell.TwoRowCell -import net.mullvad.mullvadvpn.compose.component.ChevronRight import net.mullvad.mullvadvpn.compose.component.NavigateBackIconButton import net.mullvad.mullvadvpn.compose.component.ScaffoldWithMediumTopBar import net.mullvad.mullvadvpn.compose.constant.ContentType @@ -144,7 +145,7 @@ private fun LazyListScope.currentAccessMethod( .testTag(API_ACCESS_LIST_INFO_TEST_TAG), ) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) @@ -188,9 +189,10 @@ private fun ApiAccessMethodItem( titleStyle = MaterialTheme.typography.titleMedium, subtitleColor = MaterialTheme.colorScheme.onSurfaceVariant, bodyView = { - ChevronRight( - tint = MaterialTheme.colorScheme.onPrimary, + Icon( + Icons.Default.ChevronRight, contentDescription = apiAccessMethodSetting.name.value, + tint = MaterialTheme.colorScheme.onPrimary, ) }, onCellClicked = { onApiAccessMethodClick(apiAccessMethodSetting) }, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessMethodDetailsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessMethodDetailsScreen.kt index 4d806b3645..68cd3dd00b 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessMethodDetailsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessMethodDetailsScreen.kt @@ -6,6 +6,9 @@ import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.HorizontalDivider @@ -26,7 +29,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -274,7 +276,7 @@ private fun Actions(onDeleteAccessMethod: () -> Unit) { onClick = { showMenu = true }, modifier = Modifier.testTag(API_ACCESS_DETAILS_TOP_BAR_DROPDOWN_BUTTON_TEST_TAG), ) { - Icon(painter = painterResource(id = R.drawable.icon_more_vert), contentDescription = null) + Icon(imageVector = Icons.Default.MoreVert, contentDescription = null) if (showMenu) { DropdownMenu( expanded = true, @@ -285,7 +287,8 @@ private fun Actions(onDeleteAccessMethod: () -> Unit) { text = { Text(text = stringResource(id = R.string.delete_method)) }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_delete), + imageVector = Icons.Default.Delete, + tint = MaterialTheme.colorScheme.onSurface, contentDescription = null, ) }, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt index f95c4681f9..0a69b4fbb6 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt @@ -19,6 +19,9 @@ import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.ClickableText +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ChevronLeft +import androidx.compose.material.icons.filled.ChevronRight import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -29,7 +32,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip -import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -115,7 +118,7 @@ fun AutoConnectAndLockdownModeScreen(onBackClick: () -> Unit = {}) { } }, isEnabled = { pagerState.currentPage != 0 }, - rotation = 90f, + imageVector = Icons.Default.ChevronLeft, ) // Go to next page @@ -132,7 +135,7 @@ fun AutoConnectAndLockdownModeScreen(onBackClick: () -> Unit = {}) { } }, isEnabled = { pagerState.currentPage != pagerState.pageCount - 1 }, - rotation = -90f, + imageVector = Icons.Default.ChevronRight, ) PageIndicator( @@ -216,18 +219,14 @@ private fun CarouselNavigationButton( modifier: Modifier = Modifier, onClick: () -> Unit, isEnabled: () -> Boolean, - rotation: Float, + imageVector: ImageVector, ) { IconButton( modifier = modifier.alpha(if (isEnabled.invoke()) AlphaVisible else AlphaInvisible), onClick = onClick, enabled = isEnabled.invoke(), ) { - Icon( - painter = painterResource(id = R.drawable.icon_chevron), - contentDescription = null, - modifier = Modifier.rotate(rotation), - ) + Icon(contentDescription = null, imageVector = imageVector) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt index 4f39295d37..a9d47893b1 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt @@ -65,8 +65,8 @@ import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.button.ConnectionButton import net.mullvad.mullvadvpn.compose.button.SwitchLocationButton -import net.mullvad.mullvadvpn.compose.component.Chevron import net.mullvad.mullvadvpn.compose.component.ConnectionStatusText +import net.mullvad.mullvadvpn.compose.component.ExpandChevron import net.mullvad.mullvadvpn.compose.component.MullvadCircularProgressIndicatorLarge import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBarAndDeviceName import net.mullvad.mullvadvpn.compose.component.connectioninfo.ConnectionDetailPanel @@ -397,7 +397,7 @@ private fun ConnectionCardHeader( Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) { ConnectionStatusText(state = state.tunnelState) if (state.tunnelState is TunnelState.Connected) { - Chevron(isExpanded = !expanded, color = MaterialTheme.colorScheme.onSurface) + ExpandChevron(isExpanded = !expanded, color = MaterialTheme.colorScheme.onSurface) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt index 65fca696e8..08ec0ee503 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt @@ -4,6 +4,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -18,7 +20,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -125,7 +126,7 @@ fun CustomListsScreen( modifier = Modifier.testTag(NEW_LIST_BUTTON_TEST_TAG), ) { Icon( - painterResource(id = R.drawable.ic_icons_add), + imageVector = Icons.Default.Add, tint = MaterialTheme.colorScheme.onSurface, contentDescription = stringResource(id = R.string.new_list), ) 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 7617a8cb63..beb83a9b2e 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,6 +12,8 @@ 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.material.icons.Icons +import androidx.compose.material.icons.filled.Clear import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -312,7 +314,7 @@ private fun DeviceListItem(device: Device, isLoading: Boolean, onDeviceRemovalCl } else { IconButton(onClick = onDeviceRemovalClicked) { Icon( - painter = painterResource(id = R.drawable.icon_close), + imageVector = Icons.Default.Clear, contentDescription = stringResource(id = R.string.remove_button), tint = MaterialTheme.colorScheme.onPrimary, modifier = Modifier.size(size = Dimens.deleteIconSize), diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt index 32a4242a91..6596f7c343 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarDuration @@ -22,7 +24,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization @@ -318,7 +319,7 @@ private fun ApiAccessMethodTypeSelection( }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = null, modifier = Modifier.padding(end = Dimens.selectableCellTextMargin) @@ -495,7 +496,7 @@ private fun CipherSelection(cipher: Cipher, onCipherChange: (Cipher) -> Unit) { }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = null, modifier = Modifier.padding(end = Dimens.selectableCellTextMargin) @@ -534,7 +535,7 @@ private fun EnableAuthentication( }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = null, modifier = Modifier.padding(end = Dimens.selectableCellTextMargin) @@ -550,7 +551,7 @@ private fun EnableAuthentication( }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_tick), + imageVector = Icons.Default.Check, contentDescription = null, modifier = Modifier.padding(end = Dimens.selectableCellTextMargin) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditCustomListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditCustomListScreen.kt index e73f0885ca..30f5491c73 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditCustomListScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditCustomListScreen.kt @@ -2,6 +2,9 @@ package net.mullvad.mullvadvpn.compose.screen import androidx.compose.foundation.background import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon @@ -16,7 +19,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -180,7 +182,7 @@ private fun Actions(enabled: Boolean, onDeleteList: () -> Unit) { onClick = { showMenu = true }, modifier = Modifier.testTag(TOP_BAR_DROPDOWN_BUTTON_TEST_TAG), ) { - Icon(painter = painterResource(id = R.drawable.icon_more_vert), contentDescription = null) + Icon(imageVector = Icons.Default.MoreVert, contentDescription = null) if (showMenu) { DropdownMenu( expanded = true, @@ -191,7 +193,8 @@ private fun Actions(enabled: Boolean, onDeleteList: () -> Unit) { text = { Text(text = stringResource(id = R.string.delete_list)) }, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icon_delete), + imageVector = Icons.Default.Delete, + tint = MaterialTheme.colorScheme.onSurface, contentDescription = null, ) }, 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 e2de301c9c..87fe75b9f1 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,6 +9,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -22,7 +24,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -230,7 +231,7 @@ private fun TopBar(onBackClick: () -> Unit) { Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { IconButton(onClick = onBackClick) { Icon( - painter = painterResource(id = R.drawable.icon_back), + imageVector = Icons.AutoMirrored.Default.ArrowBack, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt index d29ed293b7..9dcd016767 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt @@ -21,6 +21,8 @@ import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Clear import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -390,7 +392,7 @@ private fun AccountDropDownItem( } IconButton(enabled = enabled, onClick = onDeleteClick) { Icon( - painter = painterResource(id = R.drawable.account_history_remove_pressed), + imageVector = Icons.Default.Clear, contentDescription = null, modifier = Modifier.size(Dimens.listIconSize), ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/PrivacyDisclaimerScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/PrivacyDisclaimerScreen.kt index 9ac8df45d0..f894eb8eba 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/PrivacyDisclaimerScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/PrivacyDisclaimerScreen.kt @@ -15,6 +15,9 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.OpenInNew +import androidx.compose.material.icons.filled.OpenInNew import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -23,7 +26,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.TextStyle @@ -180,7 +182,7 @@ private fun Content(onPrivacyPolicyLinkClicked: () -> Unit) { ) Icon( - painter = painterResource(id = R.drawable.icon_extlink), + imageVector = Icons.AutoMirrored.Filled.OpenInNew, contentDescription = null, modifier = Modifier.align(Alignment.CenterVertically) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt index bc3918bddb..e5e64c931d 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt @@ -17,6 +17,13 @@ import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.FilterList +import androidx.compose.material.icons.filled.Remove import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -37,11 +44,9 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -94,7 +99,6 @@ import net.mullvad.mullvadvpn.compose.transitions.SelectLocationTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle import net.mullvad.mullvadvpn.compose.util.RunOnKeyChange import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately -import net.mullvad.mullvadvpn.lib.model.CustomList import net.mullvad.mullvadvpn.lib.model.CustomListId import net.mullvad.mullvadvpn.lib.model.CustomListName import net.mullvad.mullvadvpn.lib.model.RelayItem @@ -485,8 +489,7 @@ private fun SelectLocationTopBar(onBackClick: () -> Unit, onFilterClick: () -> U Row(modifier = Modifier.fillMaxWidth()) { IconButton(onClick = onBackClick) { Icon( - modifier = Modifier.rotate(270f), - painter = painterResource(id = R.drawable.icon_back), + imageVector = Icons.Default.Close, tint = MaterialTheme.colorScheme.onSurface, contentDescription = null, ) @@ -500,7 +503,7 @@ private fun SelectLocationTopBar(onBackClick: () -> Unit, onFilterClick: () -> U ) IconButton(onClick = onFilterClick) { Icon( - painter = painterResource(id = R.drawable.icons_more_circle), + imageVector = Icons.Default.FilterList, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) @@ -644,7 +647,7 @@ private fun CustomListsBottomSheet( ) HorizontalDivider(color = onBackgroundColor) IconCell( - iconId = R.drawable.icon_add, + imageVector = Icons.Default.Add, title = stringResource(id = R.string.new_list), titleColor = onBackgroundColor, onClick = { @@ -654,7 +657,7 @@ private fun CustomListsBottomSheet( background = backgroundColor, ) IconCell( - iconId = R.drawable.icon_edit, + imageVector = Icons.Default.Edit, title = stringResource(id = R.string.edit_lists), titleColor = onBackgroundColor.copy( @@ -702,7 +705,7 @@ private fun LocationBottomSheet( customLists.forEach { val enabled = it.canAddLocation(item) IconCell( - iconId = null, + imageVector = null, title = if (enabled) { it.name @@ -724,7 +727,7 @@ private fun LocationBottomSheet( ) } IconCell( - iconId = R.drawable.icon_add, + imageVector = Icons.Default.Add, title = stringResource(id = R.string.new_list), titleColor = onBackgroundColor, onClick = { @@ -757,7 +760,7 @@ private fun EditCustomListBottomSheet( HeaderCell(text = customList.name, background = backgroundColor) HorizontalDivider(color = onBackgroundColor) IconCell( - iconId = R.drawable.icon_edit, + imageVector = Icons.Default.Edit, title = stringResource(id = R.string.edit_name), titleColor = onBackgroundColor, onClick = { @@ -767,7 +770,7 @@ private fun EditCustomListBottomSheet( background = backgroundColor, ) IconCell( - iconId = R.drawable.icon_add, + imageVector = Icons.Default.Add, title = stringResource(id = R.string.edit_locations), titleColor = onBackgroundColor, onClick = { @@ -777,7 +780,7 @@ private fun EditCustomListBottomSheet( background = backgroundColor, ) IconCell( - iconId = R.drawable.icon_delete, + imageVector = Icons.Default.Delete, title = stringResource(id = R.string.delete), titleColor = onBackgroundColor, onClick = { @@ -816,7 +819,7 @@ private fun CustomListEntryBottomSheet( HorizontalDivider(color = onBackgroundColor) IconCell( - iconId = R.drawable.ic_remove, + imageVector = Icons.Default.Remove, title = stringResource(id = R.string.remove_button), titleColor = onBackgroundColor, onClick = { diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt index de257f319f..7021969dfc 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt @@ -11,6 +11,10 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.Info +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.TextFields +import androidx.compose.material.icons.filled.UploadFile import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -35,7 +39,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -249,7 +252,7 @@ private fun ImportOverridesByBottomSheet( ) HorizontalDivider(color = onBackgroundColor) IconCell( - iconId = R.drawable.icon_upload_file, + imageVector = Icons.Default.UploadFile, title = stringResource(id = R.string.server_ip_overrides_import_by_file), onClick = { onImportByFile() @@ -259,7 +262,7 @@ private fun ImportOverridesByBottomSheet( modifier = Modifier.testTag(SERVER_IP_OVERRIDES_IMPORT_BY_FILE_TEST_TAG), ) IconCell( - iconId = R.drawable.icon_text_fields, + imageVector = Icons.Default.TextFields, title = stringResource(id = R.string.server_ip_overrides_import_by_text), onClick = { onImportByText() @@ -273,7 +276,7 @@ private fun ImportOverridesByBottomSheet( Row(verticalAlignment = Alignment.CenterVertically) { Icon( modifier = Modifier.padding(Dimens.mediumPadding), - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, tint = MaterialTheme.colorScheme.error, contentDescription = null, ) @@ -309,7 +312,7 @@ private fun TopBarActions( onClick = { showMenu = !showMenu }, modifier = Modifier.testTag(SERVER_IP_OVERRIDE_MORE_VERT_TEST_TAG), ) { - Icon(painterResource(id = R.drawable.icon_more_vert), contentDescription = null) + Icon(imageVector = Icons.Default.MoreVert, contentDescription = null) } DropdownMenu( modifier = Modifier.background(MaterialTheme.colorScheme.surfaceContainer), diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt index df18ba86cc..8a50649ac8 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt @@ -32,7 +32,7 @@ import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.cell.DefaultExternalLinkView import net.mullvad.mullvadvpn.compose.cell.NavigationCellBody import net.mullvad.mullvadvpn.compose.cell.NavigationComposeCell -import net.mullvad.mullvadvpn.compose.component.NavigateBackDownIconButton +import net.mullvad.mullvadvpn.compose.component.NavigateCloseIconButton import net.mullvad.mullvadvpn.compose.component.ScaffoldWithMediumTopBar import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider import net.mullvad.mullvadvpn.compose.preview.SettingsUiStatePreviewParameterProvider @@ -87,7 +87,7 @@ fun SettingsScreen( ScaffoldWithMediumTopBar( appBarTitle = stringResource(id = R.string.settings), - navigationIcon = { NavigateBackDownIconButton(onBackClick) }, + navigationIcon = { NavigateCloseIconButton(onBackClick) }, ) { modifier, lazyListState -> LazyColumn( modifier = modifier.testTag(LAZY_LIST_TEST_TAG).animateContentSize(), diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ViewLogsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ViewLogsScreen.kt index 24825aec04..a73ce7abb7 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ViewLogsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ViewLogsScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Share import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -30,7 +31,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -114,10 +114,7 @@ private fun TopBar( onClick = { clipboardHandle(state.text(), clipboardToastMessage) }, modifier = Modifier.focusProperties { down = FocusRequester.Cancel }, ) { - Icon( - painter = painterResource(id = R.drawable.icon_copy), - contentDescription = null, - ) + Icon(imageVector = Icons.Default.ContentCopy, contentDescription = null) } IconButton( onClick = { scope.launch { shareText(context, state.text()) } }, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt index b5f7ae9752..5146d65bb0 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt @@ -11,6 +11,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -23,7 +25,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -320,7 +321,7 @@ fun DeviceNameRow(deviceName: String?, navigateToDeviceInfoDialog: () -> Unit) { onClick = navigateToDeviceInfoDialog, ) { Icon( - painter = painterResource(id = R.drawable.icon_info), + imageVector = Icons.Default.Info, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt index 76007f7ae8..05ec572194 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt @@ -5,6 +5,8 @@ import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -12,11 +14,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalFocusManager -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType -import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.Dimens @Composable @@ -71,7 +71,7 @@ private fun ErrorSupportingText(text: String) { modifier = Modifier.padding(top = Dimens.miniPadding), ) { Icon( - painter = painterResource(id = R.drawable.icon_alert), + imageVector = Icons.Default.Warning, contentDescription = null, modifier = Modifier.size(Dimens.smallIconSize), tint = MaterialTheme.colorScheme.error, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/SearchTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/SearchTextField.kt index d418add080..f8c45bd6b0 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/SearchTextField.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/SearchTextField.kt @@ -7,6 +7,9 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.BasicTextField +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Clear +import androidx.compose.material.icons.filled.Search import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -21,7 +24,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview @@ -79,7 +81,7 @@ fun SearchTextField( visualTransformation = visualTransformation, leadingIcon = { Icon( - painter = painterResource(id = R.drawable.icons_search), + imageVector = Icons.Default.Search, contentDescription = null, modifier = Modifier.size( @@ -100,7 +102,7 @@ fun SearchTextField( searchTerm = "" onValueChange.invoke(searchTerm) }, - painter = painterResource(id = R.drawable.icon_close), + imageVector = Icons.Default.Clear, tint = textColor, contentDescription = null, ) diff --git a/android/app/src/main/res/drawable/icon_reload.xml b/android/app/src/main/res/drawable/icon_reload.xml deleted file mode 100644 index 1ab457eff5..0000000000 --- a/android/app/src/main/res/drawable/icon_reload.xml +++ /dev/null @@ -1,14 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <group> - <clip-path - android:pathData="M0,0h24v24h-24z"/> - <path - android:pathData="M6,12C6,8.686 8.686,6 12,6C13.776,6 15.373,6.771 16.472,8H15C14.448,8 14,8.448 14,9C14,9.552 14.448,10 15,10H19C19.552,10 20,9.552 20,9V5C20,4.448 19.552,4 19,4C18.448,4 18,4.448 18,5V6.709C16.535,5.049 14.39,4 12,4C7.582,4 4,7.582 4,12C4,16.418 7.582,20 12,20C14.13,20 16.067,19.166 17.5,17.809C17.901,17.43 17.918,16.797 17.539,16.396C17.159,15.995 16.526,15.977 16.125,16.357C15.049,17.376 13.598,18 12,18C8.686,18 6,15.314 6,12Z" - android:fillColor="#ffffff" - android:fillType="evenOdd"/> - </group> -</vector> |
